From e31b13191bc47b4f01ec7b9445c2260546cf9e53 Mon Sep 17 00:00:00 2001 From: Sravan Balaji Date: Sat, 24 Oct 2020 15:00:43 -0400 Subject: [PATCH] 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 --- README.md | 4 +- blog_posts/blog_docker.html | 179 -- common/footer.html | 9 - common/header.html | 22 - common/header.txt | 1 - common/navbar.html | 111 -- common/navbar.txt | 1 - common/styles.css | 67 - index.html | 7 +- src/about.html | 166 ++ {assets => src/assets}/about/email.png | Bin {assets => src/assets}/about/github.png | Bin {assets => src/assets}/about/linkedin.png | Bin .../assets}/about/profile_picture.jpg | Bin .../Docker/virtual_box_shared_folder.jpg | Bin .../assets}/branding/color_palette.png | Bin {assets => src/assets}/branding/favicon.ico | Bin {assets => src/assets}/branding/logo.png | Bin .../assets}/branding/logo_with_name.png | Bin {assets => src/assets}/branding/name.png | Bin .../education/logo-computer-science.jpg | Bin .../education/logo-mechanical-engineering.jpg | Bin .../assets}/education/logo-umich.png | Bin .../assets}/hardware/desktop-case.png | Bin .../assets}/hardware/galaxy-buds.png | Bin .../assets}/hardware/galaxy-s10-plus.png | Bin .../assets}/hardware/galaxy-watch.png | Bin .../assets}/hardware/spectre-x360.png | Bin .../assets}/hardware/surface-go.png | Bin .../assets}/hardware/wh-1000xm3.png | Bin .../podcasts/artificial-intelligence.jpg | Bin .../assets}/podcasts/bill-simmons.jpg | Bin .../assets}/podcasts/football-weekly.jpg | Bin .../assets}/podcasts/giant-bombcast.jpg | Bin .../assets}/podcasts/hardcore-history.jpg | Bin .../assets}/podcasts/invisibilia.jpg | Bin {assets => src/assets}/podcasts/the-daily.jpg | Bin .../assets}/podcasts/throughline.jpg | Bin {assets => src/assets}/podcasts/vergecast.jpg | Bin {assets => src/assets}/podcasts/wait-wait.jpg | Bin .../professional_experience/logo-hughes.jpg | Bin .../professional_experience/logo-rivian.png | Bin .../programming/visual_studio_code.jpg | Bin .../assets}/software/logo-chocolatey.png | Bin .../assets}/software/logo-clatter.png | Bin .../assets}/software/logo-ditto.png | Bin {assets => src/assets}/software/logo-edge.png | Bin .../assets}/software/logo-fences.png | Bin .../assets}/software/logo-mytube.png | Bin .../assets}/software/logo-notion.png | Bin .../assets}/software/logo-pocket-casts.png | Bin .../logo-remote-fingerprint-unlock.png | Bin .../assets}/software/logo-start10.png | Bin .../software/logo-wallpaper-engine.png | Bin .../software/logo-windows-terminal.png | Bin {assets => src/assets}/software/logo-xodo.png | Bin .../assets}/software/logo-your-phone.png | Bin .../assets}/software/logo-youtube-vanced.png | Bin .../video_games/logo-nintendo-switch.png | Bin .../assets}/video_games/logo-pc.jpeg | Bin .../assets}/video_games/logo-ps4.jpg | Bin {assets => src/assets}/video_games/steam.jpg | Bin src/blog.html | 84 + src/blog_docker.html | 425 +++++ src/common/footer.html | 15 + {common => src/common}/footer.txt | 2 +- src/common/header.html | 33 + src/common/header.txt | 1 + src/common/navbar.html | 161 ++ src/common/navbar.txt | 1 + src/documentation.html | 367 ++++ src/index.html | 50 + src/personal.html | 1589 +++++++++++++++++ src/portfolio.html | 1422 +++++++++++++++ src/style/styles.css | 118 ++ web_pages/about.html | 103 -- web_pages/blog.html | 61 - web_pages/documentation.html | 177 -- web_pages/index.html | 28 - web_pages/personal.html | 642 ------- web_pages/portfolio.html | 758 -------- 81 files changed, 4440 insertions(+), 2164 deletions(-) delete mode 100644 blog_posts/blog_docker.html delete mode 100644 common/footer.html delete mode 100644 common/header.html delete mode 100644 common/header.txt delete mode 100644 common/navbar.html delete mode 100644 common/navbar.txt delete mode 100644 common/styles.css create mode 100644 src/about.html rename {assets => src/assets}/about/email.png (100%) rename {assets => src/assets}/about/github.png (100%) rename {assets => src/assets}/about/linkedin.png (100%) rename {assets => src/assets}/about/profile_picture.jpg (100%) rename {assets => src/assets}/blog_posts/Docker/virtual_box_shared_folder.jpg (100%) rename {assets => src/assets}/branding/color_palette.png (100%) rename {assets => src/assets}/branding/favicon.ico (100%) rename {assets => src/assets}/branding/logo.png (100%) rename {assets => src/assets}/branding/logo_with_name.png (100%) rename {assets => src/assets}/branding/name.png (100%) rename {assets => src/assets}/education/logo-computer-science.jpg (100%) rename {assets => src/assets}/education/logo-mechanical-engineering.jpg (100%) rename {assets => src/assets}/education/logo-umich.png (100%) rename {assets => src/assets}/hardware/desktop-case.png (100%) rename {assets => src/assets}/hardware/galaxy-buds.png (100%) rename {assets => src/assets}/hardware/galaxy-s10-plus.png (100%) rename {assets => src/assets}/hardware/galaxy-watch.png (100%) rename {assets => src/assets}/hardware/spectre-x360.png (100%) rename {assets => src/assets}/hardware/surface-go.png (100%) rename {assets => src/assets}/hardware/wh-1000xm3.png (100%) rename {assets => src/assets}/podcasts/artificial-intelligence.jpg (100%) rename {assets => src/assets}/podcasts/bill-simmons.jpg (100%) rename {assets => src/assets}/podcasts/football-weekly.jpg (100%) rename {assets => src/assets}/podcasts/giant-bombcast.jpg (100%) rename {assets => src/assets}/podcasts/hardcore-history.jpg (100%) rename {assets => src/assets}/podcasts/invisibilia.jpg (100%) rename {assets => src/assets}/podcasts/the-daily.jpg (100%) rename {assets => src/assets}/podcasts/throughline.jpg (100%) rename {assets => src/assets}/podcasts/vergecast.jpg (100%) rename {assets => src/assets}/podcasts/wait-wait.jpg (100%) rename {assets => src/assets}/professional_experience/logo-hughes.jpg (100%) rename {assets => src/assets}/professional_experience/logo-rivian.png (100%) rename {assets => src/assets}/programming/visual_studio_code.jpg (100%) rename {assets => src/assets}/software/logo-chocolatey.png (100%) rename {assets => src/assets}/software/logo-clatter.png (100%) rename {assets => src/assets}/software/logo-ditto.png (100%) rename {assets => src/assets}/software/logo-edge.png (100%) rename {assets => src/assets}/software/logo-fences.png (100%) rename {assets => src/assets}/software/logo-mytube.png (100%) rename {assets => src/assets}/software/logo-notion.png (100%) rename {assets => src/assets}/software/logo-pocket-casts.png (100%) rename {assets => src/assets}/software/logo-remote-fingerprint-unlock.png (100%) rename {assets => src/assets}/software/logo-start10.png (100%) rename {assets => src/assets}/software/logo-wallpaper-engine.png (100%) rename {assets => src/assets}/software/logo-windows-terminal.png (100%) rename {assets => src/assets}/software/logo-xodo.png (100%) rename {assets => src/assets}/software/logo-your-phone.png (100%) rename {assets => src/assets}/software/logo-youtube-vanced.png (100%) rename {assets => src/assets}/video_games/logo-nintendo-switch.png (100%) rename {assets => src/assets}/video_games/logo-pc.jpeg (100%) rename {assets => src/assets}/video_games/logo-ps4.jpg (100%) rename {assets => src/assets}/video_games/steam.jpg (100%) create mode 100644 src/blog.html create mode 100644 src/blog_docker.html create mode 100644 src/common/footer.html rename {common => src/common}/footer.txt (54%) create mode 100644 src/common/header.html create mode 100644 src/common/header.txt create mode 100644 src/common/navbar.html create mode 100644 src/common/navbar.txt create mode 100644 src/documentation.html create mode 100644 src/index.html create mode 100644 src/personal.html create mode 100644 src/portfolio.html create mode 100644 src/style/styles.css delete mode 100644 web_pages/about.html delete mode 100644 web_pages/blog.html delete mode 100644 web_pages/documentation.html delete mode 100644 web_pages/index.html delete mode 100644 web_pages/personal.html delete mode 100644 web_pages/portfolio.html diff --git a/README.md b/README.md index 11dd9d7..d6df045 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ This is the repository for my personal website, which can be found at [sravanbal ## 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 -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). 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 @@ - - - - - Docker - - - - - - - -
-
-
- -
-
- -

Getting Started with Docker

- - -

- Updated on March 18, 2020 -

- - - - -
- - -

Introduction

-

- 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. -

- -
- -
- -
- -

Installing Docker

-

- 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. -

- - -

Docker Toolbox & WSL

-

- 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. -

- -

Installing WSL

-

- 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. -

- -

Setting Up Docker Toolbox with WSL

-

- 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. -

- -

Shared Folder Configuration for Volume Mounting

-

- 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. -

- - -

Increase Docker Machine Resources

-

- 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. -

- -
- -

Building Images & Running Containers

-

- 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. -

-
- -
- -
- -

X Forwarding for GUI Applications

-

- 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
-                        
-                    
- -
- -

Helpful Docker Commands

-

-

    -
  • System Prune to clear space on Docker Machine
  • -
      -
    • docker system prune --volumes
    • -
    -
-

- -
- -

Conclusion

-

- 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. -

- -
-
-
- -
-
-
- - - - \ No newline at end of file diff --git a/common/footer.html b/common/footer.html deleted file mode 100644 index d958934..0000000 --- a/common/footer.html +++ /dev/null @@ -1,9 +0,0 @@ -
-
-
- - Copyright © 2019 Sravan Balaji under MIT License - -
-
-
\ No newline at end of file diff --git a/common/header.html b/common/header.html deleted file mode 100644 index 5facd44..0000000 --- a/common/header.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/common/header.txt b/common/header.txt deleted file mode 100644 index ddb1ee7..0000000 --- a/common/header.txt +++ /dev/null @@ -1 +0,0 @@ -document.write(' ') \ No newline at end of file diff --git a/common/navbar.html b/common/navbar.html deleted file mode 100644 index 3117d34..0000000 --- a/common/navbar.html +++ /dev/null @@ -1,111 +0,0 @@ - \ No newline at end of file diff --git a/common/navbar.txt b/common/navbar.txt deleted file mode 100644 index de40a2a..0000000 --- a/common/navbar.txt +++ /dev/null @@ -1 +0,0 @@ -document.write('') \ No newline at end of file diff --git a/common/styles.css b/common/styles.css deleted file mode 100644 index 724a0f3..0000000 --- a/common/styles.css +++ /dev/null @@ -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; - } -} \ No newline at end of file diff --git a/index.html b/index.html index 1e63255..588ee57 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,7 @@ - - \ No newline at end of file + + diff --git a/src/about.html b/src/about.html new file mode 100644 index 0000000..429dc3f --- /dev/null +++ b/src/about.html @@ -0,0 +1,166 @@ + + + + + About + + + + + +
+ +
+
+
+

