64 Commits

Author SHA1 Message Date
Sravan Balaji
3016fd8d5b Clean Up Personal Page
- Add hardware section to personal page
- Remove video games, podcasts, music, etc.
2025-02-22 22:00:36 -05:00
Sravan Balaji
6beea310df Update devenv packages 2025-02-18 21:43:01 -05:00
Sravan Balaji
6f506c4273 Update gentoo content 2025-02-18 21:42:44 -05:00
Sravan Balaji
32444ba72a Add collection for hardware with oryp7 and add gentoo to software 2025-02-15 11:38:59 -05:00
Sravan Balaji
6fd5369daf Finish migrating software to markdown 2025-02-07 22:47:53 -05:00
Sravan Balaji
2d6be05eae Update packages 2025-02-07 20:14:55 -05:00
Sravan Balaji
a73d30d52f Add Software Engineer II promotion 2025-02-07 19:52:27 -05:00
Sravan Balaji
c08adab41c Add npm update to justfile's update command 2025-01-04 22:21:52 -05:00
Sravan Balaji
c8cf9dd738 Format eleventy config with prettier 2025-01-04 22:20:12 -05:00
Sravan Balaji
041164f1d2 Setup project with devenv instead of docker 2025-01-04 22:20:12 -05:00
Sravan Balaji
660c328c86 Format dark mode switch script 2025-01-04 18:39:43 -05:00
Sravan Balaji
cd4e714cb6 Start migrating software section to use templates 2025-01-04 14:36:32 -05:00
Sravan Balaji
df2d33e32a Minor fixes to portfolio page 2025-01-02 17:38:30 -05:00
Sravan Balaji
87ae00354d Add notable courses for umich degrees 2025-01-02 17:26:39 -05:00
Sravan Balaji
668a89a276 Make portfolio + highlights a re-usable macro
- Use more generic metadata key names for portfolio
2025-01-02 17:06:27 -05:00
Sravan Balaji
f612212911 Add education section entries 2025-01-02 16:35:18 -05:00
Sravan Balaji
914636e5fe Change cards to accordion in bootstrap 5 2025-01-02 11:29:09 -05:00
Sravan Balaji
3431132901 Add dropdown toggles for navigation bar
- Fix styling for nav-link.active
2025-01-02 10:42:40 -05:00
Sravan Balaji
1798624bce Create macro for section heading
- Update layouts to use new macro
- Reformat some files
2025-01-02 10:25:18 -05:00
Sravan Balaji
40028ed830 Split portfolio template into partial sections 2025-01-02 10:10:57 -05:00
Sravan Balaji
6fe01ca1f8 Fix duplicate bootstrap causing strange issues 2025-01-02 10:07:04 -05:00
Sravan Balaji
a72c989a7d Add editorconfig and re-format navigation.html 2025-01-02 09:49:37 -05:00
Sravan Balaji
dd4671b7b8 Update navigation bar to work with bootstrap 5 2025-01-02 00:16:57 -05:00
Sravan Balaji
46db1fd2e0 Update dependencies and use new dark mode switch from bootstrap 2025-01-01 23:51:43 -05:00
Sravan Balaji
43157146e8 Migrate professional experience to templates 2025-01-01 23:14:13 -05:00
Sravan Balaji
c4eaa3d82b Update about page to use templates 2025-01-01 17:50:50 -05:00
Sravan Balaji
c37990b434 Update profile picture 2025-01-01 17:12:43 -05:00
Sravan Balaji
be269cf9b5 Fix filepath to style 2025-01-01 17:05:26 -05:00
Sravan Balaji
b21d04854e Reorganization and Data Files
- Use more template / partial features of 11ty by splitting
  up sections of code into separate files
- Change output directory to "dist"
- Use njk as the template engine
- Add data file for navigation links and site metadata
2025-01-01 16:28:21 -05:00
Sravan Balaji
2ebfb8ef48 Move common files into base template
- Copy assets and scripts folder to output
- Move contents of common files into the base template's HTML
- Fix link syntax on index.md
2025-01-01 13:50:36 -05:00
Sravan Balaji
fff17e62a1 Cleanup justfile and dockerfile
- Add a gitignore for output directory
- Make justfile use multi-lines for readability
- Remove COPY step from Dockerfile
2025-01-01 13:26:23 -05:00
Sravan Balaji
6808d71ca5 Basic 11ty config and index page with base layout 2024-12-31 13:26:07 -05:00
Sravan Balaji
91528d99a4 Initial migration to eleventy
- Add dockerfile to run eleventy from
- Add justfile to save useful commands
2024-12-31 12:40:10 -05:00
Sravan Balaji
ceea34cb51 Replace Google Drive PDF Viewer with Link to GitHub
- Google drive PDF viewer appears to be broken or
  unreliable now, so switched to a simple link
  to the GitHub repo
2024-04-19 11:24:48 -04:00
Sravan Balaji
b94cfbdf76 Change top level index redirection to relative path 2023-08-25 15:27:55 -04:00
Sravan Balaji
255d6b1920 April 2023 Update
- Update personal page with new devices, remove deprecated VS Code extensions, replace deprecated apps, add mechanical keyboard
- Update portfolio page with new jobs and move education to end
- Update images
2023-04-08 11:11:07 -04:00
Sravan Balaji
7fbedea388 Update Oryx Pro 7 Review
- Remove details about freezing / crashing and replace
  with solutions I found to resolve them
2022-07-01 22:16:18 -04:00
Sravan Balaji
f044b27a34 Update Windows to Linux Blog Post
- Add "Are We Anti-Cheat Yet?" website
- Update that oryx pro issues were resolved
  through suggestions on ArchWiki
2022-07-01 21:13:26 -04:00
Sravan Balaji
b10995bbef Ferdium and YouTube Vanced Updates
- Remove executable permission from logo-spotify.png
- Replace Ferdi with Ferdium in software section
  of personal page
- Replace ferdi logo with ferdium
- Update YouTube Vanced info with current status
  of project
2022-06-02 19:35:17 -04:00
Sravan Balaji
01298d0249 Associate Autonomous Systems Engineer at MITRE Update 2022-01-25 10:49:36 -05:00
Sravan Balaji
87f653243a Notion Enhancer Update
- Update link to notion enhancer website under notion
- Add notion-enhancer chrome extension link under vivaldi
2021-12-31 08:40:48 -05:00
Sravan Balaji
d8cc6f8ef6 End of Fall 2021 Semester Updates
- Add completion of Master's in Robotics to about
  and portfolio page and update GPA
