7 min read

Using Side Projects to Find Your Passion

And sometimes just to find some Red Bull
Using Side Projects to Find Your Passion

TL;DR

  • College is about teaching you fundamentals. You can use those fundamentals to do more than just your weekly lab. Use side projects to make an impact and engage with your community.
  • They’re also a great way to motivate you to learn new things and will make you a great T-Shaped engineer; especially for new developers in school or coding bootcamps.
  • Use them to work on fun and weird projects like hacking hydroponic gardens or finding red bull. Use them to level-up at work by having a safe place to experiment with a new technology or tool.

Finding your Passion

My initiation into software development didn’t start in high school. Instead of a Java class I was enrolled in, that was cancelled on the first day, my journey began with an HTML design course using an archaic table-based design book. Fast forward to the first day of CS lab where I was assigned my first C++ programming assignment, having never written a single line of code in my life. I distinctly remember struggling to open VIM in write mode and having no idea how to write a Celsius to Fahrenheit converter. You can say I had a bit of a rocky start and seriously considered switching majors.

After that traumatic start, I eventually gained experience and progressed through the curriculum. Even so, I was struggling with the thought of a post-graduation, monotonous career building CLI tools and performing bitwise operations. I can appreciate now that those fundamentals would be key in building strong development techniques. However, at the time, I didn’t understand the appeal. Luckily, I stumbled upon a PHP & MySQL elective that revolutionized my perception of software development.

Seeing how I could use HTML, PHP, and MYSQL to create delightful and functional web apps gave me enough wind in my sail to start my self-learning journey. I spent all my free time traversing from rudimentary PHP to object-oriented, and subsequently into frameworks like Zend and CakePHP. I learned cyber security fundamentals such as SQL injection and XSS attack vectors. I began my journey into Home Labs, or in my case a Dorm Lab, hosting a LAMP stack that served as a springboard for honing networking skills, navigating firewalls, and grappling with SSL certificates pre-Let's Encrypt.

My junior and senior years were truly some of the most exciting for a young software developer. Side projects transcended mere experimentation, evolving into tools to enact societal impact. I became the webmaster for the Student Government Association and created a WordPress plugin that allowed students to access information about their senators, legislation, and tracking campaign initiatives:

I continued to develop, eventually building a transparency site called PowerUT to bring attention to meal plan changes that were negatively going to impact students, it was even picked up by Knoxville WBIR news.

Building these projects taught me scalability, shared hosting pitfalls, security vulnerabilities, and source control systems. I build a petition site similar to change.org that integrated with MailChimp, mobilizing student advocacy efforts against legislative fee policy. The culmination? Over 3,500 signatures and 20,000 emails sent to legislators.

Embracing Side Project

My journey serves as a testament to the transformative potential of side projects. Whether you’re just starting in software development in college, or you’re thinking about switching industries through a coding bootcamp, or maybe you’re just looking for opportunities to learn a new language or tool your company uses. Side projects are incredible for all of these purposes and will mold you into a T-Shaped engineer. They primarily do this by forcing you to wear every SLDC hat— from planning, design, building, deploying, testing, and improving.

My goal is to inspire you to build that mobile app you’ve been thinking about, hack your Gardyn hydroponic system (current project), or start that business — sometimes, side projects don’t have a purpose at all, sometimes they can just be to find some Red bull around campus. The following is a bonus archived blog post from 2014 where I did just that:

Using Trilateration to Find Red Bull

So I like side projects a lot. When Red Bull hid containers of Red Bull around hundreds of college campuses a month ago, as part of a marketing campaign called Red Bull Pic Up, I found a way to make a cool side project out of it. They made a website around it

where you could see containers hidden on your campus and the containers’ distance from your location. An example of one that’s still working is: http://redbullpicup.com/detail.php?id=b0789e3c-3dfb-11e4-95d4-bc764e047e04

Super cool – I thought to myself. I waited for closing time at work and went to go find some. Unfortunately, the site had been up for a week or so by the time I found it. No more Red Bull on campus

Image

Then I thought, well it has the distance to a container based on your location. There must be a way to figure out exactly where a container is. Ladies and gentlemen, I give you trilateration.

If the website was using my geolocation then there must be some javascript that’s pulling my current latitude longitude position and sending that to the server. Let’s dive into the source code of the site. After some searching we find a minified javascript driver: http://redbullpicup.com/js/main.min.1410897813.js so let’s run that through http://jsbeautifier.org/ and un-minify it.

So let’s search for some basic distance stuff. How about searching for distance? Oh Look! There’s a function called getDistance:

It makes an ajax call to http://redbullpicup.com/handlers/Stash.php passing an action function, latitude, longitude, and id of the stash. So let’s write a quick php curl function to get that:

The ID is already in the URL of the page but I wonder if there’s a way to figure out all the stashes currently around me. A bit more searching in the javascript file finds this:

So let’s change the curl request to make requests to that url with the radius-search action, some longitude and latitude, and a distance (assuming meters).

Doing that yields a long JSON list of stashes around me:

So now we can get the ID, photo url, detail url, created date, claimed flag, and distance in feet and meters. Awesome! Let’s put it all together using Google maps API.

WiFi Trilateration With Three or More Points
I no longer have the image from the app, but it looked very similar to this.

So I send 3 longitude latitude locations (semi randomly based on my current location) to my API which makes curl requests to Red Bull. Red Bull then returns the distance those points are away from the stash. I then mark my latitude longitude position on a map and draw circles with a radius set to the returned distance. And voila, we can now pinpoint the location of every Red Bull stash on campus. Time to drink up! Or not, since well, all the Red Bull was already gone.