Skip to content

Instantly share code, notes, and snippets.

@Me1000
Created August 8, 2011 03:40
Show Gist options
  • Save Me1000/1131169 to your computer and use it in GitHub Desktop.
Save Me1000/1131169 to your computer and use it in GitHub Desktop.
> Tell me a little about your self and these various projects that you have worked on / are currently working on.
I'm a rising Junior studying Computer Science. I'm currently interning as a software engineer in San Francisco, for Inkling; revolutionizing the textbook industry. Inkling creates the most interactive and rich textbook experience ever seen in the digital textbook market. Instead of just providing static PDFs, Inkling architects each textbook using software engineering practices to bring a unique experience for each book.
Outside of Inkling I am on the core team for an open source project called Cappuccino (http://cappuccino.org). Cappuccino was started by three guys who left their day jobs to start a small company called 280North. These guys are perhaps some of the most brilliant people I've ever met. Tom Robinson has revolutionized server side javascript, Ross Boucher worked on the back end of iTunes, and Francisco Tolmasky built mobile safari on the original iPhone team. Last year the company was acquired by Motorola. Cappuccino is a fairly large project with seven core team members, over individual 70 contributors, 1500 people watching the repository, and over 200 forks on Github. We held the first conference for Cappuccino a few weeks ago, where we announced some amazing new stuff and really excited the community about the future.
Cappuccino set out with a very ambitious goal: to port Cocoa (the framework for developing Mac applications) to the web. With Cappuccino came a new language called Objective-J. The goal of this new language was to add features to Javascript, the same way Objective-C added similar features to C. At the time, building a new language that can be parsed and compiled in the browser was unheard of. What sets Cappuccino apart from most web frameworks is that you never dive down into web technologies (HTML, CSS, Javascript), instead you use APIs which were originally developed by NeXTStep and are now used in 90% of Mac applications. That is to say, when you're writing a Cappuccino app, you feel like you're writing a Mac app. Finally using real software engineering paradigms like Model View Controller to build web applications. These APIs are also very similar to CocoaTouch, the framework used to develop every iOS application. That makes porting existing applications to Cappuccino pretty straight forward, and porting Cappuccino applications to the Mac equally as easy.
From my work on Cappuccino came two shipping applications (amongst others which were never released): TimeTable (http://timetableapp.com) and GithubIssues (http://githubissues.heroku.com).
In high school I did a lot of freelance web development work, out of that I discovered a need for a better application to manage work and clients, as well as generate invoices... So I built it. TimeTable's not quite as exciting as it was when I shipped it a year and a half ago, but it's well polished and makes for cool demo.
GithubIssues (http://githubissues.heroku.com) was a collaborative project between Ross and myself. It was designed as a desktop class front end to Github's issue tracking system, which doesn't really scale well to managing hundreds of issues (which is a huge problem for large open source projects like Cappuccino). I'm super proud of this application! It was featured on the Chrome Webstore a while back, and more recently mentioned on the Chromium blog (http://blog.chromium.org/2011/06/cloud-coding-and-beyond-web-development.html)
I'm currently working on version 2.0 of GithubIssues which will feature a completely new UI and should make managing issues much easier.
> Any advice for incoming CS freshmen?
Learn something new. In high school I started working on my first application, TimeTable. Above all, I wanted this application to have a very rich interactive experience. At the time I didn't know much more than jQuery and PHP, but I was really intrigued by the up and coming technology called Cappuccino. Unfortunately you really can't (or at least at the time you couldn't) just pick up Cappuccino and run with it. Learning the APIs takes a lot of time. More than that though, you have to learn Objective-J an entirely new language. That's a lot of overhead. A 'mentor' or mine gave me a piece of advice that I'll never forget: "jQuery is the technology of today. Cappuccino is the technology of tomorrow". That turned out to be the best advice I've ever listened to. Instead of being one of a hundred thousand jQuery developers, I now sit on the core team of a very revolutionary project. In general my advice is this: look at new technologies before thousands of people get there before you.
Reach out. I still have the original email I sent out to 280North asking for help moving TimeTable from jQuery to Cappuccino. If I hadn't reached out to them, I would still be an unknown developer trying differentiate myself from other people. Because I reached out to these people personally, I've had the opportunity to hang out with them in person, and consider all six other core team members my friend. It's easy to forget, but the developers you look up to the most are just normal people like you and I.
Do Something. When you graduate your diploma wont set you apart from the millions of other developers with a diploma. Do something outside school that you can put your name on. The reward of watching people using your software say "wow" is amazing. Being able to say "I made that" gives you a lot of credibility. And truth be told, the best way to learn is not sitting in a classroom; the best way to learn is writing code.
> What's your favorite project that you have worked on or are working on?
Choosing a favorite project is kind of like choosing a favorite child (of course I don't have any children, so I'm just guessing).
Cappuccino really umbrellas a lot of my projects, so I suppose the coolness of that project is greater than the sum of its parts.
The Cappuccino frameworks are kind of intangible though. It's difficult to tell people "I build I piece of software that helps other people build software", instead it's much easier to show people a working application. When I tell people what I do, I give them a demo of GithubIssues.
>Do you have any hobbies outside of developing?
I won't lie, I spend a lot of time behind a keyboard. I really enjoy software development.
When I'm not writing software I love going to UK basketball and hockey games, and I play Call of Duty every once in awhile.
>Where do you see yourself in 5-7 years?
Five to seven years from now is a long time. Software will change a lot in that time, so it's incredibly difficult to be specific.
My goal in life is to bring change to the world. I believe the best way for me to go about bringing that change is to start a company of my own.
I had the opportunity to work in Amsterdam for the summer at a small company called Sofa, which I turned down for a summer in San Francisco. The company was just recently acquired by Facebook. Sofa provided some of the most enjoyable software I've ever used; something you don't usually say about software. Beyond that, Sofa has made an invaluable contribution to various open source projects, including Cappuccino, through some absolutely amazing design and coding work. I have the upmost respect for everything about that company. That is the kind of company I want to build.
> What's the biggest lesson you have learned with regards to developing software?
Never fear starting over. Architecting an application is difficult, and is almost always different than what you've written before. I wrote TimeTable four times before I released it. GithubIssues was written twice, and version 2.0 of it is also being rewritten from the ground up. The reason is to make sure you have a very solid foundation to add new features on top of. As things become more an more complex, it's important that your code be organized and properly encapsulated. There is nothing worse than trying to maintain code crumbling at its foundation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment