abdeet.net

Abhi Senthilkumar's website



Projects

I have had the opportunity to work on a lot of projects, both for fun and through school. Here are a few of them. Where possible, I have included a link to the project so you can try it out. Some of them are on different platforms so in that case I have just included a screenshot and writeup of what I did. I generally try to future-proof my projects - mostly because I know that I will lose motivation to maintain them the moment I finish. Hopefully these still work as of $TODAY*.

*This website is not in PHP.


Raspberry Pi Home Server

My home server is the center of all my operations. I store all of my files on here1, run my website off of it, and spend a lot of time working on it. I originally got the Raspberry Pi 4B+ as a present but didn't really know what to do with it. I set it up and it just lay dormant. During the pandemic, I built a Discord bot to keep track of my and my friends' schedules. I needed a way to host it round the clock, and suddenly the Pi became useful again. As I got further into high school, I decided to build a website and host it on the Pi, as a way to learn web development. I found working with Linux much more interesting than Windows, which was the only operating system I had used before. I wouldn't call it "fun", but it is satisfying. I get a sense of pride and accomplishment when I unbrick my Pi after accidentally wrecking fstab.2

As I have grown, my server has grown too. I added a 2TB hard drive once I realized I would need more storage space. I migrated from Raspbian 32 bit to 64 bit. I do most of my development on my Pi using Emacs in terminal mode. It's probably not the most efficient way to develop, but I am a staunch believer in doing things a slightly annoying way. Working with my Raspberry Pi has taught me so much about so many things, and now I feel an emotional attachment to it. Countless times, I've broken something and had to run to the basement with a monitor and keyboard, hook directly into it, and figure out what went wrong. When I eventually upgrade to a bigger server I might shed some tears.

1I use a program called SFTP Drive 2022, which disguises my Pi as a normal Windows network drive.

2Turns out if you move /home to a new drive and forget to mount it, you can no longer sign into your account. Who would've thought?


images.abdeet.net

I decided to do this late one night after realizing I took a lot of pictures with my camera but never put them somewhere that people could see them. At first, it was going to just be a static page with my pictures embedded, but I realized there was a lot more I could do with a dynamic page. I wanted to make adding new albums and pictures as pain-free as possible, so I settled on using JSON to outline the descriptions1. I was most comfortable working with Python so I picked up Flask and used it to design the website. I built a lot of automation into it: the thumbnails are auto-generated and the thumbnail displayed is random (try refreshing).

On the back-end, I was originally using Apache to serve everything, so I initially cobbled together a Gunicorn instance that relied on Apache to send it traffic. Later on, I decided to redo all of my web hosting stuff, so I set up Nginx as a reverse proxy, and both Apache and Gunicorn get requests from it. The verbiage used here is probably not accurate; I learned all of this online.

1Apparently this is still too much work for me and the website has not been updated in almost a year. I swear I will update it soon though.


OutsideCam

During my sophomore year, I stayed in a semi-suite1 on the seventh floor of Oakland Hall2. For the planning and effort me and my roommates put in3, we were rewarded with the view you can see in the above image. I quickly began scheming a way to immortalize this view so I could always remember where I came from. I had a decent amount of experience working with Arduinos in high school, so it seemed relatively trivial to hook up a camera to one and stick it outside my window. Once I had that set up, I realized I could take the images I was capturing and produce a timelapse, which is all the rage among my friends (mostly Sujal, my roommate). I took my Raspberry Pi home server, wrote a few Python scripts on it, added a page to my website, and the rest is history. Unfortunately, in the process of trying to sharpen the focus with a screwdriver4, I accidentally busted the camera, prematurely ending the project. Once I have another good view I will try to resurrect it.

1Basically two doubles attached to a shared bathroom. A dorm+, if you will.

2Arguably one of the nicest dorms on campus. Its only downside is the distance from pretty much everything else.

3Mostly luck, actually. We got a really good selection time, and the work we did was waking up relatively early on a weekday. Which, for me, is a lot of work.

4For whatever reason, some of the older microcontroller cameras cannot be manually focused without a special piece of equipment. I didn't want to shell out for it so I tried a screwdriver to disastrous results.


Hydrocarbon Cracking

I don't want to hear it. "Chemical engineers love oil, chemical engineers all work at Exxon1 and make oil-" STOP! Yes, it is true that many chemical engineers work at oil companies, and that many of the problems we do in class are oil related. That doesn't make all of us oil-heads. Don't punish the undergraduate chemical engineer for the sins of the other undergraduate chemical engineers. In any case, this project was in my thermodynamics II class, and we essentially were looking at the process by which naphtha is broken down into smaller hydrocarbons. We were trying to get the most money for selling propene, one of the resulting lighter molecules.

The problem boiled down to trying to find the ideal temperature and pressure to perform this cracking operation at for any given ratio of input propene, butane, and pentane, such that we maximised the amount and purity of the output stream. We were advised to write code to do this, because calculating all of the Peng-Robinson departure functions by hand would probably lead to insanity. The program we used in class was MathCad2, but we could also use MATLAB, which my group chose. I spent a few days writing a bunch of MATLAB code to generate the graph you see above. The brighter the area, the better, which made selecting the optimal temperature and pressure quite easy. Overall, a very fun project to work on with my group of ChemE buddies.

1However, I would be remiss not to mention that Exxon hosts a dinner at our department every fall to recruit new employees.

2MathCad is maybe one of the worst software tools ever invented. My user experience was made much worse by the fact that we had to use Citrix to access it, meaning that every action I did had latency and half the keybinds didn't work.