Sravan Balaji
+Sravan Balaji is a Senior at the University of Michigan pursuing dual B.S.E.’s in Mechanical Engineering and Computer Science with an expected graduation of December 2020.
+ Read more +diff --git a/assets/about/email.png b/assets/about/email.png deleted file mode 100644 index 7211a05..0000000 Binary files a/assets/about/email.png and /dev/null differ diff --git a/assets/about/github.png b/assets/about/github.png deleted file mode 100644 index a7215cf..0000000 Binary files a/assets/about/github.png and /dev/null differ diff --git a/assets/about/linkedin.png b/assets/about/linkedin.png deleted file mode 100644 index 34c7570..0000000 Binary files a/assets/about/linkedin.png and /dev/null differ diff --git a/assets/about/profile_picture.jpg b/assets/about/profile_picture.jpg deleted file mode 100644 index 0cee44e..0000000 Binary files a/assets/about/profile_picture.jpg and /dev/null differ diff --git a/assets/blog_posts/Docker/virtual_box_shared_folder.jpg b/assets/blog_posts/Docker/virtual_box_shared_folder.jpg deleted file mode 100644 index ec4a1a9..0000000 Binary files a/assets/blog_posts/Docker/virtual_box_shared_folder.jpg and /dev/null differ diff --git a/assets/branding/color_palette.png b/assets/branding/color_palette.png deleted file mode 100644 index 40f0960..0000000 Binary files a/assets/branding/color_palette.png and /dev/null differ diff --git a/assets/branding/favicon.ico b/assets/branding/favicon.ico deleted file mode 100644 index 13135a7..0000000 Binary files a/assets/branding/favicon.ico and /dev/null differ diff --git a/assets/branding/logo_with_name.png b/assets/branding/logo_with_name.png deleted file mode 100644 index 8b64a44..0000000 Binary files a/assets/branding/logo_with_name.png and /dev/null differ diff --git a/assets/branding/name.png b/assets/branding/name.png deleted file mode 100644 index 4e838c4..0000000 Binary files a/assets/branding/name.png and /dev/null differ diff --git a/assets/education/logo-umich.png b/assets/education/logo-umich.png deleted file mode 100644 index 4c56df8..0000000 Binary files a/assets/education/logo-umich.png and /dev/null differ diff --git a/assets/hardware/desktop-case.png b/assets/hardware/desktop-case.png deleted file mode 100644 index da26ce4..0000000 Binary files a/assets/hardware/desktop-case.png and /dev/null differ diff --git a/assets/hardware/galaxy-buds.png b/assets/hardware/galaxy-buds.png deleted file mode 100644 index 720a5a1..0000000 Binary files a/assets/hardware/galaxy-buds.png and /dev/null differ diff --git a/assets/hardware/galaxy-s10-plus.png b/assets/hardware/galaxy-s10-plus.png deleted file mode 100644 index 12ab607..0000000 Binary files a/assets/hardware/galaxy-s10-plus.png and /dev/null differ diff --git a/assets/hardware/galaxy-watch.png b/assets/hardware/galaxy-watch.png deleted file mode 100644 index e06854d..0000000 Binary files a/assets/hardware/galaxy-watch.png and /dev/null differ diff --git a/assets/hardware/spectre-x360.png b/assets/hardware/spectre-x360.png deleted file mode 100644 index 2febbf0..0000000 Binary files a/assets/hardware/spectre-x360.png and /dev/null differ diff --git a/assets/hardware/surface-go.png b/assets/hardware/surface-go.png deleted file mode 100644 index d83db92..0000000 Binary files a/assets/hardware/surface-go.png and /dev/null differ diff --git a/assets/hardware/wh-1000xm3.png b/assets/hardware/wh-1000xm3.png deleted file mode 100644 index e359f26..0000000 Binary files a/assets/hardware/wh-1000xm3.png and /dev/null differ diff --git a/assets/podcasts/artificial-intelligence.jpg b/assets/podcasts/artificial-intelligence.jpg deleted file mode 100644 index 9439711..0000000 Binary files a/assets/podcasts/artificial-intelligence.jpg and /dev/null differ diff --git a/assets/podcasts/bill-simmons.jpg b/assets/podcasts/bill-simmons.jpg deleted file mode 100644 index a2b7009..0000000 Binary files a/assets/podcasts/bill-simmons.jpg and /dev/null differ diff --git a/assets/podcasts/football-weekly.jpg b/assets/podcasts/football-weekly.jpg deleted file mode 100644 index 9761cc1..0000000 Binary files a/assets/podcasts/football-weekly.jpg and /dev/null differ diff --git a/assets/podcasts/giant-bombcast.jpg b/assets/podcasts/giant-bombcast.jpg deleted file mode 100644 index 1af33f0..0000000 Binary files a/assets/podcasts/giant-bombcast.jpg and /dev/null differ diff --git a/assets/podcasts/hardcore-history.jpg b/assets/podcasts/hardcore-history.jpg deleted file mode 100644 index 31c279b..0000000 Binary files a/assets/podcasts/hardcore-history.jpg and /dev/null differ diff --git a/assets/podcasts/invisibilia.jpg b/assets/podcasts/invisibilia.jpg deleted file mode 100644 index 9043eec..0000000 Binary files a/assets/podcasts/invisibilia.jpg and /dev/null differ diff --git a/assets/podcasts/the-daily.jpg b/assets/podcasts/the-daily.jpg deleted file mode 100644 index e0bf279..0000000 Binary files a/assets/podcasts/the-daily.jpg and /dev/null differ diff --git a/assets/podcasts/throughline.jpg b/assets/podcasts/throughline.jpg deleted file mode 100644 index 07a961b..0000000 Binary files a/assets/podcasts/throughline.jpg and /dev/null differ diff --git a/assets/podcasts/vergecast.jpg b/assets/podcasts/vergecast.jpg deleted file mode 100644 index 091563e..0000000 Binary files a/assets/podcasts/vergecast.jpg and /dev/null differ diff --git a/assets/podcasts/wait-wait.jpg b/assets/podcasts/wait-wait.jpg deleted file mode 100644 index 302d43e..0000000 Binary files a/assets/podcasts/wait-wait.jpg and /dev/null differ diff --git a/assets/programming/visual_studio_code.jpg b/assets/programming/visual_studio_code.jpg deleted file mode 100644 index ea8aefd..0000000 Binary files a/assets/programming/visual_studio_code.jpg and /dev/null differ diff --git a/assets/software/logo-chocolatey.png b/assets/software/logo-chocolatey.png deleted file mode 100644 index b0a3885..0000000 Binary files a/assets/software/logo-chocolatey.png and /dev/null differ diff --git a/assets/software/logo-clatter.png b/assets/software/logo-clatter.png deleted file mode 100644 index 8e0bc4c..0000000 Binary files a/assets/software/logo-clatter.png and /dev/null differ diff --git a/assets/software/logo-ditto.png b/assets/software/logo-ditto.png deleted file mode 100644 index 243718f..0000000 Binary files a/assets/software/logo-ditto.png and /dev/null differ diff --git a/assets/software/logo-edge.png b/assets/software/logo-edge.png deleted file mode 100644 index fed7770..0000000 Binary files a/assets/software/logo-edge.png and /dev/null differ diff --git a/assets/software/logo-fences.png b/assets/software/logo-fences.png deleted file mode 100644 index 8353a3d..0000000 Binary files a/assets/software/logo-fences.png and /dev/null differ diff --git a/assets/software/logo-mytube.png b/assets/software/logo-mytube.png deleted file mode 100644 index 18a8a44..0000000 Binary files a/assets/software/logo-mytube.png and /dev/null differ diff --git a/assets/software/logo-notion.png b/assets/software/logo-notion.png deleted file mode 100644 index 7077d7b..0000000 Binary files a/assets/software/logo-notion.png and /dev/null differ diff --git a/assets/software/logo-pocket-casts.png b/assets/software/logo-pocket-casts.png deleted file mode 100644 index 14953b6..0000000 Binary files a/assets/software/logo-pocket-casts.png and /dev/null differ diff --git a/assets/software/logo-remote-fingerprint-unlock.png b/assets/software/logo-remote-fingerprint-unlock.png deleted file mode 100644 index 9d3c6c5..0000000 Binary files a/assets/software/logo-remote-fingerprint-unlock.png and /dev/null differ diff --git a/assets/software/logo-start10.png b/assets/software/logo-start10.png deleted file mode 100644 index 694f368..0000000 Binary files a/assets/software/logo-start10.png and /dev/null differ diff --git a/assets/software/logo-wallpaper-engine.png b/assets/software/logo-wallpaper-engine.png deleted file mode 100644 index de146e8..0000000 Binary files a/assets/software/logo-wallpaper-engine.png and /dev/null differ diff --git a/assets/software/logo-windows-terminal.png b/assets/software/logo-windows-terminal.png deleted file mode 100644 index a4238f0..0000000 Binary files a/assets/software/logo-windows-terminal.png and /dev/null differ diff --git a/assets/software/logo-xodo.png b/assets/software/logo-xodo.png deleted file mode 100644 index 8f1ed8e..0000000 Binary files a/assets/software/logo-xodo.png and /dev/null differ diff --git a/assets/software/logo-your-phone.png b/assets/software/logo-your-phone.png deleted file mode 100644 index 12a0d44..0000000 Binary files a/assets/software/logo-your-phone.png and /dev/null differ diff --git a/assets/software/logo-youtube-vanced.png b/assets/software/logo-youtube-vanced.png deleted file mode 100644 index 3fb8acc..0000000 Binary files a/assets/software/logo-youtube-vanced.png and /dev/null differ diff --git a/assets/video_games/logo-nintendo-switch.png b/assets/video_games/logo-nintendo-switch.png deleted file mode 100644 index 3258cb0..0000000 Binary files a/assets/video_games/logo-nintendo-switch.png and /dev/null differ diff --git a/assets/video_games/logo-pc.jpeg b/assets/video_games/logo-pc.jpeg deleted file mode 100644 index 9347da5..0000000 Binary files a/assets/video_games/logo-pc.jpeg and /dev/null differ diff --git a/assets/video_games/logo-ps4.jpg b/assets/video_games/logo-ps4.jpg deleted file mode 100644 index c60bcac..0000000 Binary files a/assets/video_games/logo-ps4.jpg and /dev/null differ diff --git a/assets/video_games/steam.jpg b/assets/video_games/steam.jpg deleted file mode 100644 index 85da31c..0000000 Binary files a/assets/video_games/steam.jpg and /dev/null differ diff --git a/blog_posts/blog_docker.html b/blog_posts/blog_docker.html deleted file mode 100644 index 2b00697..0000000 --- a/blog_posts/blog_docker.html +++ /dev/null @@ -1,179 +0,0 @@ - - -
- -- Updated on March 18, 2020 -
- - -- 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, Windows Subsystem for Linux, or Cygwin. 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 docker image. You can then spin up an instance of this image called a docker container 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. -
- - - -- 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. -
-choco install docker-desktop
choco install docker-toolbox
- 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. -
- -- The default way to install WSL is through the Microsoft Store. 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 here. -
- -
- After installing WSL, follow the instructions in Setting Up Docker Toolbox for Windows Home 10 and WSL to Work Perfectly! starting with Install Docker and Docker Compose within WSL. 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 root = /
, you will need to configure shared folders for the default
docker machine in VirtualBox.
-
- 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 docker-machine.exe start
to start the default
docker machine created by the Docker Quickstart Terminal. After your docker machine is running, open the shared folder settings as shown in Fixing Volumes in Docker Toolbox. The image below shows how C:\
on my host computer is mounted at /
in folder c
on my docker machine such that C:\
maps to /c
. Make sure you have enabled Auto-mount
and Make Permanent
. Click OK to save all settings, then go back to the WSL terminal and run docker-machine.exe restart default
. Now your docker machine should be properly configured to allow volume mounting.
-
- One issue I ran into with the default settings for the default
docker machine is the amount of RAM allocated to it. I attempted to build the GTSAM library inside a docker container and ran into an internal compiler error: Killed (program cc1plus). As mentioned here, the solution is to increase the RAM allocated to the docker machine in VirtualBox. In the WSL terminal, run docker-machine.exe stop
to shutdown the docker machine. When this is complete, right click on the default
docker machine in VirtualBox and open Settings. In the System tab, increase Base Memory. 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.
-
- To learn about Dockerfiles and a basic example, check out the video in the introduction. To learn about Docker Compose, check out Jake Wright's video on the topic. -
- - -
- 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 VcXsrv Windows X Server. If you are using chocolatey, you can run choco install vcxsrv
.
-
- Run GUI app in linux docker container on windows host 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 DISPLAY
environment variable that is passed to docker via the -e DISPLAY=$DISPLAY
command line argument. You can alternatively pass your IP address as an environment variable in your docker compose file. This is shown in MAAV's ROS Tutorial (reproduced below). The main settings to look at below are environment
and network_mode
. Set the DISPLAY
environment variable to [ip_address]:0.0
and set network_mode: "host"
.
-
-
-# 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
-
-
-
- -
docker system prune --volumes
- 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 contact me. -
- -
+ GPA: 3.757
+ Focus: Controls
+
+ GPA: 3.757
+ Focus: Intelligent Systems
+
+ Hard Skills: +
+
Problem
++ Hughes sells mobile satellite terminals that provide internet and phone service to customers. Some customers who purchased terminals in bulk (~1000) required non-default settings. The configuration process of manually changing settings on each terminal was tedious and error-prone. +
+Task
++ My job was to develop a Windows 7 / 10 program that would automate the terminal configuration process. +
+Result
++ I designed and developed a GUI program in C# that detects which terminal model is connected and uses the available interface (REST API or FTP) to copy the configuration of the master terminal. This can then be used to automatically configure subsequent terminals. +
+Customer Feedback
+++ +"Btw the tool you sent us is helping a lot. Thank you so much."
+ +
Problem
++ Hughes mobile terminals allow customers to have internet and phone access in remote areas via a satellite connection. Some customers may find value in a GPS feature built into the terminal. In this situation, the terminal would send GPS coordinates to a server at regular intervals of time, distance, and/or velocity as configured by the end-user. +
+Task
++ My task was to investigate a way to minimize the data packet size of GPS coordinates and to update the terminal's software to send these data packets to a server configured by the end-user. +
+Result
++ This project was assigned to me after the completion of my previous project, which was intended to last the entire internship. I was able to determine that MQTT-SN was a good option as it simply sends a data packet to a server without checking for acknowledgement and the packet header is sufficiently small. I successfully implemented the packet structure and delivery to the server on the terminal software written in C. However, I was unable to get the server to recognize that it received the packet in my remaining time at Hughes. Using Wireshark, I confirmed the reception of the packet, but none of the open-source MQTT-SN brokers I used worked. +
++ Hard Skills: +
+ Hard Skills: +
Sravan Balaji is a Senior at the University of Michigan pursuing dual B.S.E.’s in Mechanical Engineering and Computer Science with an expected graduation of December 2020.
+ Read more +Sravan Balaji is a Senior at the +University of Michigan pursuing dual B.S.E.’s in +Mechanical Engineering and +Computer Science with an expected graduation of December 2020. Upon completion of his Bachelor’s degrees, he plans on continuing his education with a Master’s in Robotics.
+Sravan most recently completed an ADAS Controls Internship at +Rivian for the Summer of 2020. He will be returning to the +University of Michigan for his final undergraduate semester in the Fall of 2020.
+Sravan’s professional and academic interests are in robotics, mechatronics, autonomous systems, controls, programming, and GNU/Linux among other things. His personal interests include video games, podcasts, music, cooking, football, soccer, and personal / project management software.
+ +Feel free to reach out to me via email, LinkedIn, GitHub, or YouTube via the links below.
+ Read more +Feel free to reach out to me via email, LinkedIn, GitHub, or YouTube via the links below. I’m happy to discuss my website, college education, professional experience, or anything else really. I will do my best to respond in a timely manner.
+If you have suggestions for the website or would like to see the source files, check out my +GitHub repository.
+ +