Bio

+
+
+
+
+ +
+
+

+ 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 recently completed an ADAS Controls + Internship at + Rivian + during the summer of 2020. You can learn more about + this and his other work experiences in the + professional experience + section of the + portfolio + page. Sravan is currently in his final undergraduate + semester at the + University of Michigan. +

+ +

+ 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 + productivity software. +

+
+
+
+ +
+
+
+

+ Feel free to reach out to me via email if you have + any questions about my website, college education, + professional experience, or anything else. If you + have suggestions for the website or would like to + see the source files, check out my + + GitHub repository. If you would like to connect with me on LinkedIn, + use the link below. I will do my best to respond to + any communication in a timely manner. +

+
+
+
+ + +
+
+
+ + Email + +

Email: balajsra@umich.edu

+
+
+ + LinkedIn + +

LinkedIn: sravan-balaji

+
+
+ + GitHub + +

GitHub: balajsra

+
+
+
+
+ + + + diff --git a/assets/about/email.png b/src/assets/about/email.png similarity index 100% rename from assets/about/email.png rename to src/assets/about/email.png diff --git a/assets/about/github.png b/src/assets/about/github.png similarity index 100% rename from assets/about/github.png rename to src/assets/about/github.png diff --git a/assets/about/linkedin.png b/src/assets/about/linkedin.png similarity index 100% rename from assets/about/linkedin.png rename to src/assets/about/linkedin.png diff --git a/assets/about/profile_picture.jpg b/src/assets/about/profile_picture.jpg similarity index 100% rename from assets/about/profile_picture.jpg rename to src/assets/about/profile_picture.jpg diff --git a/assets/blog_posts/Docker/virtual_box_shared_folder.jpg b/src/assets/blog_posts/Docker/virtual_box_shared_folder.jpg similarity index 100% rename from assets/blog_posts/Docker/virtual_box_shared_folder.jpg rename to src/assets/blog_posts/Docker/virtual_box_shared_folder.jpg diff --git a/assets/branding/color_palette.png b/src/assets/branding/color_palette.png similarity index 100% rename from assets/branding/color_palette.png rename to src/assets/branding/color_palette.png diff --git a/assets/branding/favicon.ico b/src/assets/branding/favicon.ico similarity index 100% rename from assets/branding/favicon.ico rename to src/assets/branding/favicon.ico diff --git a/assets/branding/logo.png b/src/assets/branding/logo.png similarity index 100% rename from assets/branding/logo.png rename to src/assets/branding/logo.png diff --git a/assets/branding/logo_with_name.png b/src/assets/branding/logo_with_name.png similarity index 100% rename from assets/branding/logo_with_name.png rename to src/assets/branding/logo_with_name.png diff --git a/assets/branding/name.png b/src/assets/branding/name.png similarity index 100% rename from assets/branding/name.png rename to src/assets/branding/name.png diff --git a/assets/education/logo-computer-science.jpg b/src/assets/education/logo-computer-science.jpg similarity index 100% rename from assets/education/logo-computer-science.jpg rename to src/assets/education/logo-computer-science.jpg diff --git a/assets/education/logo-mechanical-engineering.jpg b/src/assets/education/logo-mechanical-engineering.jpg similarity index 100% rename from assets/education/logo-mechanical-engineering.jpg rename to src/assets/education/logo-mechanical-engineering.jpg diff --git a/assets/education/logo-umich.png b/src/assets/education/logo-umich.png similarity index 100% rename from assets/education/logo-umich.png rename to src/assets/education/logo-umich.png diff --git a/assets/hardware/desktop-case.png b/src/assets/hardware/desktop-case.png similarity index 100% rename from assets/hardware/desktop-case.png rename to src/assets/hardware/desktop-case.png diff --git a/assets/hardware/galaxy-buds.png b/src/assets/hardware/galaxy-buds.png similarity index 100% rename from assets/hardware/galaxy-buds.png rename to src/assets/hardware/galaxy-buds.png diff --git a/assets/hardware/galaxy-s10-plus.png b/src/assets/hardware/galaxy-s10-plus.png similarity index 100% rename from assets/hardware/galaxy-s10-plus.png rename to src/assets/hardware/galaxy-s10-plus.png diff --git a/assets/hardware/galaxy-watch.png b/src/assets/hardware/galaxy-watch.png similarity index 100% rename from assets/hardware/galaxy-watch.png rename to src/assets/hardware/galaxy-watch.png diff --git a/assets/hardware/spectre-x360.png b/src/assets/hardware/spectre-x360.png similarity index 100% rename from assets/hardware/spectre-x360.png rename to src/assets/hardware/spectre-x360.png diff --git a/assets/hardware/surface-go.png b/src/assets/hardware/surface-go.png similarity index 100% rename from assets/hardware/surface-go.png rename to src/assets/hardware/surface-go.png diff --git a/assets/hardware/wh-1000xm3.png b/src/assets/hardware/wh-1000xm3.png similarity index 100% rename from assets/hardware/wh-1000xm3.png rename to src/assets/hardware/wh-1000xm3.png diff --git a/assets/podcasts/artificial-intelligence.jpg b/src/assets/podcasts/artificial-intelligence.jpg similarity index 100% rename from assets/podcasts/artificial-intelligence.jpg rename to src/assets/podcasts/artificial-intelligence.jpg diff --git a/assets/podcasts/bill-simmons.jpg b/src/assets/podcasts/bill-simmons.jpg similarity index 100% rename from assets/podcasts/bill-simmons.jpg rename to src/assets/podcasts/bill-simmons.jpg diff --git a/assets/podcasts/football-weekly.jpg b/src/assets/podcasts/football-weekly.jpg similarity index 100% rename from assets/podcasts/football-weekly.jpg rename to src/assets/podcasts/football-weekly.jpg diff --git a/assets/podcasts/giant-bombcast.jpg b/src/assets/podcasts/giant-bombcast.jpg similarity index 100% rename from assets/podcasts/giant-bombcast.jpg rename to src/assets/podcasts/giant-bombcast.jpg diff --git a/assets/podcasts/hardcore-history.jpg b/src/assets/podcasts/hardcore-history.jpg similarity index 100% rename from assets/podcasts/hardcore-history.jpg rename to src/assets/podcasts/hardcore-history.jpg diff --git a/assets/podcasts/invisibilia.jpg b/src/assets/podcasts/invisibilia.jpg similarity index 100% rename from assets/podcasts/invisibilia.jpg rename to src/assets/podcasts/invisibilia.jpg diff --git a/assets/podcasts/the-daily.jpg b/src/assets/podcasts/the-daily.jpg similarity index 100% rename from assets/podcasts/the-daily.jpg rename to src/assets/podcasts/the-daily.jpg diff --git a/assets/podcasts/throughline.jpg b/src/assets/podcasts/throughline.jpg similarity index 100% rename from assets/podcasts/throughline.jpg rename to src/assets/podcasts/throughline.jpg diff --git a/assets/podcasts/vergecast.jpg b/src/assets/podcasts/vergecast.jpg similarity index 100% rename from assets/podcasts/vergecast.jpg rename to src/assets/podcasts/vergecast.jpg diff --git a/assets/podcasts/wait-wait.jpg b/src/assets/podcasts/wait-wait.jpg similarity index 100% rename from assets/podcasts/wait-wait.jpg rename to src/assets/podcasts/wait-wait.jpg diff --git a/assets/professional_experience/logo-hughes.jpg b/src/assets/professional_experience/logo-hughes.jpg similarity index 100% rename from assets/professional_experience/logo-hughes.jpg rename to src/assets/professional_experience/logo-hughes.jpg diff --git a/assets/professional_experience/logo-rivian.png b/src/assets/professional_experience/logo-rivian.png similarity index 100% rename from assets/professional_experience/logo-rivian.png rename to src/assets/professional_experience/logo-rivian.png diff --git a/assets/programming/visual_studio_code.jpg b/src/assets/programming/visual_studio_code.jpg similarity index 100% rename from assets/programming/visual_studio_code.jpg rename to src/assets/programming/visual_studio_code.jpg diff --git a/assets/software/logo-chocolatey.png b/src/assets/software/logo-chocolatey.png similarity index 100% rename from assets/software/logo-chocolatey.png rename to src/assets/software/logo-chocolatey.png diff --git a/assets/software/logo-clatter.png b/src/assets/software/logo-clatter.png similarity index 100% rename from assets/software/logo-clatter.png rename to src/assets/software/logo-clatter.png diff --git a/assets/software/logo-ditto.png b/src/assets/software/logo-ditto.png similarity index 100% rename from assets/software/logo-ditto.png rename to src/assets/software/logo-ditto.png diff --git a/assets/software/logo-edge.png b/src/assets/software/logo-edge.png similarity index 100% rename from assets/software/logo-edge.png rename to src/assets/software/logo-edge.png diff --git a/assets/software/logo-fences.png b/src/assets/software/logo-fences.png similarity index 100% rename from assets/software/logo-fences.png rename to src/assets/software/logo-fences.png diff --git a/assets/software/logo-mytube.png b/src/assets/software/logo-mytube.png similarity index 100% rename from assets/software/logo-mytube.png rename to src/assets/software/logo-mytube.png diff --git a/assets/software/logo-notion.png b/src/assets/software/logo-notion.png similarity index 100% rename from assets/software/logo-notion.png rename to src/assets/software/logo-notion.png diff --git a/assets/software/logo-pocket-casts.png b/src/assets/software/logo-pocket-casts.png similarity index 100% rename from assets/software/logo-pocket-casts.png rename to src/assets/software/logo-pocket-casts.png diff --git a/assets/software/logo-remote-fingerprint-unlock.png b/src/assets/software/logo-remote-fingerprint-unlock.png similarity index 100% rename from assets/software/logo-remote-fingerprint-unlock.png rename to src/assets/software/logo-remote-fingerprint-unlock.png diff --git a/assets/software/logo-start10.png b/src/assets/software/logo-start10.png similarity index 100% rename from assets/software/logo-start10.png rename to src/assets/software/logo-start10.png diff --git a/assets/software/logo-wallpaper-engine.png b/src/assets/software/logo-wallpaper-engine.png similarity index 100% rename from assets/software/logo-wallpaper-engine.png rename to src/assets/software/logo-wallpaper-engine.png diff --git a/assets/software/logo-windows-terminal.png b/src/assets/software/logo-windows-terminal.png similarity index 100% rename from assets/software/logo-windows-terminal.png rename to src/assets/software/logo-windows-terminal.png diff --git a/assets/software/logo-xodo.png b/src/assets/software/logo-xodo.png similarity index 100% rename from assets/software/logo-xodo.png rename to src/assets/software/logo-xodo.png diff --git a/assets/software/logo-your-phone.png b/src/assets/software/logo-your-phone.png similarity index 100% rename from assets/software/logo-your-phone.png rename to src/assets/software/logo-your-phone.png diff --git a/assets/software/logo-youtube-vanced.png b/src/assets/software/logo-youtube-vanced.png similarity index 100% rename from assets/software/logo-youtube-vanced.png rename to src/assets/software/logo-youtube-vanced.png diff --git a/assets/video_games/logo-nintendo-switch.png b/src/assets/video_games/logo-nintendo-switch.png similarity index 100% rename from assets/video_games/logo-nintendo-switch.png rename to src/assets/video_games/logo-nintendo-switch.png diff --git a/assets/video_games/logo-pc.jpeg b/src/assets/video_games/logo-pc.jpeg similarity index 100% rename from assets/video_games/logo-pc.jpeg rename to src/assets/video_games/logo-pc.jpeg diff --git a/assets/video_games/logo-ps4.jpg b/src/assets/video_games/logo-ps4.jpg similarity index 100% rename from assets/video_games/logo-ps4.jpg rename to src/assets/video_games/logo-ps4.jpg diff --git a/assets/video_games/steam.jpg b/src/assets/video_games/steam.jpg similarity index 100% rename from assets/video_games/steam.jpg rename to src/assets/video_games/steam.jpg diff --git a/src/blog.html b/src/blog.html new file mode 100644 index 0000000..80d3b92 --- /dev/null +++ b/src/blog.html @@ -0,0 +1,84 @@ + + + + + Blog + + + + + +
+
+
+

Blog Posts

+
+
+
+
+
+ Docker Whale +
+

+ Getting Started with Docker +

+

+ A brief introduction to docker, how to use it, + and what you can do with it. +

+
+
+
+ +
+
+ + + + diff --git a/src/blog_docker.html b/src/blog_docker.html new file mode 100644 index 0000000..dee8890 --- /dev/null +++ b/src/blog_docker.html @@ -0,0 +1,425 @@ + + + + + Docker + + + + + +
+
+
+ +
+
+ +

Getting Started with Docker

+ + +

Updated on March 18, 2020

+ + +
+ +
+ +
+ + +

Introduction

+

+ 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. +

+ +
+ +
+ +
+ +

Installing Docker

+

+ 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. +

+ + +

Docker Toolbox & WSL

+

+ 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. +

+ +

Installing WSL

+

+ 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. +

+ +

Setting Up Docker Toolbox with WSL

+

+ 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. +

+ +

Shared Folder Configuration for Volume Mounting

+

+ 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. +

+ + +

Increase Docker Machine Resources

+

+ 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. +

+ +
+ +

+ Building Images & Running Containers +

+

+ 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. +

+
+ +
+ +
+ +

+ X Forwarding for GUI Applications +

+

+ 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
+                        
+                    
+ +
+ +

+ Helpful Docker Commands +

+
    +
  • System Prune to clear space on Docker Machine
  • +
      +
    • docker system prune --volumes
    • +
    +
+ +
+ +

Conclusion

+

+ 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. +