- Add Autonomous Systems Engineer position to
  portfolio
- Add start/end days to all positions in case
  I need them for job applications
- Fix closing div position in portfolio page
- Add F1 to personal interests
- Remove Bootleg Football podcast
- Remove podcast authors from podcast title
- Update Football Weekly podcast description
- Add Missed Apex F1 podcast
2021-12-25 11:29:40 -05:00
Sravan Balaji
dbba94a679 Update Linux Related Blog Posts
- Update screenshot of dwm-flexipatch setup
- Add solution I found for system freezing on oryp7
- Replace "customizability" with "ArchWiki" in reasons for using Arch
2021-12-07 14:49:58 -05:00
Sravan Balaji
2973477f69 Add Bitwarden & Lutris to Software
- Re-order platforms in software section
  (Web, Linux, Windows, macOS, Android, iOS)
- Add list of browser extension I use for Vivaldi
- Add bitwarden and logo to software section
- Add lutris and logo to software section
2021-09-26 17:51:51 -04:00
Sravan Balaji
942040d68b Update Video Games Section
- Remove steam profile from video games section
- Add some paragraph text under favorite games section
- Add link to my Grouvee video game collection profile
- Change favorite game list to 3 columns style
- Add line breaks between platform images and list
- Update favorite video game list
2021-09-26 16:53:44 -04:00
Sravan Balaji
bc54bf81f7 Emacs & Update Video Games and Podcasts Lists
- Add emacs to software list
- Update VS Code description
- Update favorite video games list and order alphabetically
- Update favorite podcasts list and order alphabetically
- Update football weekly podcast image
2021-09-17 09:54:51 -04:00
Sravan Balaji
bcca7464c3 MITRE Internship Description & Bio Update
- Prettier (emacs) formatting of html files
- Update bio for post-summer 2021
- Add full-time job at MITRE for 2022 in bio
- Change Fall 2021 semester to current in portfolio
- Add description of MITRE Graduate Navigation Internship to portfolio
2021-09-16 22:35:04 -04:00
Sravan Balaji
f9f6b9331c Small blog post updates
- Added some more links and fleshed out wording
- Fixed some consistency issues
2021-08-27 12:19:57 -04:00
Sravan Balaji
94c8db5975 New Blog Posts & Hardware Updates
- Add docker whale image locally
- Add oryx pro review
- Add blog post on linux journey
- Update VS Code Extensions
- Replace Brave with Vivaldi
- Replace desktop and HP Spectre with oryx pro in hardware
- Update Surface Go and Sony headphones sections of hardware
- Add and delete some images
2021-08-26 16:59:30 -04:00
Sravan Balaji
fdf342e205 End of Winter 2021 Updates
- Update bio page with info about summer 2021 internship
- Update portfolio page with Winter 2021 GPA, Fall 2021 classes, and summer 2021 internship
2021-05-04 14:00:33 -04:00
Sravan Balaji
c78fb4b0af Signal & Winter 2021 Course Update
- Add Signal to software section
- Update Winter 2021 course list
2021-01-18 20:30:36 -05:00
Sravan Balaji
4b02f3ef81 NA 568 Grader Position Update
- Add NA 568 grader position to bio
2021-01-15 13:37:42 -05:00
Sravan Balaji
bacf147758 Small Changes & Fixes
- Add line break between captions and images in about page
- Expand welcome section of index page
- Fixe YouTube vanced link
2020-12-21 12:30:52 -05:00
Sravan Balaji
be4b6857fa End of Fall 2020 Updates
- Update bio to reference completed Bachelor's degrees
- Update GPA for undergrad
- Add courses for Winter 2021 semester
2020-12-20 15:37:08 -05:00
Sravan Balaji
13919c27e5 Summer 2021 Internship
- Update bio to include summer 2021 internship at MITRE
2020-11-23 11:25:57 -05:00
Sravan Balaji
b5d59fec5e Robotics MS Update
- Update about page to include admission to Robotics MS
- Update academic/professional interests in about page
- Change semester order to new->old in portfolio page
- Add M.S. in Robotics to education section
- Add UMICH robotics logo
2020-11-13 12:06:21 -05:00
Sravan Balaji
53f23794d4 Windows Past Tense, Update Images, Update Software
- Update email, github, linkedin, and color palette images
- Add YouTube, color palette, and spotify images
- Add link to YouTube channel in about page
- Update references to Windows 10 to past tense
- Update coolors color scheme to use new link color
- Add notion-enhancer to software section
- Add more info to pocket casts section
- Add spotify and spicetify to software section
- Add speaker issues to HP Spectre x360 section
2020-11-02 10:31:49 -05:00
Sravan Balaji
c032f1ded8 Remove Chocolatey
- Remove references to chocolatey in docker blog post
2020-10-24 19:43:35 -04:00
Sravan Balaji
46f7e466ec Personal Page Updates
- Remove chocolatey and references to choco install
- Update VSCode extensions and theme
- Replace Clatter with Ferdi
- Remove windows specific software
- Replace edge with brave
- Fix wording in hardware section
- Update steam profile
- Update favorite game list
- Update podcasts
- Add logos for new sections and remove old ones
2020-10-24 19:42:02 -04:00
Sravan Balaji
3e1d17c406 Style Fixes & highlight.js
- Add highlight.js for code blocks
- Specify docker code block language
- Add dracula theme to documentation
- Update color palette to work better in light mode
- Add extra colors to styles.css
- Style label, links, code, horizontal rule, and accordion
2020-10-24 18:48:12 -04:00
Sravan Balaji
a2d4b78a37 Dracula Dark Theme
- Clean up dark mode javascript
- Change label with color mode
- Change dark mode colors to dracula style
- Change document load to ready so CSS is applied faster
2020-10-24 17:57:09 -04:00
Sravan Balaji
0ac764778d Dark Mode
- Add dark mode toggle button to navbar
- Parameterize colors in styles.css
- Add dark mode button javascript
2020-10-24 17:15:55 -04:00
Sravan Balaji
0eab7a5df1 Documentation Update
- Add paragraph on namecheap
- Split text into separate paragraphs
- Add paragraph on netlify web hosting
2020-10-24 16:17:16 -04:00
Sravan Balaji
e31b13191b Updated Content, Single Stylesheet, Whitespace Changes
- Update whitespace formatting with prettier extension
- Reorganize files under src folder
- Move html files out of web_pages folder
- Move stylesheet into style folder
- Change links from old repo to new repo
- Clean-up some files
- Move all in-line styles to styles.css
2020-10-24 15:00:43 -04:00
191 changed files with 5460 additions and 2166 deletions

25
.editorconfig Normal file
View File

@@ -0,0 +1,25 @@
# EditorConfig is awesome: https://editorconfig.org
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = false
trim_trailing_whitespace = true
# JSON Files
[*.{json}]
indent_size = 2
# Markdown Files
[*.{md,mdx}]
trim_trailing_whitespace = false
# Web Files
[*.{html,js,css}]
indent_size = 2

64
.eleventy.js Normal file
View File

@@ -0,0 +1,64 @@
module.exports = function (eleventyConfig) {
eleventyConfig.addPassthroughCopy("./src/style.css");
eleventyConfig.addPassthroughCopy("./src/assets");
eleventyConfig.addPassthroughCopy("./src/scripts");
eleventyConfig.addFilter(
"findAssociation",
function (entries, associatedEntry) {
return entries.filter(function (entry) {
return entry.data.associatedEntry == associatedEntry;
});
},
);
eleventyConfig.addCollection("professionalExperience", (collection) => {
return collection
.getFilteredByGlob("./src/portfolio/professionalExperience/*.md")
.sort((a, b) =>
Number(a.data.displayOrder) < Number(b.data.displayOrder) ? 1 : -1,
);
});
eleventyConfig.addCollection("education", (collection) => {
return collection
.getFilteredByGlob("./src/portfolio/education/*.md")
.sort((a, b) =>
Number(a.data.displayOrder) < Number(b.data.displayOrder) ? 1 : -1,
);
});
eleventyConfig.addCollection("highlights", (collection) => {
return collection
.getFilteredByGlob("./src/portfolio/highlights/*.md")
.sort((a, b) =>
Number(a.data.displayOrder) > Number(b.data.displayOrder) ? 1 : -1,
);
});
eleventyConfig.addCollection("software", (collection) => {
return collection
.getFilteredByGlob("./src/personal/software/*.md")
.sort((a, b) =>
Number(a.data.displayOrder) > Number(b.data.displayOrder) ? 1 : -1,
);
});
eleventyConfig.addCollection("hardware", (collection) => {
return collection
.getFilteredByGlob("./src/personal/hardware/*.md")
.sort((a, b) =>
Number(a.data.displayOrder) > Number(b.data.displayOrder) ? 1 : -1,
);
});
return {
markdownTemplateEngine: "njk",
dataTemplateEngine: "njk",
htmlTemplateEngine: "njk",
dir: {
input: "src",
output: "dist",
},
};
};

3
.envrc Normal file
View File

@@ -0,0 +1,3 @@
source_url "https://raw.githubusercontent.com/cachix/devenv/82c0147677e510b247d8b9165c54f73d32dfd899/direnvrc" "sha256-7u4iDd1nZpxL4tCzmPG0dQgC5V+/44Ba+tHkPob1v2k="
use devenv

15
.gitignore vendored Normal file
View File

@@ -0,0 +1,15 @@
# eleventy output
dist
# Devenv
.devenv*
devenv.local.nix
# direnv
.direnv
# pre-commit
.pre-commit-config.yaml
# NodeJS
node_modules/

View File

