Over the past 8 years, I’ve written software for a variety of platforms using many different programming languages and toolkits. Though I dabbled in programming earlier, my first real experiences with software development surrounded the launch of the iPhone App Store in 2008. Enthralled by the potential of the new platform, and enjoying the brutalist beauty of Objective-C (think
stringByAppendingString), I spent the next several years building dozens of apps for clients and to solve problems I faced myself. Some projects I worked on during this time include a phone directory for my hometown and Simple Drive.
Because I needed a web interface for Simple Drive and could charge clients more for the ability to update their apps via the web, I taught myself web technologies like HTML/CSS and PHP. Despite the profitability of building iPhone and iPad apps at the time, I found web development much more fun—it was a more mature platform, there were more resources to learn from, fewer square brackets, and most importantly, you could ship something in a matter of minutes (vs. the month-long review process Apple imposed).
As I grew more competent with web development, I learned new paradigms, tools, and languages. Many weekends were spent over several years learning Ruby (on Rails), Python, and the then new-kid-on-the-block Node.js. Until I started my formal computer science education, I mostly learned by building things, whether it be hackathon projects or itch-scratching tools. Some of the bigger projects I worked on include Hologram, Index Identity, Chatbase, and Mailto App.
In high school APCS and more recently in computer science courses, I’ve written a heap of software in Java. In my research, I’ve used TypeScript.
I also built software at five of my six internship experiences, using:
While building software, I’ve picked up the ability to use a mix of helpful third-party APIs, database technologies and query languages, scripting languages, version control systems, and build tools to aid in the process.