+ +
+
+
+ +
+
+
+ + + + diff --git a/src/common/footer.html b/src/common/footer.html new file mode 100644 index 0000000..5c81df2 --- /dev/null +++ b/src/common/footer.html @@ -0,0 +1,15 @@ +
+
+
+ + Copyright © 2019 Sravan Balaji under + MIT License + +
+
+
diff --git a/common/footer.txt b/src/common/footer.txt similarity index 54% rename from common/footer.txt rename to src/common/footer.txt index 0d0c1ed..9cd85b3 100644 --- a/common/footer.txt +++ b/src/common/footer.txt @@ -1 +1 @@ -document.write('
Copyright © 2019 Sravan Balaji under MIT License
') \ No newline at end of file +document.write('
Copyright © 2019 Sravan Balaji under MIT License
') \ No newline at end of file diff --git a/src/common/header.html b/src/common/header.html new file mode 100644 index 0000000..d2ec1e3 --- /dev/null +++ b/src/common/header.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + diff --git a/src/common/header.txt b/src/common/header.txt new file mode 100644 index 0000000..c580d34 --- /dev/null +++ b/src/common/header.txt @@ -0,0 +1 @@ +document.write(' ') \ No newline at end of file diff --git a/src/common/navbar.html b/src/common/navbar.html new file mode 100644 index 0000000..1dfc228 --- /dev/null +++ b/src/common/navbar.html @@ -0,0 +1,161 @@ + diff --git a/src/common/navbar.txt b/src/common/navbar.txt new file mode 100644 index 0000000..85aa165 --- /dev/null +++ b/src/common/navbar.txt @@ -0,0 +1 @@ +document.write(' ') \ No newline at end of file diff --git a/src/documentation.html b/src/documentation.html new file mode 100644 index 0000000..4124dd1 --- /dev/null +++ b/src/documentation.html @@ -0,0 +1,367 @@ + + + + + Documentation + + + + + +
+ +
+
+ +
+
+
+

+ My idea for this website started simply as a way for + me to present my professional portfolio. As I + started learning HTML and looking at other websites + for inspiration, I decided to make it my own and add + in the personal page with some of my recommendations + and favorite things. Additionally, I noticed that + very few people had any documentation on how/where + they learned web design. While git repos were + generally made public, it was hard for someone to + understand what was going on if they weren't already + familiar with the framework or language being used. + Thus, I decided to create a documentation page which + will hopefully help others who are interested in + making their own website do so using what I have + learned from friends I have talked to. It also helps + me save some useful links in a way that others can + see and understand the use case for. +

+ +

+ This website was originally designed in HTML with + some CSS for styling. However, I ran into issues + with scalability and mobile browser support. See + Web Design below for my + current implementation method and some other cool + things that I have discovered through my learning + process that you may find interesting. +

+
+
+
+ + +
+
+ +
+
+
+

Purchasing a Domain Name

+

+ Per + Yash Vesikar's recommendation, I used + Google Domains + to purchase the + sravanbalaji.com + domain for $12 per year. +

+
+
+
+
+

Hosting Website

+

+ There are a couple of options I have found for + hosting my website (for free). As a U of M student, + I am able to create my own UM Web Page hosted on U + of M Servers or create a personal site hosted by + Google through the + U-M Google collaboration. I have not looked into the Google Sites option, + but there is + documentation + available if you are interested. I originally opted + to create my own site and host it on U of M Servers. + Information on how to do this can be found on the + UMICH Information and Technology Services + website. Some limitations I found with this were that I + would have to manually upload my website files to + the afs directory as the SFTP process described did + not work for me. Additionally, the domain name for U + of M hosted websites take the form + http://www-personal.umich.edu/~youruniqname/ + which is clearly not ideal. You can sort of get + around this by enabling + web forwarding + on Google Domains. All this does is redirect traffic + from your custom domain to the U of M domain. This + might be ok for you, but I would prefer to have my + website show up at the domain I purchased. Per + Yash Vesikar's recommendation, I looked into + GitHub Pages + to host my website directly from a GitHub + repository. This comes with the added benefit that + changes are live as soon as you push them to the + master branch of your + <username>.github.io + repository. I found + Trent Yang's post + about setting up Google Domains for GitHub pages + very useful. +

+
+
+
+ + +
+
+ +
+
+
+

Bootstrap Framework

+

+ When I first made this website, it was implemented + in HTML and CSS without the use of a framework. This + gave me a lot of custom control over every aspect, + but it made some things unnecessarily tedious and + difficult. One example of this is the navigation + bar. Trying to implement that without a framework is + more difficult than it needs to be. Another issue I + ran into was compatibility with mobile browsers. Per + Tianhong (Sam) Wen's recommendation, I looked into + Bootstrap. This has built-in responsive classes that + can auto adjust the size and placement of elements + based on the screen size. It also provides an easy + way to implement some cool features like the navbar, + accordion-like cards, and a grid layout to easily + place images and text around your website's + viewport. +

+
+
+
+
+

Reusing HTML

+

+ The easiest way I found to reuse HTML code is via + JavaScript as described in + Page Headers And Footers. This is by no means the most elegant or + automated, but it was the only method I could get to + actually work. If you don't want to go through the + hassle of manually removing line breaks, you can use + this handy online text converter from + Text Fixer. +

+
+
+
+
+

Display Resume PDF in Website using GitHub

+

+ I have the latest version of my + resume stored + in a public + + GitHub repository, but I wanted an easy way to share it directly on + my website. This led me to look for ways to embed a + PDF in HTML. This works great for local files, but + not so great for PDFs stored in a repository. The + trick is to get the link to the raw PDF file from + GitHub and to use Google Drive PDF Viewer. This is + outlined in + Kekayan's Medium post. +

+
+
+
+ + +
+
+ +
+
+
+

Color Scheme

+
+
+
+
+ +
+
+

+ I used the primary palette colors from + University of Michigan Design Resources + and generated a cool color scheme using + coolors. +

+
+
+
+
+

Logo

+
+
+
+
+ +
+
+ +
+
+

+ I designed my logo for free on + hatchful. My main purpose for this was to have a nice + looking favicon for my website on browsers as well + as for the home page icon in the navbar. +

+
+
+
+ + +
+
+ +
+
+
+ Content, design, and implementation were inspired by the + following sources + +
+
+
+
+ + + + diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..7f5f5b4 --- /dev/null +++ b/src/index.html @@ -0,0 +1,50 @@ + + + + + Sravan Balaji + + + + + +
+
+
+

Welcome!

+

+ Welcome to my personal website! For information on how + this website was created and hosted, please see the + documentation + page.

+ + This website is currently a work in progress and updates + will be made as I find time. You can follow development + and make suggestions on + GitHub. +

+
+
+
+ + + + diff --git a/src/personal.html b/src/personal.html new file mode 100644 index 0000000..3b66ba0 --- /dev/null +++ b/src/personal.html @@ -0,0 +1,1589 @@ + + + + + Personal + + + + + +
+ +
+
+
+

Software

+
+
+
+
+ + + +
+
+

+ Visual Studio Code +

+

Platform: Windows, Linux, Mac

+

+ Visual Studio Code is currently my favorite editor + for most programming applications I work on. I have + previously tried + Sublime Text, + Notepad++, and + Vim + as my primary text editors, but I was never fully + satisfied with their functionality. When I first + started using VS Code, I wasn't convinced by it + either. It looked like just another text editor with + no special features. Over time, Microsoft has done a + great job of improving stability, speed, and + functionality. The feature that finally made the + decision for me was the community support for + extensions. If you are a die hard Vim user for + example, there's a Vim emulation extension that + should ease the transition. I just love the overall + aesthetic, auto-completion, and sheer number of + features available. It runs on every platform you + could conceivably develop on and it looks great! + Don't plan on switching editors any time soon! Check + out some of my favorite extensions and customization + options below. If you are using + chocolatey, you can install + VS Code + with choco install vscode. +

+ +
+
+

General Extensions

+ +
+
+

Development Specific Extensions

+ +
+
+

Font

+

+ My current favorite font for development and + general use is + FiraCode. I love the style and ligatures for common + character sequences such as comparisons and + arrows (e.g. >=, ->, and ==>). +

+ Follow the + installation instructions + for your platform. If you are using + chocolatey, you can install + FiraCode + with + choco install firacode-ttf. +

+ Then follow the + VS Code instructions + to enable the font in the editor. +

+
+
+
+
+
+
+ + + +
+
+

+ Notion +

+

Platform: Web App, Mac, Windows, iOS, Android

+

+ This is my current favorite productivity app. I use + it to keep track of things like homework, personal + tasks, gift ideas, shopping lists, personal wish + lists, upcoming video games, etc. I previously used + Trello + and + Google Keep + to track tasks and random bits of information, but + Notion has been a game changer. While the full + experience is locked behind a paywall, you can get + the paid tier for free if you have a university + (.edu) email. If you haven't already, I would + suggest giving it a try. Use this + referral link + to get some free credit on your account to use if + you decide to use any of the paid tiers. If you are + using + chocolatey, you can install + Notion + with choco install notion. +

+
+
+
+
+ + + +
+
+

+ Clatter +

+

Platform: Windows

+

+ Have you ever wondered if there was an app to + combine all of your messaging apps into 1? Well, + Clatter is the answer. I used to keep multiple tabs + and programs open so I could see all of my messaging + services at once, but with Clatter, they are all + neatly packaged in one application. Any messaging + service with a web app can be accessed through + Clatter. Give it a try, I'm sure you will enjoy it + as much as I do. +

+
+
+
+
+ + + +
+
+

+ Windows Terminal +

+

Platform: Windows

+

+ If you have ever felt that the default windows + terminal could use a refresh, you are in luck! + Microsoft has been working on an updated version of + Windows Terminal that provides tabs for Command + Prompt, PowerShell, and WSL. It also offers a + faster, better looking, windows terminal experience. + At the time of writing, Windows Terminal is still in + preview, but hopefully the full version will be + released to everyone soon. If you are using + chocolatey, you can install + Windows Terminal + with + choco install microsoft-windows-terminal. +

+
+
+
+
+ + + +
+
+

+ Chocolatey +

+

Platform: Windows

+

+ Chocolatey is Windows's answer to + Homebrew. It is essentially a package manager that allows + you to easily track and upgrade/install/uninstall + programs on Windows. You can easily install any + programs you need via command prompt and avoid the + tedious installation wizard. Just search + chocolatey's list of packages, run terminal + as Administrator, and run + choco install package_name. +

+
+
+
+
+ + + +
+
+

+ Wallpaper Engine +

+

Platform: Windows

+

+ Wallpaper Engine is amongst my favorite programs on + this list. If you have ever seen live wallpapers on + phones and thought can I get that on my PC?, + this is the program for you. At a regular price of + $3.99, I cannot recommend this enough. Fair warning, + this will drain your battery and RAM if you plan on + running it at its highest settings with animations + and other compute heavy settings. On my laptop, I + changed the settings so the wallpaper is static when + unplugged, but animated and reactive when plugged + in. There are some memory saving options that can + pause the program when another program is in + full-screen and in-focus to improve battery life and + performance. +

+
+
+
+
+ + + +
+
+

+ Fences +

+

Platform: Windows

+

+ Fences is a desktop management software that allows + you to group your desktop icons into fences. + These fences can be rolled up so they are tucked + away neatly into a corner, allowing you to view your + desktop wallpaper while still being able to access + your shortcuts when you need to. I really like + Fences because it keeps my desktop clutter-free and + I get to look at my amazing wallpaper (see + Wallpaper Engine). I + purchased Fences on + Steam, but you can also get it directly from + Stardock's website. Would definitely recommend getting it if you have + a cluttered desktop. +

+
+
+
+
+ + + +
+
+

+ Start10 +

+

Platform: Windows

+

+ I wasn't actually interested in Start10 when I first + got it. I got it in a bundle with + Fences. The gist of Start10 is + that it allows you to customize the way your taskbar + looks and the style of start menu you would like. + The options are Windows 7, Windows 10, or Modern. + Windows 7 has the classic search bar and list of + applications. Windows 10 has the list of programs + and start menu tiles introduced in Windows + 10. Modern style is a bit of a hybrid. It has the + application list from Windows 7, but the theme looks + more like Windows 10. I personally prefer Windows 10 + style because of the tiles that easily let + you launch your favorite apps. I wouldn't + necessarily recommend getting Start10 on its own as + I don't see much value in it, but it is a nice + addition if you have ever wanted to change the look + of your taskbar or start menu. +

+
+
+
+
+ + + +
+
+

+ Pocket Casts +

+

Platform: Web App, iOS, Android

+

+ This is my preferred Podcast app. I have it on my + Android phone and I use the Windows app on my + desktop and laptop. I purchased the web app and + android app prior to the newsubscription + model that Pocket Casts has implemented. While I + don't agree with this new pay structure, I + appreciate that they have implemented a free tier + that has the majority of features that most people + will need. +

+
+
+
+
+ + + +
+
+

+ YouTube Vanced +

+

Platform: Android

+

+ I discovered this on a MEGA PRO TIPS post on + r/galaxys10 + (tip 29). All relevant information on what apps to + download and a fix for a login issue can be found in + the reddit post. The gist of the app is that it + removes ads from YouTube on your android phone and + you can play music while your screen is off for + free. +

+
+
+
+
+ + + +
+
+

+ Xodo +

+

Platform: Web App, iOS, Android, Windows

+

+ This is the best PDF editor/reader I have found that + doesn't require a paid subscription (unlike Adobe) + for all of its features. You can easily write/edit, + fill out forms, and add digital signatures. All for + free. +

+
+
+
+
+ + + +
+
+

+ myTube! +

+

Platform: Windows

+

+ Similar to + YouTube Vanced, this + app removes ads from YouTube. The main difference + here is that myTube! is a Windows app rather than an + Android app. You should also check out + UWP Companion + so you can redirect YouTube links from your web + browser to myTube. +

+
+
+
+
+ + + +
+
+

+ Microsoft Edge +

+

Platform: Windows, macOS, iOS, Android

+

+ I have been using the development build of the new + Microsoft Edge since around June 2019 and have + generally enjoyed it. It will be very familiar for + those coming from Chrome since it is also based on + Chromium. The main reason I like it is for its speed and + reduced RAM usage. I haven't done any official tests + comparing performance, but it subjectively seems + more responsive. Additionally, most if not all + Chrome extensions can be used on the new Edge, so + that should help ease the transition for those who + can't live without them. One of Microsoft's main + selling points for the new Edge is privacy features. + Overall, there are still a few issues I have + encountered like links in google searches not + opening properly, but I can put up with that for the + performance improvement. Finally, you will want to + change the default search engine to google unless + you plan on using Bing for those + Microsoft Rewards + points. If you are using + chocolatey, you can install + Microsoft Edge + with choco install microsoft-edge. +

+
+
+
+
+ + + +
+
+

+ Your Phone +

+

Platform: Windows, Android

+

+ Your Phone from Microsoft is the answer to my + long-term need for a way to interact with my phone + from my PC (not you + Samsung DeX). At the time of writing, this isn't supported on + all android devices, but it works with my Samsung + Galaxy S10+. The main feature I use is viewing my + phone's notifications on my PC, but they have also + implemented Phone Screen which let's you interact + with you phone via mouse and keyboard (or touch + screen if you have it). If you have a supported PC + and phone, you will need to download the + Android App + and the + Windows App. If you have ever wanted a better way to integrate + your desktop/laptop and phone experience, this is + it. +

+
+
+
+
+ + + +
+
+

+ Remote Fingerprint Unlock +

+

Platform: Windows, Android

+

+ I discovered Remote Fingerprint Unlock recently, but + in my short time with it, I absolutely love it. When + Google announced the + Pixelbook + back in 2017, needless to say I was very + disappointed to hear that the great hardware would + be paired with Chrome OS. One feature I wished I had + on Windows + Android was the ability to unlock the + Pixelbook with an Android Phone. With this app, you + can do just that. You'll need the + Android App + and the + Windows Program. If you get the Pro version, you can even use the + Wake-on-LAN + feature. +

+
+
+
+
+ + + +
+
+

+ Ditto Clipboard Manager +

+

Platform: Windows

+

+ I first learned of Ditto from + Nick Janetakis's post on + Boosting Software Developer Productivity with a + Clipboard Manager. I used to struggle with the limitation of only + having one item copied in my clipboard at a time, + but Ditto provides a light and simple solution. You + can copy as many things as you want with + ctrl+c as usual. When you want to + paste, simply open Ditto and select the item you + want to paste! If you are using + chocolatey, you can install + Ditto + with choco install ditto. +

+
+
+
+ + +
+
+
+

Hardware

+
+
+
+
+ +
+
+

+ Desktop PC: Custom +

+

+ A full list of my desktop PC build components can be + found on + PCPartPicker. My current build has stayed largely the same from + when I first built it, with the exception of the + peripherals and monitors. I have upgraded my + keyboard, mouse, and speakers over the past couple + of years as I found deals. +

+
+
+
+
+ +
+
+

Laptop: HP Spectre x360 15"

+

+ My laptop is mainly used for school. I wanted a + touchscreen so I could take digital written notes in + class and I needed a good processor and dedicated + graphics card for + CAD + software and for general programming applications. I + landed on the HP Spectre x360 because it had a great + balance of specs, amazing display, touch screen, and + very nice typing experience for a reasonable price. + I was initially leaning towards a Razer Blade or + Microsoft's Surface Book. The former would be great + for school and for gaming, but it isn't great for + taking handwritten digital notes. The latter is + similar to the Spectre in regards to specs, but has + a favorable display ratio. The main reason I chose + against it in the end was the high price relative to + the Spectre. I was able to get very comparable specs + for a much lower price with the Spectre. My laptop + is the 2016 model with Intel i7-7500U CPU, NVIDIA + GeForce 940MX GPU, and 16 GB RAM. The newer models + have thinner bezels, diamond-cut corners, updated + specs, and better trackpad drivers. I got around + this issue by + + installing Microsoft's Precision Trackpad + drivers + myself as the pre-installed Synaptics drivers are + not great. +

+
+
+
+
+ +
+
+

Tablet: Microsoft Surface Go

+

+ The Surface Go is primarily used as a + secondary-device and tablet. I use it for media + consumption and occasional e-book reading. It is by + no means powerful enough to act as my primary + device, but I like it as a secondary device that I + will occasionally use. If you do end up going with + the Surface Go, make sure you + turn off S mode + to be able to install apps that aren't on the + Microsoft Store. If you are a Costco member, I would + recommend looking at the + Surface Type Cover bundle. This bundle has a 128 GB SSD, 4GB RAM, Intel + Pentium Gold 4415Y CPU, and includes the type cover. +

+
+
+
+
+ +
+
+

Phone: Samsung Galaxy S10+

+

+ Got the Galaxy S10+ on sale on Amazon's Prime Day. + My previous phone was a Pixel 2XL which I really + liked, but I decided to switch to a Galaxy after the + Pixel 3 was a bit of a disappointment and the Pixel + 4 wouldn't come out until later in the year. Other + phones I considered, but ultimately decided against + were the OnePlus 7 Pro and Samsung Galaxy Note 9. In + retrospect, I would have waited to replace my Pixel + 2XL until the Galaxy Note 10+ came out and the price + dropped down to something reasonable. However, I am + happy with my decision as is. +

+
+
+
+
+ +
+
+

Watch: Samsung Galaxy Watch

+

+ I previously had a Moto 360 Sport smartwatch, but + the performance was extremely disappointing. After + looking at other Android wear devices, I didn't feel + that another compelling watch on the level of the + Apple Watch for iPhones existed. Thus, I decided to + switch to the Galaxy watch. My primary impressions + of Tizen OS vs Android Wear is the lack of supported + apps. I have found that this really isn't that big + of a deal as it has great media controls for your + phone and the amazing rotating bezel interface. This + is by far the superior input method for watches and + I feel that all watches should have some variant of + this. Overall, the performance is great and I have + come to appreciate Samsung's brand of apps for my + phone and watch. +

+
+
+
+
+ +
+
+

Wireless Earbuds: Samsung Galaxy Buds

+

+ I found these on sale at Costco and heard that the + audio quality was among the best for the price. I + love that they also have audio passthrough so you + can hear your environment when necessary, or keep + noise cancelling on. They fit nice in my ears and + don't fall out. My only grip is that the mic isn't + that great for taking phone calls. Integrates well + with my Galaxy Watch and Galaxy S10+. My one grip is + the battery life. Samsung reports 6 hours of charge + in the earbuds and 7 hours in the case. In my + experience, this is pretty accurate. Don't expect + long, continuous music sessions. +

+
+
+
+
+ +
+
+

Wireless Headphones: Sony WH-1000XM3

+

+ I actually purchased the WH-1000XM2's myself before + the XM3's came out, but the XM3's are an improvement + in every way and well worth the price. Sound quality + is amazing, noise cancelling is excellent, and it + has audio passthrough in case you need to hear your + environment. If you need wireless bluetooth + headphones, this is it. You can get these headphones + for around $290 on + Drop. My favorite feature is definitely the battery + life. Sony reports 30 hours of charge. If you will + be away from an outlet for an extended period of + time and plan on using your headphones a lot, these + are great. +

+
+
+
+ + +
+
+ +
+
+
+

Gaming Platform Profiles

+
+
+
+
+ + + +
+
+
+
Steam: sr98vn
+
+
+
+

Favorite Games

+
+
+
+
+ +
+
+
    +
  • The Legend of Zelda: Breath of the Wild
  • +
  • Fire Emblem: Three Houses
  • +
  • Super Smash Bros. Ultimate
  • +
  • Octopath Traveler
  • +
+
+
+
+
+ +
+
+
    +
  • God of War
  • +
  • Marvel's Spider-Man
  • +
  • Bloodborne
  • +
+
+
+
+
+ +
+
+
    +
  • The Witcher III: Wild Hunt
  • +
  • The Elder Scrolls V: Skyrim
  • +
  • Dark Souls 1 (Remastered) & 3
  • +
  • Borderlands 2
  • +
  • Star Wars: Jedi Fallen Order
  • +
  • Minecraft
  • +
  • Red Dead Redemption 2
  • +
  • The Sims 3
  • +
  • Monster Hunter: World
  • +
+
+
+
+ + +
+
+
+

Podcasts

+
+
+
+
+ + + +
+
+

+ AI Podcast (Lex Fridman) +

+

+ As an aspiring roboticist, I'm very interested in + the state of the art in artificial intelligence, + machine learning, and robotics. The AI podcast, + hosted by Lex Fridman, is a series of conversations + with prominent members in the field of AI, science, + and technology at MIT and in industry. +

+
+
+
+
+ + + +
+
+

+ The Bill Simmons Podcast (The Ringer) +

+

+ As a New England Patriot's fan (most because of Tom + Brady), I really enjoy this (perhaps too + Boston-centric) sports podcast. Bill Simmons grew up + in the New England area and supports all of the + Boston teams, although he currently lives in Los + Angeles. I enjoy his conversations with friends and + family about the week's events in sports, generally + focused on NFL and NBA. He occasionally has + celebrity guests and sometimes brings guests on to + talk about TV and movies. +

+
+
+
+
+ + + +
+
+

+ Football Weekly (The Guardian) +

+

+ I love the light-hearted and sometimes comedic news + and analysis of Premier League (and others) matches. + The rotating cast of football journalists and + long-time hosts are thoroughly enjoyable to listen + to every week. Definitely recommend this podcast for + any football (soccer) fans. +

+
+
+
+
+ + + +
+
+

+ Giant Bombcast (Giant Bomb) +

+

+ The Giant Bombcast is a great podcast for video game + fans. They discuss video game news, latest releases, + and sometimes stuff completely unrelated. Very fun + to listen to throughout the week as each episode is + pretty long. +

+
+
+
+
+ + + +
+
+

+ The Vergecast (The Verge) +

+

+ The Vergecast is perhaps my favorite podcast of any + genre. The hosts discuss the week's tech news and + other nerdy topics as well as interviews with tech + leaders. Cannot recommend this enough. +

+
+
+
+
+ + + +
+
+

+ Wait Wait... Don't Tell Me! (NPR) +

+

+ This is my favorite news/comedy podcast. I love + hearing about the week's wacky stories and the + rotating panel of comedians' opinions on world + events. +

+
+
+
+
+ + + +
+
+

+ The Daily (The New York Times) +

+

+ My go to for the major news events of the day (as + implied by the name). It's ready every weekday by 6 + AM and generally doesn't run longer than 30 minutes. + Great way to start the day. +

+
+
+
+
+ + + +
+
+

+ Dan Carlin's Hardcore History (Dan Carlin) +

+

+ This is long-form historical discussion and + analysis. If you are interested in diving deep into + historical events from the perspective of someone + who knows how to tell a story, this is the podcast + for you. Episodes are generally 4 to 5 hours long + and aren't released very often as they require an + enormous amount of research. +

+
+
+
+
+ + + +
+
+

+ Throughline (NPR) +

+

+ The premise of Throughline is exploring how we can + look at the past to understand the present. The + hosts are awesome and always find very interesting + stories in the past relating to current events that + help put things in perspective. +

+
+
+
+
+ + + +
+
+

+ Invisibilia (NPR) +

+

+ I'm not entirely sure how to describe this podcast. + According to the podcast description, Invisibilia is + about the unseeable forces that control human + behavior and shake our ideas, beliefs, and + assumptions. Definitely very interesting and + different from most of the other podcasts I listen + to. +

+
+
+
+ + +
+
+
+

Music

+
+
+
+
+

Spotify Playlist

+

+ These are my current (approximately 100) favorite + songs. +

+
+
+
+
+ +
+
+
+
+ + + + diff --git a/src/portfolio.html b/src/portfolio.html new file mode 100644 index 0000000..fdf4da3 --- /dev/null +++ b/src/portfolio.html @@ -0,0 +1,1422 @@ + + + + + Portfolio + + + + + +
+ +
+
+
+

Resume

+
+
+
+
+ +
+
+
+ + +
+
+
+

Education

+
+
+ + +
+
+

University of Michigan (Ann Arbor, MI)

+
+
+
+
+ +
+
+ + + +
+
+

B.S.E. in Mechanical Engineering

+
September 2016 - December 2020
+

+ GPA: 3.757
+ Focus: Controls
+

+
+
+ +
+
+ + + +
+
+

B.S.E. in Computer Science

+
September 2016 - December 2020
+

+ GPA: 3.757
+ Focus: Intelligent Systems
+

+
+
+
+
+
+
+ + +
+
+
    +
  • + ALA 105 - Digital + Research: Critical Concepts & + Strategies +
  • +
  • + ENGR 151 - Accelerated + Introduction to Computers and + Programming +
  • +
  • + MATH 216 - Introduction + to Differential Equations +
  • +
  • + SOC 100 - Introduction to + Sociology +
  • +
+
+
+ + + +
+
+
    +
  • + CLCIV 385 - Greek + Mythology +
  • +
  • + EECS 203 - Discrete + Mathematics +
  • +
  • + ENGR 100 - Introduction + to Engineering: Solar Energy and + Self-Powered Wireless Systems +
  • +
  • + MECHENG 211 - + Introduction to Solid Mechanics +
  • +
+
+
+ + + +
+
+
    +
  • + EECS 280 - Programming + and Introductory Data Structures +
  • +
  • + MECHENG 235 - + Thermodynamics I +
  • +
  • + MECHENG 240 - + Introduction to Dynamics and + Vibrations +
  • +
  • + MECHENG 250 - Design and + Manufacturing I +
  • +
+
+
+ + + +
+
+
    +
  • + EECS 281 - Data + Structures and Algorithms +
  • +
  • + EECS 314 - Electrical + Circuits, Systems, and + Applications +
  • +
  • + EECS 370 - Introduction + to Computer Organization +
  • +
  • + MECHENG 320 - Fluid + Mechanics I +
  • +
+
+
+ + + +
+
+
    +
  • + MECHENG 350 - Design and + Manufacturing II +
  • +
  • + MECHENG 360 - Modeling, + Analysis, and Control of Dynamic + Systems +
  • +
  • + MECHENG 382 - Mechanical + Behavior of Materials +
  • +
+
+
+ + + +
+
+
    +
  • + EECS 201 - Computer + Science Pragmatics +
  • +
  • + EECS 376 - Foundations of + Computer Science +
  • +
  • + EECS 442 - Computer + Vision +
  • +
  • + MECHENG 395 - Laboratory + I +
  • +
  • + STATS 412 - Introduction + to Probability & Statistics +
  • +
+
+
+ + + +
+
+
    +
  • + EECS 492 - Introduction + to Artificial Intelligence +
  • +
  • + MECHENG 335 - Heat + Transfer +
  • +
  • + MECHENG 450 - Design and + Manufacturing III +
  • +
  • + MECHENG 461 - Automatic + Control +
  • +
+
+
+ + + +
+
+
    +
  • + EECS 467 - Autonomous + Robotics +
  • +
  • + EECS 496 - Major Design + Experience Professionalism +
  • +
  • + MECHENG 561 - Design of + Digital Control Systems +
  • +
  • + ROB 530 - Mobile + Robotics: Methods & Algorithms +
  • +
+
+
+ + + +
+
+
    +
  • + EECS 445 - Introduction + to Machine Learning +
  • +
  • + EECS 493 - User Interface + Development +
  • +
  • + MECHENG 495 - Laboratory + II +
  • +
  • + ROB 511 - Robot Operating + Systems +
  • +
+
+
+
+
+
+
+
+ + +
+ + + +
+
+
+
+ + + +
+
+

Rivian

+

ADAS Controls Intern

+

Remote

+
June 2020 - August 2020
+ Hard Skills: + + Soft Skills: +
    +
  • Public Presentation
  • +
  • Design Documentation
  • +
  • Professional Communication
  • +
+
+
+
+
+
+
+ + +
+
+

Problem

+

+ Existing software components needed + to be tested to ensure that + requirements were being met. +

+

Task

+

+ My job was to translate software + component requirements into + Model-in-Loop unit tests in + Simulink. +

+

Result

+

+ Created Model-in-Loop test cases for + ~50 requirements using + Simulink test. I was able to identify and + resolve 7 issues at the model level + to prevent them from reaching + in-vehicle testing. To improve + testing, I created a script to + automatically run all test cases and + generate a report for easy + identification of issues. Also + created documentation in + Confluence + to streamline future test case + generation. +

+
+
+ + + + + +
+
+

Problem

+

+ Vehicle testing data needed to be + processed to evaluate performance + against requirements and determine + controls parameters to tune. +

+

Task

+

+ My job was to modify existing data + processing scripts to work with new + test data. +

+

Result

+

+ I was able to map the signals from + new test data logs to work with the + existing scripts and manually + calculate intermediate signals that + were not recorded. This allowed me + to generate plots that could easily + be compared to previous test runs. + From these plots, I identified + potential issues that could be + investigated by the controls team. +

+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+
+

Hughes Network Systems

+

Software Development Intern

+

San Diego, CA

+
May 2019 - August 2019
+ Hard Skills: +
    +
  • Embedded Programming in C
  • +
  • C# and .NET Framework
  • +
      +
    • GUI Design
    • +
    • + REST + Requests & + FTP +
    • +
    +
  • Network Communication
  • +
      +
    • + TCP + and + UDP +
    • +
    • + MQTT-SN +
    • +
    +
+ Soft Skills: +
    +
  • Public Presentation
  • +
  • Design Documentation
  • +
  • Professional Communication
  • +
+
+
+
+
+
+
+ + +
+
+

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." +

+
+ Hughes Customer +
+
+
+
+ + +
+
+

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. +

+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+
+
+
+

Rivian

+

Business Technology Intern

+

Plymouth, MI

+
May 2018 - December 2018
+ Hard Skills: + + Soft Skills: +
    +
  • Stakeholder Interviews
  • +
  • Design Documentation
  • +
  • Professional Communication
  • +
+
+
+
+
+
+
+
+
+ + +
+
+

Problem

+

+ Rivian had an existing process for + analyzing bill of materials data + that needed to be further developed + and maintained. +

+

Task

+

+ My job was to communicate with + project management to determine and + implement improvements to mass and + cost analysis. +

+

Result

+

+ I improved the existing Excel Macro + to check for inconsistencies between + parent and child items so mass and + cost was not double counted. + Additionally, improved the user + interface by adding macro buttons to + allow for quick filtering of pivot + tables and highlight potential + discrepancies. +

+
+
+ + +
+
+

Problem

+

+ Requirements management in + JAMA + was very much a manual process to + check for inconsistent relationships + between the different types of + requirements. +

+

Task

+

+ I proposed an automated system that + would enforce relationships set by + the systems engineering team and + highlight issues that required + manual intervention. +

+

Result

+

+ I designed and implemented an + internal-use website that collected + and displayed data from business + systems like + JAMA. This made use of + JAMA's + REST + API + to automatically pull requirements + metadata and enforce the determined + relational rules. Additionally + integrated Bill of Materials + analysis macro into website so users + would receive the processed + spreadsheet via email. Front-end + design was written in HTML and + back-end scripts were written in + Python + using the + Django Web Framework. +

+
+
+ + +
+
+

Problem

+

+ Rivian's previous IT service desk in + KACE Systems Management + had issues tracking the status of + tickets resulting in an + SLA + met percentage of ~75%. +

+

Task

+

+ My job was to migrate the IT service + desk to + Jira + and improve the ticket tracking + process. +

+

Result

+

+ I created custom automation rules to + assign tickets based on request type + and location. Created queues and + reports to track response time, + workload, request types, and other + metrics. These efforts resulted in + an + SLA + met percentage of ~95%. +

+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+
+
+
+

Rivian

+

Vehicle Integration Intern

+

Livonia, MI

+
June 2017 - August 2017
+ Hard Skills: +
    +
  • Java
  • +
  • Data Analysis
  • +
  • + Systems Engineering / + Requirements Management +
  • +
  • IBM Rational DOORS
  • +
+ Soft Skills: +
    +
  • Design Documentation
  • +
  • Professional Communication
  • +
+
+
+
+
+
+
+
+
+ + +
+
+

Problem

+

+ Rivian needed an organized way of + tracking interfaces between + components and managing + requirements. +

+

Task

+

+ My job was to create system + architecture models to help + distribute and track requirements + from the vehicle level to component + level. Additionally, these + requirements needed to be managed + and distributed via DOORS Next + Generation. +

+

Result

+

+ I was able to speak with managers of + various vehicle subsystems to + understand cross-system signal + interfaces. These conversations were + translated to system architecture + models so teams could understand + what signals they are consuming and + outputting. To aid in cross-team + communication, I created custom + report templates in DOORS Next + Generation. +

+
+
+ + +
+
+

Problem

+

+ Rivian had collected simulation test + data and needed to see the effect of + changing vehicle parameters on + performance metrics, without + re-running expensive tests. +

+

Task

+

+ My job was to develop a tool that + could translate the collected data + into a simple user interface to + analyze how to optimize vehicle + performance. +

+

Result

+

+ I designed and developed a GUI + program in Java that provided the + user with sliders for the input + vehicle parameters. The tool would + then interpolate the performance + metrics from the collected points + using a neural network determined + multi-variate function. The GUI tool + then outputs plots showing the + effect of changing each input on the + projected performance output. +

+
+
+
+
+
+
+ +
+
+
+
+
+
+ + + + + + +
+ + + + diff --git a/src/style/styles.css b/src/style/styles.css new file mode 100644 index 0000000..9e1465d --- /dev/null +++ b/src/style/styles.css @@ -0,0 +1,118 @@ +/*********** + * 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; + } +} + +#bio img { + max-height: 500px; +} + +#contact_me img { + max-height: 100px; +} + +#software img { + max-height: 200px; +} + +#hardware img { + max-height: 400px; +} + +#video_games img { + max-height: 250px; +} + +#podcasts img { + max-height: 200px; +} + +#resume iframe { + width: 100%; + height: 750px; +} + +#education img { + max-height: 225px; +} + +#professional_experience img { + max-height: 225px; +} + +#research img { + max-height: 400px; +} + +#projects img { + max-height: 400px; +} + +.blog-cover img { + max-height: 500px; + margin: auto; + display: block; +} diff --git a/web_pages/about.html b/web_pages/about.html deleted file mode 100644 index 8b4ce6c..0000000 --- a/web_pages/about.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - About - - - - - - - -
- -
-
-
-

Bio

-
-
-
-
- -
-
-

- I'm a Senior at the University of Michigan pursuing dual B.S.E.'s in Mechanical Engineering and Computer Science. I expect to graduate with both Bachelor's degrees in December 2020 and plan on continuing my education with a Master's in Robotics.

- - My professional and academic interests are in robotics, mechatronics, autonomous systems, and controls. I will be working at Rivian as an ADAS Controls Intern during the Summer of 2020.

- - My personal interests include video games, podcasts, music, cooking, football, soccer, and personal / project management software. You can check out some of my favorite video games, podcasts, music, and software on the Personal page.

- - My favorite sports teams, in ranked order, are: -

    -
  1. University of Michigan Sports
  2. -
  3. Arsenal F.C. (Premier League)
  4. -
  5. Detroit Sports Teams
  6. -
-

-
-
-
- -
-
-
-

- Feel free to reach out to me via email if you have any questions about my website, college education, professional experience, or anything else. If you have suggestions for the website or would like to see the source files, check out my GitHub repository. If you would like to connect with me on LinkedIn, use the link below. I will do my best to respond to any communication in a timely manner. -

-
-
-
- - -
-
-
- - Email - -

- Email: balajsra@umich.edu -

-
-
- - LinkedIn - -

- LinkedIn: sravan-balaji -

-
-
- - GitHub - -

- GitHub: balajsra -

-
-
-
-
- - - - \ No newline at end of file diff --git a/web_pages/blog.html b/web_pages/blog.html deleted file mode 100644 index 256babb..0000000 --- a/web_pages/blog.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - Blog - - - - - -
-
-
-

Blog Posts

-
-
-
-
-
- Docker Whale -
-

Getting Started with Docker

-

A brief introduction to docker, how to use it, and what you can do with it.

-
-
-
- -
-
- - - - \ No newline at end of file diff --git a/web_pages/documentation.html b/web_pages/documentation.html deleted file mode 100644 index 6021f4c..0000000 --- a/web_pages/documentation.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - Documentation - - - - - - - -
- -
-
- -
-
-
-

- My idea for this website started simply as a way for me to present my professional portfolio. As I started learning HTML and looking at other websites for inspiration, I decided to make it my own and add in the personal page with some of my recommendations and favorite things. Additionally, I noticed that very few people had any documentation on how/where they learned web design. While git repos were generally made public, it was hard for someone to understand what was going on if they weren't already familiar with the framework or language being used. Thus, I decided to create a documentation page which will hopefully help others who are interested in making their own website do so using what I have learned from friends I have talked to. It also helps me save some useful links in a way that others can see and understand the use case for.

- - This website was originally designed in HTML with some CSS for styling. However, I ran into issues with scalability and mobile browser support. See Web Design below for my current implementation method and some other cool things that I have discovered through my learning process that you may find interesting. -

-
-
-
- - -
-
- -
-
-
-

Purchasing a Domain Name

-

- Per Yash Vesikar's recommendation, I used Google Domains to purchase the sravanbalaji.com domain for $12 per year. -

-
-
-
-
-

Hosting Website

-

- There are a couple of options I have found for hosting my website (for free). As a U of M student, I am able to create my own UM Web Page hosted on U of M Servers or create a personal site hosted by Google through the U-M Google collaboration. I have not looked into the Google Sites option, but there is documentation available if you are interested. I originally opted to create my own site and host it on U of M Servers. Information on how to do this can be found on the UMICH Information and Technology Services website. Some limitations I found with this were that I would have to manually upload my website files to the afs directory as the SFTP process described did not work for me. Additionally, the domain name for U of M hosted websites take the form http://www-personal.umich.edu/~youruniqname/ which is clearly not ideal. You can sort of get around this by enabling web forwarding on Google Domains. All this does is redirect traffic from your custom domain to the U of M domain. This might be ok for you, but I would prefer to have my website show up at the domain I purchased. Per Yash Vesikar's recommendation, I looked into GitHub Pages to host my website directly from a GitHub repository. This comes with the added benefit that changes are live as soon as you push them to the master branch of your <username>.github.io repository. I found Trent Yang's post about setting up Google Domains for GitHub pages very useful. -

-
-
-
- - -
-
- -
-
-
-

Bootstrap Framework

-

- When I first made this website, it was implemented in HTML and CSS without the use of a framework. This gave me a lot of custom control over every aspect, but it made some things unnecessarily tedious and difficult. One example of this is the navigation bar. Trying to implement that without a framework is more difficult than it needs to be. Another issue I ran into was compatibility with mobile browsers. Per Tianhong (Sam) Wen's recommendation, I looked into Bootstrap. This has built-in responsive classes that can auto adjust the size and placement of elements based on the screen size. It also provides an easy way to implement some cool features like the navbar, accordion-like cards, and a grid layout to easily place images and text around your website's viewport. -

-
-
-
-
-

Reusing HTML

-

- The easiest way I found to reuse HTML code is via JavaScript as described in Page Headers And Footers. This is by no means the most elegant or automated, but it was the only method I could get to actually work. If you don't want to go through the hassle of manually removing line breaks, you can use this handy online text converter from Text Fixer. -

-
-
-
-
-

Display Resume PDF in Website using GitHub

-

- I have the latest version of my resume stored in a public GitHub repository, but I wanted an easy way to share it directly on my website. This led me to look for ways to embed a PDF in HTML. This works great for local files, but not so great for PDFs stored in a repository. The trick is to get the link to the raw PDF file from GitHub and to use Google Drive PDF Viewer. This is outlined in Kekayan's Medium post. -

-
-
-
- - -
-
- -
-
-
-

Color Scheme

-
-
-
-
- -
-
-

- I used the primary palette colors from University of Michigan Design Resources and generated a cool color scheme using coolors. -

-
-
-
-
-

Logo

-
-
-
-
- -
-
- -
-
-

- I designed my logo for free on hatchful. My main purpose for this was to have a nice looking favicon for my website on browsers as well as for the home page icon in the navbar. -

-
-
-
- - -
-
- -
-
-
-

- Content, design, and implementation were inspired by the following sources -

-

-
-
-
-
- - - - \ No newline at end of file diff --git a/web_pages/index.html b/web_pages/index.html deleted file mode 100644 index 4b8a33d..0000000 --- a/web_pages/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Sravan Balaji - - - - - -
-
-
-

Welcome!

-

- Welcome to my personal website! For information on how this website was created and hosted, please see the documentation page.

- - This website is currently a work in progress and updates will be made as I find time. You can follow development and make suggestions on GitHub. -

-
-
-
- - - - \ No newline at end of file diff --git a/web_pages/personal.html b/web_pages/personal.html deleted file mode 100644 index 4ca7381..0000000 --- a/web_pages/personal.html +++ /dev/null @@ -1,642 +0,0 @@ - - - - - Personal - - - - - - - -
- -
-
-
-

Software

-
-
-
-
- - - -
-
-

Visual Studio Code

-

Platform: Windows, Linux, Mac

-

- Visual Studio Code is currently my favorite editor for most programming applications I work on. I have previously tried Sublime Text, Notepad++, and Vim as my primary text editors, but I was never fully satisfied with their functionality. When I first started using VS Code, I wasn't convinced by it either. It looked like just another text editor with no special features. Over time, Microsoft has done a great job of improving stability, speed, and functionality. The feature that finally made the decision for me was the community support for extensions. If you are a die hard Vim user for example, there's a Vim emulation extension that should ease the transition. I just love the overall aesthetic, auto-completion, and sheer number of features available. It runs on every platform you could conceivably develop on and it looks great! Don't plan on switching editors any time soon! Check out some of my favorite extensions and customization options below. If you are using chocolatey, you can install VS Code with choco install vscode. -

- -
- - -
-

Font

-

- My current favorite font for development and general use is FiraCode. I love the style and ligatures for common character sequences such as comparisons and arrows (e.g. >=, ->, and ==>).

- Follow the installation instructions for your platform. If you are using chocolatey, you can install FiraCode with choco install firacode-ttf.

- Then follow the VS Code instructions to enable the font in the editor. -

-
-
-
-
-
-
- - - -
-
-

Notion

-

Platform: Web App, Mac, Windows, iOS, Android

-

- This is my current favorite productivity app. I use it to keep track of things like homework, personal tasks, gift ideas, shopping lists, personal wish lists, upcoming video games, etc. I previously used Trello and Google Keep to track tasks and random bits of information, but Notion has been a game changer. While the full experience is locked behind a paywall, you can get the paid tier for free if you have a university (.edu) email. If you haven't already, I would suggest giving it a try. Use this referral link to get some free credit on your account to use if you decide to use any of the paid tiers. If you are using chocolatey, you can install Notion with choco install notion. -

-
-
-
-
- - - -
-
-

Clatter

-

Platform: Windows

-

- Have you ever wondered if there was an app to combine all of your messaging apps into 1? Well, Clatter is the answer. I used to keep multiple tabs and programs open so I could see all of my messaging services at once, but with Clatter, they are all neatly packaged in one application. Any messaging service with a web app can be accessed through Clatter. Give it a try, I'm sure you will enjoy it as much as I do. -

-
-
-
-
- - - -
-
-

Windows Terminal

-

Platform: Windows

-

- If you have ever felt that the default windows terminal could use a refresh, you are in luck! Microsoft has been working on an updated version of Windows Terminal that provides tabs for Command Prompt, PowerShell, and WSL. It also offers a faster, better looking, windows terminal experience. At the time of writing, Windows Terminal is still in preview, but hopefully the full version will be released to everyone soon. If you are using chocolatey, you can install Windows Terminal with choco install microsoft-windows-terminal. -

-
-
-
-
- - - -
-
-

Chocolatey

-

Platform: Windows

-

- Chocolatey is Windows's answer to Homebrew. It is essentially a package manager that allows you to easily track and upgrade/install/uninstall programs on Windows. You can easily install any programs you need via command prompt and avoid the tedious installation wizard. Just search chocolatey's list of packages, run terminal as Administrator, and run choco install package_name. -

-
-
-
-
- - - -
-
-

Wallpaper Engine

-

Platform: Windows

-

- Wallpaper Engine is amongst my favorite programs on this list. If you have ever seen live wallpapers on phones and thought can I get that on my PC?, this is the program for you. At a regular price of $3.99, I cannot recommend this enough. Fair warning, this will drain your battery and RAM if you plan on running it at its highest settings with animations and other compute heavy settings. On my laptop, I changed the settings so the wallpaper is static when unplugged, but animated and reactive when plugged in. There are some memory saving options that can pause the program when another program is in full-screen and in-focus to improve battery life and performance. -

-
-
-
-
- - - -
-
-

Fences

-

Platform: Windows

-

- Fences is a desktop management software that allows you to group your desktop icons into fences. These fences can be rolled up so they are tucked away neatly into a corner, allowing you to view your desktop wallpaper while still being able to access your shortcuts when you need to. I really like Fences because it keeps my desktop clutter-free and I get to look at my amazing wallpaper (see Wallpaper Engine). I purchased Fences on Steam, but you can also get it directly from Stardock's website. Would definitely recommend getting it if you have a cluttered desktop. -

-
-
-
-
- - - -
-
-

Start10

-

Platform: Windows

-

- I wasn't actually interested in Start10 when I first got it. I got it in a bundle with Fences. The gist of Start10 is that it allows you to customize the way your taskbar looks and the style of start menu you would like. The options are Windows 7, Windows 10, or Modern. Windows 7 has the classic - search bar and list of applications. Windows 10 has the list of programs and start menu tiles introduced in Windows 10. Modern style is a bit of a hybrid. It has the application list from Windows 7, but the theme looks more like Windows 10. I personally prefer Windows 10 style because of the tiles that easily let you launch your favorite apps. I wouldn't necessarily recommend getting Start10 on its own as I don't see much value in it, but it is a nice addition if you have ever wanted to change the look of your taskbar or start menu. -

-
-
-
-
- - - -
-
-

Pocket Casts

-

Platform: Web App, iOS, Android

-

- This is my preferred Podcast app. I have it on my Android phone and I use the Windows app on my desktop and laptop. I purchased the web app and android app prior to the newsubscription model that Pocket Casts has implemented. While I don't agree with this new pay structure, I appreciate that they have implemented a free tier that has the majority of features that most people will need. -

-
-
-
-
- - - -
-
-

YouTube Vanced

-

Platform: Android

-

- I discovered this on a MEGA PRO TIPS post on r/galaxys10 (tip 29). All relevant information on what apps to download and a fix for a login issue can be found in the reddit post. The gist of the app is that it removes ads from YouTube on your android phone and you can play music while your screen is off for free. -

-
-
-
-
- - - -
-
-

Xodo

-

Platform: Web App, iOS, Android, Windows

-

- This is the best PDF editor/reader I have found that doesn't require a paid subscription (unlike Adobe) for all of its features. You can easily write/edit, fill out forms, and add digital signatures. All for free. -

-
-
-
-
- - - -
-
-

myTube!

-

Platform: Windows

-

- Similar to YouTube Vanced, this app removes ads from YouTube. The main difference here is that myTube! is a Windows app rather than an Android app. You should also check out UWP Companion so you can redirect YouTube links from your web browser to myTube. -

-
-
-
-
- - - -
-
-

Microsoft Edge

-

Platform: Windows, macOS, iOS, Android

-

- I have been using the development build of the new Microsoft Edge since around June 2019 and have generally enjoyed it. It will be very familiar for those coming from Chrome since it is also based on Chromium. The main reason I like it is for its speed and reduced RAM usage. I haven't done any official tests comparing performance, but it subjectively seems more responsive. Additionally, most if not all Chrome extensions can be used on the new Edge, so that should help ease the transition for those who can't live without them. One of Microsoft's main selling points for the new Edge is privacy features. Overall, there are still a few issues I have encountered like links in google searches not opening properly, but I can put up with that for the performance improvement. Finally, you will want to change the default search engine to google unless you plan on using Bing for those Microsoft Rewards points. If you are using chocolatey, you can install Microsoft Edge with choco install microsoft-edge. -

-
-
-
-
- - - -
-
-

Your Phone

-

Platform: Windows, Android

-

- Your Phone from Microsoft is the answer to my long-term need for a way to interact with my phone from my PC (not you Samsung DeX). At the time of writing, this isn't supported on all android devices, but it works with my Samsung Galaxy S10+. The main feature I use is viewing my phone's notifications on my PC, but they have also implemented Phone Screen which let's you interact with you phone via mouse and keyboard (or touch screen if you have it). If you have a supported PC and phone, you will need to download the Android App and the Windows App. If you have ever wanted a better way to integrate your desktop/laptop and phone experience, this is it. -

-
-
-
-
- - - -
-
-

Remote Fingerprint Unlock

-

Platform: Windows, Android

-

- I discovered Remote Fingerprint Unlock recently, but in my short time with it, I absolutely love it. When Google announced the Pixelbook back in 2017, needless to say I was very disappointed to hear that the great hardware would be paired with Chrome OS. One feature I wished I had on Windows + Android was the ability to unlock the Pixelbook with an Android Phone. With this app, you can do just that. You'll need the Android App and the Windows Program. If you get the Pro version, you can even use the Wake-on-LAN feature. -

-
-
-
-
- - - -
-
-

Ditto Clipboard Manager

-

Platform: Windows

-

- I first learned of Ditto from Nick Janetakis's post on Boosting Software Developer Productivity with a Clipboard Manager. I used to struggle with the limitation of only having one item copied in my clipboard at a time, but Ditto provides a light and simple solution. You can copy as many things as you want with ctrl+c as usual. When you want to paste, simply open Ditto and select the item you want to paste! If you are using chocolatey, you can install Ditto with choco install ditto. -

-
-
-
- - -
-
-
-

Hardware

-
-
-
-
- -
-
-

Desktop PC: Custom

-

- A full list of my desktop PC build components can be found on PCPartPicker. My current build has stayed largely the same from when I first built it, with the exception of the peripherals and monitors. I have upgraded my keyboard, mouse, and speakers over the past couple of years as I found deals. -

-
-
-
-
- -
-
-

Laptop: HP Spectre x360 15"

-

- My laptop is mainly used for school. I wanted a touchscreen so I could take digital written notes in class and I needed a good processor and dedicated graphics card for CAD software and for general programming applications. I landed on the HP Spectre x360 because it had a great balance of specs, amazing display, touch screen, and very nice typing experience for a reasonable price. I was initially leaning towards a Razer Blade or Microsoft's Surface Book. The former would be great for school and for gaming, but it isn't great for taking handwritten digital notes. The latter is similar to the Spectre in regards to specs, but has a favorable display ratio. The main reason I chose against it in the end was the high price relative to the Spectre. I was able to get very comparable specs for a much lower price with the Spectre. My laptop is the 2016 model with Intel i7-7500U CPU, NVIDIA GeForce 940MX GPU, and 16 GB RAM. The newer models have thinner bezels, diamond-cut corners, updated specs, and better trackpad drivers. I got around this issue by installing Microsoft's Precision Trackpad drivers myself as the pre-installed Synaptics drivers are not great. -

-
-
-
-
- -
-
-

Tablet: Microsoft Surface Go

-

- The Surface Go is primarily used as a secondary-device and tablet. I use it for media consumption and occasional e-book reading. It is by no means powerful enough to act as my primary device, but I like it as a secondary device that I will occasionally use. If you do end up going with the Surface Go, make sure you turn off S mode to be able to install apps that aren't on the Microsoft Store. If you are a Costco member, I would recommend looking at the Surface Type Cover bundle. This bundle has a 128 GB SSD, 4GB RAM, Intel Pentium Gold 4415Y CPU, and includes the type cover. -

-
-
-
-
- -
-
-

Phone: Samsung Galaxy S10+

-

- Got the Galaxy S10+ on sale on Amazon's Prime Day. My previous phone was a Pixel 2XL which I really liked, but I decided to switch to a Galaxy after the Pixel 3 was a bit of a disappointment and the Pixel 4 wouldn't come out until later in the year. Other phones I considered, but ultimately decided against were the OnePlus 7 Pro and Samsung Galaxy Note 9. In retrospect, I would have waited to replace my Pixel 2XL until the Galaxy Note 10+ came out and the price dropped down to something reasonable. However, I am happy with my decision as is. -

-
-
-
-
- -
-
-

Watch: Samsung Galaxy Watch

-

- I previously had a Moto 360 Sport smartwatch, but the performance was extremely disappointing. After looking at other Android wear devices, I didn't feel that another compelling watch on the level of the Apple Watch for iPhones existed. Thus, I decided to switch to the Galaxy watch. My primary impressions of Tizen OS vs Android Wear is the lack of supported apps. I have found that this really isn't that big of a deal as it has great media controls for your phone and the amazing rotating bezel interface. This is by far the superior input method for watches and I feel that all watches should have some variant of this. Overall, the performance is great and I have come to appreciate Samsung's brand of apps for my phone and watch. -

-
-
-
-
- -
-
-

Wireless Earbuds: Samsung Galaxy Buds

-

- I found these on sale at Costco and heard that the audio quality was among the best for the price. I love that they also have audio passthrough so you can hear your environment when necessary, or keep noise cancelling on. They fit nice in my ears and don't fall out. My only grip is that the mic isn't that great for taking phone calls. Integrates well with my Galaxy Watch and Galaxy S10+. My one grip is the battery life. Samsung reports 6 hours of charge in the earbuds and 7 hours in the case. In my experience, this is pretty accurate. Don't expect long, continuous music sessions. -

-
-
-
-
- -
-
-

Wireless Headphones: Sony WH-1000XM3

-

- I actually purchased the WH-1000XM2's myself before the XM3's came out, but the XM3's are an improvement in every way and well worth the price. Sound quality is amazing, noise cancelling is excellent, and it has audio passthrough in case you need to hear your environment. If you need wireless bluetooth headphones, this is it. You can get these headphones for around $290 on Drop. My favorite feature is definitely the battery life. Sony reports 30 hours of charge. If you will be away from an outlet for an extended period of time and plan on using your headphones a lot, these are great. -

-
-
-
- - -
-
- -
-
-
-

Gaming Platform Profiles

-
-
-
-
- - - -
-
-
-
- Steam: sr98vn -
-
-
-
-

Favorite Games

-
-
-
-
- -
-
-

    -
  • The Legend of Zelda: Breath of the Wild
  • -
  • Fire Emblem: Three Houses
  • -
  • Super Smash Bros. Ultimate
  • -
  • Octopath Traveler
  • -

-
-
-
-
- -
-
-

    -
  • God of War
  • -
  • Marvel's Spider-Man
  • -
  • Bloodborne
  • -

-
-
-
-
- -
-
-

    -
  • The Witcher III: Wild Hunt
  • -
  • The Elder Scrolls V: Skyrim
  • -
  • Dark Souls 1 (Remastered) & 3
  • -
  • Borderlands 2
  • -
  • Star Wars: Jedi Fallen Order
  • -
  • Minecraft
  • -
  • Red Dead Redemption 2
  • -
  • The Sims 3
  • -
  • Monster Hunter: World
  • -

-
-
-
- - -
-
-
-

Podcasts

-
-
-
-
- - - -
-
-

AI Podcast (Lex Fridman)

-

- As an aspiring roboticist, I'm very interested in the state of the art in artificial intelligence, machine learning, and robotics. The AI podcast, hosted by Lex Fridman, is a series of conversations with prominent members in the field of AI, science, and technology at MIT and in industry. -

-
-
-
-
- - - -
-
-

The Bill Simmons Podcast (The Ringer)

-

- As a New England Patriot's fan (most because of Tom Brady), I really enjoy this (perhaps too Boston-centric) sports podcast. Bill Simmons grew up in the New England area and supports all of the Boston teams, although he currently lives in Los Angeles. I enjoy his conversations with friends and family about the week's events in sports, generally focused on NFL and NBA. He occasionally has celebrity guests and sometimes brings guests on to talk about TV and movies. -

-
-
-
-
- - - -
-
-

Football Weekly (The Guardian)

-

- I love the light-hearted and sometimes comedic news and analysis of Premier League (and others) matches. The rotating cast of football journalists and long-time hosts are thoroughly enjoyable to listen to every week. Definitely recommend this podcast for any football (soccer) fans. -

-
-
-
-
- - - -
-
-

Giant Bombcast (Giant Bomb)

-

- The Giant Bombcast is a great podcast for video game fans. They discuss video game news, latest releases, and sometimes stuff completely unrelated. Very fun to listen to throughout the week as each episode is pretty long. -

-
-
-
-
- - - -
-
-

The Vergecast (The Verge)

-

- The Vergecast is perhaps my favorite podcast of any genre. The hosts discuss the week's tech news and other nerdy topics as well as interviews with tech leaders. Cannot recommend this enough. -

-
-
-
-
- - - -
-
-

Wait Wait... Don't Tell Me! (NPR)

-

- This is my favorite news/comedy podcast. I love hearing about the week's wacky stories and the rotating panel of comedians' opinions on world events. -

-
-
-
-
- - - -
-
-

The Daily (The New York Times)

-

- My go to for the major news events of the day (as implied by the name). It's ready every weekday by 6 AM and generally doesn't run longer than 30 minutes. Great way to start the day. -

-
-
-
-
- - - -
-
-

Dan Carlin's Hardcore History (Dan Carlin)

-

- This is long-form historical discussion and analysis. If you are interested in diving deep into historical events from the perspective of someone who knows how to tell a story, this is the podcast for you. Episodes are generally 4 to 5 hours long and aren't released very often as they require an enormous amount of research. -

-
-
-
-
- - - -
-
-

Throughline (NPR)

-

- The premise of Throughline is exploring how we can look at the past to understand the present. The hosts are awesome and always find very interesting stories in the past relating to current events that help put things in perspective. -

-
-
-
-
- - - -
-
-

Invisibilia (NPR)

-

- I'm not entirely sure how to describe this podcast. According to the podcast description, Invisibilia is about the unseeable forces that control human behavior and shake our ideas, beliefs, and assumptions. Definitely very interesting and different from most of the other podcasts I listen to. -

-
-
-
- - -
-
-
-

Music

-
-
-
-
-

Spotify Playlist

-

- These are my current (approximately 100) favorite songs. -

-
-
-
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/web_pages/portfolio.html b/web_pages/portfolio.html deleted file mode 100644 index f21aad5..0000000 --- a/web_pages/portfolio.html +++ /dev/null @@ -1,758 +0,0 @@ - - - - - Portfolio - - - - - - - -
- -
-
-
-

Resume

-
-
-
-
- -
-
-
- - -
-
-
-

Education

-
-
- - -
-
-

University of Michigan (Ann Arbor, MI)

-
-
-
-
- -
-
- - - -
-
-

B.S.E. in Mechanical Engineering

-
September 2016 - December 2020
-

- GPA: 3.757
- Focus: Controls
-

-
-
- -
-
- - - -
-
-

B.S.E. in Computer Science

-
September 2016 - December 2020
-

- GPA: 3.757
- Focus: Intelligent Systems
-

-
-
-
-
-
-
- - -
-
-

    -
  • ALA 105 - Digital Research: Critical Concepts & Strategies
  • -
  • ENGR 151 - Accelerated Introduction to Computers and Programming
  • -
  • MATH 216 - Introduction to Differential Equations
  • -
  • SOC 100 - Introduction to Sociology
  • -

-
-
- - - -
-
-

    -
  • CLCIV 385 - Greek Mythology
  • -
  • EECS 203 - Discrete Mathematics
  • -
  • ENGR 100 - Introduction to Engineering: Solar Energy and Self-Powered Wireless Systems
  • -
  • MECHENG 211 - Introduction to Solid Mechanics
  • -

-
-
- - - -
-
-

    -
  • EECS 280 - Programming and Introductory Data Structures
  • -
  • MECHENG 235 - Thermodynamics I
  • -
  • MECHENG 240 - Introduction to Dynamics and Vibrations
  • -
  • MECHENG 250 - Design and Manufacturing I
  • -

-
-
- - - -
-
-

    -
  • EECS 281 - Data Structures and Algorithms
  • -
  • EECS 314 - Electrical Circuits, Systems, and Applications
  • -
  • EECS 370 - Introduction to Computer Organization
  • -
  • MECHENG 320 - Fluid Mechanics I
  • -

-
-
- - - -
-
-

    -
  • MECHENG 350 - Design and Manufacturing II
  • -
  • MECHENG 360 - Modeling, Analysis, and Control of Dynamic Systems
  • -
  • MECHENG 382 - Mechanical Behavior of Materials
  • -

-
-
- - - -
-
-

    -
  • EECS 201 - Computer Science Pragmatics
  • -
  • EECS 376 - Foundations of Computer Science
  • -
  • EECS 442 - Computer Vision
  • -
  • MECHENG 395 - Laboratory I
  • -
  • STATS 412 - Introduction to Probability & Statistics
  • -

-
-
- - - -
-
-

    -
  • EECS 492 - Introduction to Artificial Intelligence
  • -
  • MECHENG 335 - Heat Transfer
  • -
  • MECHENG 450 - Design and Manufacturing III
  • -
  • MECHENG 461 - Automatic Control
  • -

-
-
- - - -
-
-

    -
  • EECS 467 - Autonomous Robotics
  • -
  • EECS 496 - Major Design Experience Professionalism
  • -
  • MECHENG 561 - Design of Digital Control Systems
  • -
  • ROB 530 - Mobile Robotics: Methods & Algorithms
  • -

-
-
- - - -
-
-

    -
  • EECS 445 - Introduction to Machine Learning
  • -
  • EECS 493 - User Interface Development
  • -
  • MECHENG 495 - Laboratory II
  • -
  • ROB 511 - Robot Operating Systems
  • -

-
-
-
-
-
-
-
- - -
- - - -
-
-

Rivian (Irvine, CA)

-
-
-
-
-
-
- - - -
-
-
-
-

ADAS Controls Intern

-
June 2020 - August 2020
-
-
-
-
-
- -
- - -
-
-

Hughes Network Systems (San Diego, CA)

-
-
-
-
-
-
- - - -
-
-

Software Development Intern

-
May 2019 - August 2019
-

- Hard Skills: -

    -
  • Embedded Programming in C
  • -
  • C# and .NET Framework
  • -
      -
    • GUI Design
    • -
    • REST Requests & FTP
    • -
    -
  • Network Communication
  • - -
- - Soft Skills: -
    -
  • Public Presentation
  • -
  • Design Documentation
  • -
  • Professional Communication
  • -
-

-
-
-
-
-
-
- - -
-
-

-

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."

-
Hughes Customer
-
-

-
-
- - - -
-
-

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. -

-
-
-
-
-
-
- - -
-
-

Rivian (Plymouth, MI)

-
-
-
-
-
-
- - - -
-
-
-
-

Business Technology Intern

-
May 2018 - December 2018
-

- Hard Skills: -

    -
  • Python and Django Web Framework
  • -
  • REST API
  • -
  • Excel VBA
  • -
  • BOM Analysis
  • -
  • Atlassian Products - Jira, Confluence, BitBucket
  • -
- - Soft Skills: -
    -
  • Stakeholder Interviews
  • -
  • Design Documentation
  • -
  • Professional Communication
  • -
-

-
-
-
-
-
- -
- -
-
-
-
- -
-
-
-
-

Vehicle Integration Intern

-
June 2017 - August 2017
-

- Hard Skills: -

    -
  • Java
  • -
  • Data Analysis
  • -
  • Systems Engineering / Requirements Management
  • -
  • IBM Rational DOORS
  • -
- - Soft Skills: -
    -
  • Design Documentation
  • -
  • Professional Communication
  • -
-

-
-
-
-
-
- -
-
- - - - - - -
- - - - \ No newline at end of file