@@ -4,8 +4,8 @@ This is the repository for my personal website, which can be found at [sravanbal
## Development Progress ## Development Progress
You can follow my current development plans for this website on my [GitHub project](https://github.com/balajsra/balajsra.github.io/projects/1). You can follow the development of this website on my [GitHub project](https://github.com/balajsra/sravanbalaji.com).
## Feedback & Suggestions ## Feedback & Suggestions
If you find any issues or have suggestions for ways to improve my website, please submit a bug or enhancement request on [GitHub](https://github.com/balajsra/balajsra.github.io/issues). If you find any issues or have suggestions for ways to improve my website, please submit a bug or enhancement request on [GitHub](https://github.com/balajsra/sravanbalaji.com/issues).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

View File

@@ -1,179 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<script language="javascript" type="text/javascript" src="../common/header.txt"></script>
<title>Docker</title>
<style>
img {
max-height: 500px;
margin: auto;
display: block;
}
</style>
</head>
<script language="javascript" type="text/javascript" src="../common/navbar.txt"></script>
<body>
<div class="container-fluid px-md-6">
<div class="row align-items-center">
<div class="col-md-2">
<!-- Nothing -->
</div>
<div class="col-md-8">
<!-- Title -->
<h1>Getting Started with Docker</h1>
<!-- Author & Date/Time -->
<p class="lead">
Updated on March 18, 2020
</p>
<!-- Preview Image -->
<img class="img-fluid rounded" src="https://cdn.vox-cdn.com/thumbor/fbrTLtxuP2D29o8VJUaE-u3NKfU=/0x0:792x613/1200x800/filters:focal(300x237:426x363)/cdn.vox-cdn.com/uploads/chorus_image/image/59850273/Docker_logo_011.0.png" alt="">
<hr>
<!-- Post Content -->
<h2><a name="introduction">Introduction</a></h2>
<p>
Throughout my college career in computer science, I have found the need to develop applications that will be deployed in a Linux environment. As a windows user, I have usually turned to a couple of different options: virtual machines, <a href="https://docs.microsoft.com/en-us/windows/wsl/about" target="_blank">Windows Subsystem for Linux</a>, or <a href="https://www.cygwin.com" target="_blank">Cygwin</a>. Recently, I discovered an alternative method for building and testing Linux apps that is especially useful for collaboration and deployment. Docker allows you to package an OS and all the necessary dependencies into a <b>docker image</b>. You can then spin up an instance of this image called a <b>docker container</b> in which you can run your source code. Jake Wright's video was incredibly helpful in my understanding of what docker is, how it's different from virtual machines, and how to use it.
</p>
<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src="https://www.youtube-nocookie.com/embed/YFl2mCHdv24" allowfullscreen></iframe>
</div>
<hr>
<h2><a name="installing_docker">Installing Docker</a></h2>
<p>
Depending on your host machine's operating system, you will install one of the following Docker products. If you have macOS or Windows, your first option should be Docker Desktop. Check if you meet the system requirements. If you do not, Docker Toolbox is the legacy option that uses Oracle VirtualBox rather than Hyper-V or HyperKit for virtualization. I am using a computer with Windows 10 Home, so I use Docker Toolbox for Windows. This blog post will discuss some solutions to edge-case issues with Docker Toolbox that Docker Desktop users will hopefully not have to deal with.
</p>
<ul>
<li>macOS</li>
<ul>
<li><a href="https://docs.docker.com/docker-for-mac/install/" target="_blank">Docker Desktop for Mac</a></li>
<li><a href="https://docs.docker.com/toolbox/toolbox_install_mac/" target="_blank">Docker Toolbox for macOS</a> (Legacy)</li>
</ul>
<li>Windows</li>
<ul>
<li><a href="https://docs.docker.com/docker-for-windows/install/" target="_blank">Docker Desktop for Windows</a></li>
<ul>
<li><a href="https://chocolatey.org/packages/docker-desktop/2.2.0.4" target="_blank">Chocolatey</a>: <code>choco install docker-desktop</code></li>
</ul>
<li><a href="https://docs.docker.com/toolbox/toolbox_install_windows/" target="_blank">Docker Toolbox for Windows</a> (Legacy)</li>
<ul>
<li><a href="https://chocolatey.org/packages/docker-toolbox" target="_blank">Chocolatey</a>: <code>choco install docker-toolbox</code></li>
</ul>
</ul>
<li>Linux</li>
<ul>
<li><a href="https://docs.docker.com/install/linux/docker-ce/centos/" target="_blank">Docker Engine - Community for CentOS</a></li>
<li><a href="https://docs.docker.com/install/linux/docker-ce/debian/" target="_blank">Docker Engine - Community for Debian</a></li>
<li><a href="https://docs.docker.com/install/linux/docker-ce/fedora/" target="_blank">Docker Engine - Community for Fedora</a></li>
<li><a href="https://docs.docker.com/install/linux/docker-ce/ubuntu/" target="_blank">Docker Engine - Community for Ubuntu</a></li>
</ul>
</ul>
<h3>Docker Toolbox & WSL</h3>
<p>
As mentioned previously, I am using Docker Toolbox since Windows 10 Home does not support Hyper-V for virtualization with Docker Desktop. You can run docker toolbox in a command prompt or powershell terminal, but I personally prefer to use WSL because I am more familiar with bash terminal commands. If you are interested in this setup, continue reading this section. Otherwise, you can skip ahead.
</p>
<h4>Installing WSL</h4>
<p>
The default way to install WSL is through the <a href="https://docs.microsoft.com/en-us/windows/wsl/about" target="_blank">Microsoft Store</a>. This will install WSL on your system drive (e.g. C:\). If you are like me and don't want to install it on your system drive, follow the instructions <a href="https://kontext.tech/column/tools/308/how-to-install-windows-subsystem-for-linux-on-a-non-c-drive" target="_blank">here</a>.
</p>
<h4>Setting Up Docker Toolbox with WSL</h4>
<p>
After installing WSL, follow the instructions in <a href="https://medium.com/@joaoh82/setting-up-docker-toolbox-for-windows-home-10-and-wsl-to-work-perfectly-2fd34ed41d51" target="_blank">Setting Up Docker Toolbox for Windows Home 10 and WSL to Work Perfectly!</a> starting with <b>Install Docker and Docker Compose within WSL</b>. As you will have seen near the end of that post, there are some extra steps needed to ensure that volume mounts work. After setting <code>root = /</code>, you will need to configure shared folders for the <code>default</code> docker machine in VirtualBox.
</p>
<h4>Shared Folder Configuration for Volume Mounting</h4>
<p>
I configured all of my drives as shared folders so I can mount any folders on my host machine to any docker containers I run. In your WSL terminal, run <code>docker-machine.exe start</code> to start the <code>default</code> docker machine created by the Docker Quickstart Terminal. After your docker machine is running, open the shared folder settings as shown in <a href="https://medium.com/@Charles_Stover/fixing-volumes-in-docker-toolbox-4ad5ace0e572" target="_blank">Fixing Volumes in Docker Toolbox</a>. The image below shows how <code>C:\</code> on my host computer is mounted at <code>/</code> in folder <code>c</code> on my docker machine such that <code>C:\</code> maps to <code>/c</code>. Make sure you have enabled <code>Auto-mount</code> and <code>Make Permanent</code>. Click <b>OK</b> to save all settings, then go back to the WSL terminal and run <code>docker-machine.exe restart default</code>. Now your docker machine should be properly configured to allow volume mounting.
</p>
<img class="img-fluid mx-auto d-block" src="../assets/blog_posts/Docker/virtual_box_shared_folder.jpg">
<h4>Increase Docker Machine Resources</h4>
<p>
One issue I ran into with the default settings for the <code>default</code> docker machine is the amount of RAM allocated to it. I attempted to build the <a href="https://github.com/borglab/gtsam" target="_blank">GTSAM</a> library inside a docker container and ran into an <i>internal compiler error: Killed (program cc1plus)</i>. As mentioned <a href="https://github.com/docker/for-win/issues/403" target="_blank">here</a>, the solution is to increase the RAM allocated to the docker machine in VirtualBox. In the WSL terminal, run <code>docker-machine.exe stop</code> to shutdown the docker machine. When this is complete, right click on the <code>default</code> docker machine in VirtualBox and open <b>Settings</b>. In the <b>System</b> tab, increase <i>Base Memory</i>. Similar to virtual machines, I would not recommend allocating more than half of your system's RAM. For example, my computer has 16 GB of RAM, so I would only recommend allocating up to 8 GB of RAM to the docker machine. You can look through the other options, such as number of allocated processor cores, as well if you wish.
</p>
<hr>
<h2><a name="building_images_and_running_containers">Building Images & Running Containers</a></h2>
<p>
To learn about Dockerfiles and a basic example, check out the video in the <a href="#introduction">introduction</a>. To learn about Docker Compose, check out Jake Wright's video on the topic.
</p>
<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src="https://www.youtube-nocookie.com/embed/Qw9zlE3t8Ko" allowfullscreen></iframe>
</div>
<hr>
<h2><a name="x_forwarding">X Forwarding for GUI Applications</a></h2>
<p>
In a virtual machine, you can easily run GUI applications such as a web browser, text editor, etc. In a docker container, the process is a little bit different. You will need to download an X Server such as <a href="https://sourceforge.net/projects/vcxsrv/" target="_blank">VcXsrv Windows X Server</a>. If you are using <a href="https://chocolatey.org/packages/vcxsrv" target="_blank">chocolatey</a>, you can run <code>choco install vcxsrv</code>.
</p>
<p>
<a href="https://dev.to/darksmile92/run-gui-app-in-linux-docker-container-on-windows-host-4kde" target="_blank">Run GUI app in linux docker container on windows host</a> provides a great explanation of why you would want to do this and how to run your docker container. The post discusses how to set your IP address as the <code>DISPLAY</code> environment variable that is passed to docker via the <code>-e DISPLAY=$DISPLAY</code> command line argument. You can alternatively pass your IP address as an environment variable in your docker compose file. This is shown in <a href="https://github.com/MAAV-Software/ros-tutorial" target="_blank">MAAV's ROS Tutorial</a> (reproduced below). The main settings to look at below are <code>environment</code> and <code>network_mode</code>. Set the <code>DISPLAY</code> environment variable to <code>[ip_address]:0.0</code> and set <code>network_mode: "host"</code>.
</p>
<pre>
<code>
# docker-compose.yml
version: "2"
services:
ros-demo:
image: ros-demo
privileged: true
volumes:
# Mount the current directory do everything in /tutorial within docker
- .:/tutorial:rw
environment:
- DISPLAY=1.1.1.1:0.0 # Change 1.1.1.1 to your IP Address
network_mode: "host"
container_name: ros-demo
command: "/bin/bash --init-file scripts/source-ros.sh" #source ros automatically
</code>
</pre>
<hr>
<h2><a name="helpful_commands">Helpful Docker Commands</a></h2>
<p>
<ul>
<li>System Prune to clear space on Docker Machine</li>
<ul>
<li><code>docker system prune --volumes</code></li>
</ul>
</ul>
</p>
<hr>
<h2><a name="conclusion">Conclusion</a></h2>
<p>
Hopefully by this point, you have a better understanding of what docker is, why you might want to use it, and how to get a docker machine setup so you can build and run docker containers. If you have any questions or suggestions for improvement, feel free to <a href="../web_pages/about.html#contact_me">contact me</a>.
</p>
<hr>
</div>
<div class="col-md-2">
<!-- Nothing -->
</div>
</div>
</div>
</body>
<footer>
<script language="javascript" type="text/javascript" src="../common/footer.txt"></script>
</footer>
</html>

View File

@@ -1,9 +0,0 @@
<div class="container-fluid px-md-6">
<div class="row align-items-center">
<div class="col-md-12">
<small>
Copyright &copy; 2019 Sravan Balaji under <a rel="license" href="https://docs.google.com/gview?url=https://github.com/balajsra/balajsra.github.io/raw/master/LICENSE" target="_blank">MIT License</a>
</small>
</div>
</div>
</div>

View File

@@ -1 +0,0 @@
document.write('<div class="container-fluid px-md-6"> <div class="row align-items-center"> <div class="col-md-12"> <small> Copyright &copy; 2019 Sravan Balaji under <a rel="license" href="https://docs.google.com/gview?url=https://github.com/balajsra/balajsra.github.io/raw/master/LICENSE" target="_blank">MIT License</a> </small> </div> </div> </div>')

View File

@@ -1,22 +0,0 @@
<!--Required meta tags-->
<meta charset="utf-8">
<meta name="author" content="Sravan Balaji">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
<!-- Stylesheet -->
<link rel="stylesheet" type="text/css" href="../common/styles.css"/>
<!-- Favicon -->
<link rel="icon" href="../assets/branding/favicon.ico" type="image/x-icon"/>

View File

@@ -1 +0,0 @@
document.write('<!--Required meta tags--> <meta charset="utf-8"> <meta name="author" content="Sravan Balaji"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"> <!-- jQuery library --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <!-- Popper JS --> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script> <!-- Latest compiled JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script> <!-- Stylesheet --> <link rel="stylesheet" type="text/css" href="../common/styles.css"/> <!-- Favicon --> <link rel="icon" href="../assets/branding/favicon.ico" type="image/x-icon"/>')

View File

@@ -1,111 +0,0 @@
<nav class="navbar my-nav navbar-expand-md fixed-top">
<!-- Brand -->
<a class="navbar-brand" href="../web_pages/index.html">
<img src="../assets/branding/logo.png" alt="Icon" width="30px" height="30px" class="d-inline-block align-top">
<img src="../assets/branding/name.png" alt="Name" height="30px" class="d-inline-block align-center">
</a>
<!-- Toggler/collapsibe Button -->
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Navbar links -->
<div class="collapse navbar-collapse" id="collapsibleNavbar">
<ul class="navbar-nav">
<!-- About -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="../web_pages/about.html" id="navbardrop" data-toggle="dropdown">
About
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="../web_pages/about.html#bio">
Bio
</a>
<a class="dropdown-item" href="../web_pages/about.html#contact_me">
Contact Me
</a>
</div>
</li>
<!-- Portfolio -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="../web_pages/portfolio.html" id="navbardrop" data-toggle="dropdown">
Portfolio
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="../web_pages/portfolio.html#resume">
Resume
</a>
<a class="dropdown-item" href="../web_pages/portfolio.html#education">
Education
</a>
<a class="dropdown-item" href="../web_pages/portfolio.html#professional_experience">
Professional Experience
</a>
<!-- <a class="dropdown-item" href="../web_pages/portfolio.html#research">
Research
</a>
<a class="dropdown-item" href="../web_pages/portfolio.html#projects">
Projects
</a> -->
</div>
</li>
<!-- Personal -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="../web_pages/personal.html" id="navbardrop" data-toggle="dropdown">
Personal
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="../web_pages/personal.html#software">
Software
</a>
<a class="dropdown-item" href="../web_pages/personal.html#hardware">
Hardware
</a>
<a class="dropdown-item" href="../web_pages/personal.html#video_games">
Video Games
</a>
<a class="dropdown-item" href="../web_pages/personal.html#podcasts">
Podcasts
</a>
<a class="dropdown-item" href="../web_pages/personal.html#music">
Music
</a>
</div>
</li>
<!-- Blog -->
<li class="nav-item">
<a class="nav-link" href="../web_pages/blog.html">
Blog
</a>
</li>
<!-- Documentation -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="../web_pages/documentation.html" id="navbardrop" data-toggle="dropdown">
Documentation
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="../web_pages/documentation.html#introduction">
Introduction
</a>
<a class="dropdown-item" href="../web_pages/documentation.html#website_hosting">
Website Hosting
</a>
<a class="dropdown-item" href="../web_pages/documentation.html#web_design">
Web Design
</a>
<a class="dropdown-item" href="../web_pages/documentation.html#aesthetics">
Aesthetics
</a>
<a class="dropdown-item" href="../web_pages/documentation.html#inspiration">
Inspiration
</a>
</div>
</li>
</ul>
</div>
</nav>

View File

@@ -1 +0,0 @@
document.write('<nav class="navbar my-nav navbar-expand-md fixed-top"> <!-- Brand --> <a class="navbar-brand" href="../web_pages/index.html"> <img src="../assets/branding/logo.png" alt="Icon" width="30px" height="30px" class="d-inline-block align-top"> <img src="../assets/branding/name.png" alt="Name" height="30px" class="d-inline-block align-center"> </a> <!-- Toggler/collapsibe Button --> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar"> <span class="navbar-toggler-icon"></span> </button> <!-- Navbar links --> <div class="collapse navbar-collapse" id="collapsibleNavbar"> <ul class="navbar-nav"> <!-- About --> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="../web_pages/about.html" id="navbardrop" data-toggle="dropdown"> About </a> <div class="dropdown-menu"> <a class="dropdown-item" href="../web_pages/about.html#bio"> Bio </a> <a class="dropdown-item" href="../web_pages/about.html#contact_me"> Contact Me </a> </div> </li> <!-- Portfolio --> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="../web_pages/portfolio.html" id="navbardrop" data-toggle="dropdown"> Portfolio </a> <div class="dropdown-menu"> <a class="dropdown-item" href="../web_pages/portfolio.html#resume"> Resume </a> <a class="dropdown-item" href="../web_pages/portfolio.html#education"> Education </a> <a class="dropdown-item" href="../web_pages/portfolio.html#professional_experience"> Professional Experience </a> <!-- <a class="dropdown-item" href="../web_pages/portfolio.html#research"> Research </a> <a class="dropdown-item" href="../web_pages/portfolio.html#projects"> Projects </a> --> </div> </li> <!-- Personal --> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="../web_pages/personal.html" id="navbardrop" data-toggle="dropdown"> Personal </a> <div class="dropdown-menu"> <a class="dropdown-item" href="../web_pages/personal.html#software"> Software </a> <a class="dropdown-item" href="../web_pages/personal.html#hardware"> Hardware </a> <a class="dropdown-item" href="../web_pages/personal.html#video_games"> Video Games </a> <a class="dropdown-item" href="../web_pages/personal.html#podcasts"> Podcasts </a> <a class="dropdown-item" href="../web_pages/personal.html#music"> Music </a> </div> </li> <!-- Blog --> <li class="nav-item"> <a class="nav-link" href="../web_pages/blog.html"> Blog </a> </li> <!-- Documentation --> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="../web_pages/documentation.html" id="navbardrop" data-toggle="dropdown"> Documentation </a> <div class="dropdown-menu"> <a class="dropdown-item" href="../web_pages/documentation.html#introduction"> Introduction </a> <a class="dropdown-item" href="../web_pages/documentation.html#website_hosting"> Website Hosting </a> <a class="dropdown-item" href="../web_pages/documentation.html#web_design"> Web Design </a> <a class="dropdown-item" href="../web_pages/documentation.html#aesthetics"> Aesthetics </a> <a class="dropdown-item" href="../web_pages/documentation.html#inspiration"> Inspiration </a> </div> </li> </ul> </div> </nav>')

View File

@@ -1,67 +0,0 @@
/***********
* General *
***********/
body {
background-color: #E8EEF2;
padding-top: 65px;
font-family: Arial, Verdana, Tahoma, sans-serif;
}
/****************
* Main Content *
****************/
.my-nav {
background: #00274C;
font-size: 18px;
}
.my-nav .nav-link {
color: #FFCB05;
}
.my-nav .nav-link:hover {
color: #30C5FF;
}
.my-nav .navbar-toggler-icon {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 39, 76, 1)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
}
.my-nav .navbar-toggler {
background: #FFCB05; /* pick your color */
}
.container-fluid {
color: #000000;
font-size: 18px;
}
.container-fluid h1 {
padding: 10px 10px;
background: #00274C;
color: #FFCB05;
}
.row {
/* border: 1px solid red; */
margin-bottom: 10px;
}
/* Add an invisible target before
anchor links so navbar doesn't
block content */
:target::before {
content: "";
display: block;
margin-top: -80px;
height: 80px;
width: 1px;
}
/* Side Padding */
@media (min-width: 768px) {
.px-md-6 {
padding-left: 12.5% !important;
padding-right: 12.5% !important;
}
}

103
devenv.lock Normal file
View File

@@ -0,0 +1,103 @@
{
"nodes": {
"devenv": {
"locked": {
"dir": "src/modules",
"lastModified": 1739444039,
"owner": "cachix",
"repo": "devenv",
"rev": "1235cd13f47df6ad19c8a183c6eabc1facb7c399",
"type": "github"
},
"original": {
"dir": "src/modules",
"owner": "cachix",
"repo": "devenv",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1733328505,
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1737465171,
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1733477122,
"owner": "cachix",
"repo": "devenv-nixpkgs",
"rev": "7bd9e84d0452f6d2e63b6e6da29fe73fac951857",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "rolling",
"repo": "devenv-nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"devenv": "devenv",
"git-hooks": "git-hooks",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": [
"git-hooks"
]
}
}
},
"root": "root",
"version": 7
}

20
devenv.nix Normal file
View File

@@ -0,0 +1,20 @@
{ pkgs, lib, config, inputs, ... }:
{
# https://devenv.sh/packages/
packages = [
pkgs.git
pkgs.yaml-language-server
pkgs.typescript-language-server
pkgs.nodePackages.prettier
];
# https://devenv.sh/languages/
# languages.rust.enable = true;
languages.javascript = {
enable = true;
npm.enable = true;
npm.install.enable = true;
};
languages.nix.enable = true;
}

15
devenv.yaml Normal file
View File

@@ -0,0 +1,15 @@
# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json
inputs:
nixpkgs:
url: github:cachix/devenv-nixpkgs/rolling
# If you're using non-OSS software, you can set allowUnfree to true.
# allowUnfree: true
# If you're willing to use a package that's vulnerable
# permittedInsecurePackages:
# - "openssl-1.1.1w"
# If you have more than one devenv you can merge them
#imports:
# - ./backend

View File

@@ -1,4 +0,0 @@
<!--Dummy File to Redirect to index.html in Web Pages Folder-->
<head>
<meta http-equiv="refresh" content="0; url=https://balajsra.github.io/web_pages/index.html">
</head>

22
justfile Normal file
View File

@@ -0,0 +1,22 @@
set shell := ["bash", "-c"]
PORT := "1280"
# List just commands by default
default:
@just --list
# Update development environment
update:
devenv update && \
npm update
# Run development server
dev:
npx @11ty/eleventy \
--serve \
--port={{ PORT }};
# Build static site files
build-site:
npx @11ty/eleventy

2201
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

5
package.json Normal file
View File

@@ -0,0 +1,5 @@
{
"dependencies": {
"@11ty/eleventy": "latest"
}
}

28
src/_data/contact.json Normal file
View File

@@ -0,0 +1,28 @@
{
"items": [
{
"label": "Email",
"icon": "/assets/about/email.png",
"link": "mailto:balajsra@umich.edu",
"displayText": "balajsra@umich.edu"
},
{
"label": "LinkedIn",
"icon": "/assets/about/linkedin.png",
"link": "https://www.linkedin.com/in/sravan-balaji",
"displayText": "sravan-balaji"
},
{
"label": "GitHub",
"icon": "/assets/about/github.png",
"link": "https://github.com/balajsra",
"displayText": "balajsra"
},
{
"label": "YouTube",
"icon": "/assets/about/youtube.png",
"link": "https://www.youtube.com/channel/UC-xFJ4IKdogbpoQdQf2mgaA",
"displayText": "Sravan Balaji"
}
]
}

37
src/_data/navigation.json Normal file
View File

@@ -0,0 +1,37 @@
{
"items": [
{
"text": "About",
"url": "/about/",
"sections": [
"Bio",
"Contact Me"
]
},
{
"text": "Portfolio",
"url": "/portfolio/",
"sections": [
"Resume",
"Professional Experience",
"Education",
"Research"
]
},
{
"text": "Personal",
"url": "/personal/",
"sections": []
},
{
"text": "Blog",
"url": "/blog/",
"sections": []
},
{
"text": "Documentation",
"url": "/documentation/",
"sections": []
}
]
}

7
src/_data/site.json Normal file
View File

@@ -0,0 +1,7 @@
{
"author": "Sravan Balaji",
"url": "https://sravanbalaji.com",
"copyrightYear": 2019,
"licenseFile": "https://github.com/balajsra/sravanbalaji.com/blob/master/LICENSE",
"licenseName": "MIT License"
}

View File

@@ -0,0 +1,38 @@
<!doctype html>
{% extends "layouts/base.html" %}
{% from "macros.html" import sectionHeading %}
{% block content %}
<div class="container-fluid px-md-6">
{{ sectionHeading("Bio") }}
<div class="row align-items-center">
<div class="col-md-3">
<img
class="img-fluid mx-auto d-block"
src="{{ profilePicture }}"
/>
</div>
<div class="col-md-9">
{{ content | safe }}
</div>
</div>
{{ sectionHeading("Contact Me") }}
<div class="row align-items-center">
{% for item in contact.items %}
<div class="col-md-{{ 12//contact.items.length }} text-center">
<a href="{{ item.link }}" target="_blank">
<img
class="img-fluid mx-auto d-block"
width=50%
alt="{{ item.label }}"
src="{{ item.icon }}"
/>
</a>
<p><br /><b>{{ item.label }}:</b> {{ item.displayText }}</p>
</div>
{% endfor %}
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,15 @@
<!doctype html>
<html lang="en" color-mode="light">
<head>
{% include "partials/site-head.html" %}
{% include "partials/navigation.html" %}
</head>
<body>
<main tabindex="-1" id="main-content">{% block content %}{% endblock %}</main>
</body>
<footer>
{% include "partials/footer.html" %}
</footer>
</html>

View File

@@ -0,0 +1,14 @@
<!doctype html>
{% extends "layouts/base.html" %}
{% from "macros.html" import sectionHeading %}
{% block content %}
<div class="container-fluid px-md-6">
{{ sectionHeading("Welcome") }}
<div class="row align-items-center">
<div class="col-md-12">
{{ content | safe }}
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,8 @@
<!doctype html>
{% extends "layouts/base.html" %}
{% block content %}
<div class="container-fluid px-md-6">
{% include "partials/software.html" %}
{% include "partials/hardware.html" %}
</div>
{% endblock %}

View File

@@ -0,0 +1,10 @@
<!doctype html>
{% extends "layouts/base.html" %}
{% block content %}
<div class="container-fluid px-md-6">
{% include "partials/resume.html" %}
{% include "partials/professionalExperience.html" %}
{% include "partials/education.html" %}
<!-- {% include "partials/research.html" %} -->
</div>
{% endblock %}

79
src/_includes/macros.html Normal file
View File

@@ -0,0 +1,79 @@
<!doctype html>
{% macro sectionHeading(name) %}
<div class="row align-items-center">
<div class="col-md-12">
<h1>
<a name="{{ name | slugify }}">{{ name }}</a>
</h1>
</div>
</div>
{% endmacro %}
{% macro portfolioWithHighlights(portfolio, highlights) %}
{% for entry in portfolio %}
<div class="row">
<div class="col-md-6">
<div class="row">
<div class="col-md-4">
<a href="{{ entry.data.url }}" target="_blank">
<img
class="img-fluid mx-auto d-block"
width="100%"
src="{{ entry.data.logo }}"
/>
</a>
</div>
<div class="col-md-8">
<h2><b>{{ entry.data.association }}</b></h2>
<h3>{{ entry.data.entryTitle }}</h3>
<h4>{{ entry.data.location }}</h4>
<h5><i>{{ entry.data.startDate }} - {{ entry.data.endDate }}</i></h5>
{{ entry.content | safe }}
</div>
</div>
</div>
{% set associatedHighlights = (highlights | findAssociation(entry.data.id)) %}
{% if associatedHighlights.length > 0 %}
<div class="col-md-6">
<div class="accordion accordion-flush" id="{{ entry.data.id }}">
{% for highlight in associatedHighlights %}
{% set highlightSlug = (entry.data.id + '-' + highlight.data.name | slugify) %}
<div class="accordion-item">
<div class="accordion-header"">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#{{ highlightSlug }}">
<b>{{ highlight.data.name }}</b>
</button>
</div>
<div id="{{ highlightSlug }}" class="accordion-collapse collapse" data-bs-parent="#{{ entry.data.id }}">
<div class="accordion-body">
{{ highlight.content | safe }}
</div>
</div>
</div>
{% endfor %}
</div>
</div>
{% endif %}
</div>
{% endfor %}
{% endmacro %}
{% macro personalItems(personal) %}
{% for entry in personal %}
<div class="row">
<div class="col-md-2">
<a href="{{ entry.data.url }}" target="_blank">
<img
class="img-fluid mx-auto d-block"
width="50%"
src="{{ entry.data.logo }}"
/>
</a>
</div>
<div class="col-md-10">
<h2><b>{{ entry.data.category }}: <a href="{{ entry.data.url }}" target="_blank">{{ entry.data.name }}</a></b></h2>
{{ entry.content | safe }}
</div>
</div>
{% endfor %}
{% endmacro %}

View File

@@ -0,0 +1,6 @@
<!doctype html>
{% from "macros.html" import sectionHeading %}
{{ sectionHeading("Education") }}
{% from "macros.html" import portfolioWithHighlights %}
{{ portfolioWithHighlights(collections.education, collections.highlights) }}

View File

@@ -0,0 +1,15 @@
<!doctype html>
<div class="container-fluid px-md-6">
<div class="row align-items-center">
<div class="col-md-12">
<small>
Copyright &copy; {{ site.copyrightYear }} {{ site.author }} under
<a
rel="license"
href="{{ site.licenseFile }}"
target="_blank"
>{{ site.licenseName }}</a>
</small>
</div>
</div>
</div>

View File

@@ -0,0 +1,6 @@
<!doctype html>
{% from "macros.html" import sectionHeading %}
{{ sectionHeading("Hardware") }}
{% from "macros.html" import personalItems %}
{{ personalItems(collections.hardware) }}

View File

@@ -0,0 +1,48 @@
<!doctype html>
<header role="banner" class="site-head">
<nav class="navbar my-nav navbar-expand-md fixed-top">
<div class="container-fluid">
<!-- Brand -->
<a class="navbar-brand" href="/">
<img src="/assets/branding/logo.png" alt="Icon" width="30px" height="30px"
class="d-inline-block align-top" />
<img src="/assets/branding/name.png" alt="Name" height="30px" class="d-inline-block align-center" />
</a>
<!-- Toggler/collapsible Button -->
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggler">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Navbar links -->
<div class="collapse navbar-collapse" id="navbarToggler">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
{% for item in navigation.items %}
{% if item.sections.length > 0 %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" id="{{ item.text | slugify }}" role="button" data-bs-toggle="dropdown" href="{{ item.url }}"><b>{{ item.text }}</b></a>
<ul class="dropdown-menu">
{% for section in item.sections %}
<li><a class="dropdown-item" href="{{ item.url }}#{{ section | slugify }}">{{ section }}</a></li>
{% endfor %}
</ul>
</li>
{% else %}
<li class="nav-item">
<a class="nav-link" href="{{ item.url }}"><b>{{ item.text }}</b></a>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
<!-- Dark Mode Toggle -->
<!-- Reference: https://github.com/coliff/dark-mode-switch -->
<div class="form-check form-switch">
<input type="checkbox" class="form-check-input" id="darkSwitch" />
<label class="form-check-label" for="darkSwitch" id="darkSwitchLabel">Dark Mode</label>
</div>
<script src="/scripts/dark-mode-switch.min.js"></script>
</div>
</nav>
</header>

View File

@@ -0,0 +1,6 @@
<!doctype html>
{% from "macros.html" import sectionHeading %}
{{ sectionHeading("Professional Experience") }}
{% from "macros.html" import portfolioWithHighlights %}
{{ portfolioWithHighlights(collections.professionalExperience, collections.highlights) }}

View File

@@ -0,0 +1,3 @@
<!doctype html>
{% from "macros.html" import sectionHeading %}
{{ sectionHeading("Research") }}

View File

@@ -0,0 +1,16 @@
<!doctype html>
{% from "macros.html" import sectionHeading %}
{{ sectionHeading("Resume") }}
<div class="row align-items-center">
<div class="col-md-12">
<p>
The latest version of my resume is hosted on
<a
href="https://github.com/balajsra/resume/blob/master/sravan_balaji_resume.pdf"
target="_blank"
>GitHub</a
>.
</p>
</div>
</div>

View File

@@ -0,0 +1,33 @@
<!doctype html>
<!--Required meta tags-->
<meta charset="utf-8" />
<meta name="author" content="{{ site.author }}" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Bootstrap -->
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"
integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r"
crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js"
integrity="sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy"
crossorigin="anonymous"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.7.1.slim.min.js"
integrity="sha256-kmHvs0B+OpCW5GVHUNjv9rOmY0IvSIRcf7zGUDTDQM8=" crossorigin="anonymous"></script>
<!-- highlight.js -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/default.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
<!-- Stylesheet -->
<link rel="stylesheet" type="text/css" href="/style.css" />
<!-- Favicon -->
<link rel="icon" href="/assets/branding/favicon.ico" type="image/x-icon" />
<!-- Title -->
<title>{{ title }}</title>

View File

@@ -0,0 +1,6 @@
<!doctype html>
{% from "macros.html" import sectionHeading %}
{{ sectionHeading("Software") }}
{% from "macros.html" import personalItems %}
{{ personalItems(collections.software) }}

11
src/about.md Normal file
View File

@@ -0,0 +1,11 @@
---
title: About
layout: "layouts/about.html"
profilePicture: "/assets/about/profile_picture.jpg"
---
Sravan Balaji completed his undergraduate and graduate degrees at the [University of Michigan, Ann Arbor](https://umich.edu). He earned dual B.S.E.'s in [Mechanical Engineering](https://me.engin.umich.edu) and [Computer Science](https://cse.engin.umich.edu) in December 2020 and an M.S. in [Robotics](https://robotics.umich.edu) in December 2021.
Sravan worked as a Graduate Navigation Intern at [MITRE](https://www.mitre.org) during summer 2021. You can learn more about this and his other work experiences in the [professional experience](/portfolio#professional_experience) section of the [portfolio](/portfolio) page. He later returned to [MITRE](https://www.mitre.org) full-time to work as an Autonomous Systems Engineer in McLean, VA. He currently works at [Metron](https://metsci.com) as a Software Engineer in Reston, VA.
Sravan's professional and academic interests are in controls, motion planning, robotic perception & manipulation, autonomous & connected vehicles, software development, and GNU/Linux among other things. His personal interests include video games, podcasts, music, cooking, football, soccer, formula 1, and productivity software.

BIN
src/assets/about/email.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
src/assets/about/github.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Some files were not shown because too many files have changed in this diff Show More