Summer is here!

It’s hard to believe that another summer is already here. This semester flew by especially quickly after taking the fall semester off for an internship with IBM. The internship was a fantastic experience, but it was also great to return to school with a fresh perspective, being more aware of how the concepts I’m learning in my classes may or may not apply to the “real world” of software development.

Deciding exactly what to do this summer was tough, but I think I made a good choice. In mid-March I had four internship offers on the table (and probably would have had more but I had to decline some interviews to meet deadlines). After a lot of thought, I accepted a position as a UI Software Development Intern at Boeing (more specifically, Digital Receiver Technology). In the end, I couldn’t pass up the opportunity to spend a summer in the DC area working with an industry-leading defense contractor.

Over the past couple of years of being an intern, one thing I’ve noticed is that the corporate setting often doesn’t allow for much exploration or learning of new technologies. (Neither does the university classroom setting, in many cases.) Companies get locked into certain technologies and are either afraid or unable to make changes. If what they’re using now “works” and brings in enough money, why change? This especially happens when they have some legacy product built in the 90s whose codebase is an absolute nightmare after 15 years of the “get it out the door now, fix it later” mentality. No sane developer wants to touch that code, but the company can’t justify spending millions to fix something that isn’t technically broken. So they just hack some more features into the old codebase instead of adapting to the times. I’ve seen this happen at least once at every company I’ve worked for so far, so I’m guessing it’s pretty common.

Anyway, that being said, I want to use this summer as an opportunity to explore and learn some of the technologies I haven’t had a chance to learn in school or at work. Although being 1,000 miles away from family and friends stinks in a way, it means that I have a lot of free time on my hands. How better to spend that time than hacking and learning? Not to mention, it will be great to have some side projects to put on my resume. Sure, I have plenty of “job experience,” but that’s entirely different. Having a list of personal side projects will demonstrate a true passion for technology to prospective employers.

The list

Let me get to my original point of writing this post. Here’s a list of all the technologies I’d like to explore this summer. It’s a pretty long list so I’m not sure I’ll get to them all, but it’s a good goal. Quite a few of these are technologies I have used before but want to delve further into. I plan to spend anywhere between a day and two weeks to build something with each. It could be a simple script or a sorting algorithm in a new language, or it could be an app of some sort. Obviously some of these are closely related or are compatible with each other, so I’ll combine them into one project where I can. I’m putting a space next to each one for a Github repo link because I find it somehow motivating (even though no one is ever probably going to read this).

(I’ll be updating this table as I progress this summer.)

Technology Notes Status Github repo
Android development Release something to the app store?
Functional language Learn something like Erlang, Haskell
HTML 5 (new APIs) Geolocation, canvas, multimedia, storage, WebSockets
Meteor.js Real-time app
NoSQL Mongo, Couch, Redis, or similar
Python Doing some scripting at work, but would like to dive deeper
Raspberry Pi Emulator? Would be awesome to have Atari, SNES, Sega Genesis
Responsive web design
Sass or LESS
Test-driven development Could fit in with any other project
Windows Store app development