Projects
For a summary of what I do, my resume is the best bet. What follows is a dump of all the interesting projects I’ve undertaken so far. You could think of it as the world’s most disastrously long and self-deprecating resume.
Current Projects
Since we started Steam Clock, I’ve usually worked on a new type of project every couple months. We love working on our own apps, but client work is more interesting than it sounds.
- Prism: A photo browser for iPad that excels at showing photos of kittens.
- WeddingDJ: The best darn iPhone app for running music at events.
- Consulting work: Some of my more interesting client projects at Steam Clock have been:
- an HTML5 eBook
- a Rails site for commercial real estate
- an iPhone app for finding fresh food
- an interactive retail console for iPad
- strategic consulting for a consumer video startup
- an app store for a Fortune 500 company
- a JavaScript app for the Fortune 500 itself
- an iPhone app for ordering wonderful custom suits.
- VanJS: I created the Vancouver Javascript Developers group, and it’s turned out pretty well.
- Unladen Follow: What started as a project to learn Rails ended up as an unfollow helper that I still use regularly. Basically it tells you who is really annoying, before or after you follow them.
- Prototypes: Lots of interesting prototypes haven’t made it out of the Steam Clock labs – for example an antisocial Facebook app, a Git client for Mac, and a turn-based strategy game.
- Crafting a Technical Meetup: I’ve given this talk about running a meetup at JSConf and other events. I talk about what makes a great meetup great, using VanJS as my example.
- Tackling JavaScript: I’ve given talks ranging from super introductory to Advanced JavaScript. I prefer to err on the side of advanced for maximum mind-blowing.
- CMPT 470: I teach a 4th-year Web Technologies course for SFU’s Computing Science department. This means I’ve taught about almost every aspect of web development, from CSS to CDNs.
- Web 101: At the other end of the spectrum, I taught an 8-week introduction to HTML, CSS, JavaScript, and other web technologies at Mobify. It was just myself and 6 students, which was really fun.
- Thick Client JavaScript: I’ve given this talk a few times, and it’s evolved as the topic has evolved. Basically the question is, how much can you get away with on the client side?
- Mobile Safari Apps: A talk I gave at VanJS on Webkit features that make developing web apps for mobile pretty great.
Apple Era Projects (2008-2010)
I worked at Apple in the iWork group, which was extremely educational. I never thought I’d make a detour into working for a large company, but it was a fun ride.
- iWork for iPad: I worked on the highly successful iPad apps, primarily writing Objective-C to support iWork.com. Having a prototype iPad locked in my desk was possibly the coolest thing ever.
- iWork.com: I wrote thick-client JavaScript, CSS, and Objective-C for rich web app that helped proof iWork documents. Of course, web technology is a low priority for Apple, so after a few years it was discontinued along with everything else that was on the old iCloud infrastructure.
- Prototypes: Working on product prototypes that don’t ship is as fun and frustrating as it sounds.
- Websites for Fun: I’m often making websites for fun, for example for a local theatre company, a WoW guild, and my wedding. If there’s one thing I’ve learned about this, it’s to use a static site generator and not have to worry about updating WordPress for the rest of your life.
My first real technology job was at a small software company that builds software for education. I’d been a friend of the company since the late .com era, letting me watch them explode, implode, and rebuild over most of a decade.
- DiscoNet: My main job at Discovery was creating and iterating the company intranet and CRM system. I had a lot of freedom with this project, as evidenced by the fact I was allowed to name it DiscoNet.
- Learn Faces: I built a game for school staff to learn students’ names and faces using JavaScript.
- Principalm: Before mobile apps were cool, Principalm ran on Palm m500s off of 16MB SD cards. It wasn’t cool, but it was ours, damn it. I did QA, branding and design work, and other product-related tasks for it, giving me my first taste of product management.
- Just Ask Oldguy: I did CSS3 and design for a Q&A site where my former boss answers random questions from the internet.
- Budgetable: I built a prototype financial management website, and have since sold the domain to a team who is doing great work with it.
University Era Projects (2002-2008)
I started university at UCFV, but I upgraded to SFU within a year to preserve my sanity. I learned a lot from my courses, but I learned more about programming from the crazy side projects I would take on.
- Altering Time: What started as a forum turned into a long-running community site. It included multiplayer strategy games and user-generated content – before it was cool.
- Political Asylum: My first multiplayer game, a rat’s nest of PHP and MySQL supported some wicked political machinations.
- Engineering Faith: Excited by the success of Asylum, I built a second game about creating your own religion. After spending months making sure it was well architected, I forgot to make it, uh, fun.
- SFU CSSS: I spent time as the VP Operations, Acting President, and Secretary of the Computing Science Student Society. I have since retired from politics.
- The Cascade: During my year at UCFV, I wrote articles for the university newspaper. This was the peak of my stint in journalism.
- Gender Quiz: I built this somewhat better than random-guessing AI project almost entirely out of SQL. If that’s not a case of seeing a nail because you have a hammer, I don’t know what is.
- Modeling Plants with L-Systems: This project on generating 3D plants for SFU’s CMPT 461/761 class gets me both a crazy amount of traffic from Google and occasional emails from scientific journals. If you’re looking for a research topic in graphics, I suggest plants!
- Other Project Courses: I took all the project classes I could in school. Besides the plants and bizarro gender quiz, I built a small distributed system, a pinball game, a raytracer, a student society website, a Java compiler, an STV voting system, and 3D fireworks simulation in C#. All of these were bad.
- Freelance web development: For the better part of a year I did solo web contracting, and learned many lessons on the way. I built sites for my mom’s work (a credit union), a construction company, a venture investor, a project management startup, and my stepmom’s doggy daycare. It was world-class.
- Uniserve Intranet: Besides being a Customer Service guy, I built the intranet at the local ISP where I worked. I do not know why they let me do this.
- ACSS Theatre Company Video: This ancient nostalgic video has a horror story attached to it that should have scared me off of taking on large projects in the future. It did not.
- FantasyTech 3: I wrote a text-based RPG in QBASIC. How is this not on my resume?
- WarTech: I was likely the only person ever to make a turn-based strategy in C++Builder. My friends lauded it as “kind of fun”.
- So many games: I’m not sure what my most catastrophic failure to make a game was during childhood. It may have been the time where I tried to write an entire RPG in a 10,000 line C++ if statement.
- The Essence: For some reason I designed my own (bad) trading card game, creating a couple hundred cards, many featuring (bad) art.
- Spellbook: I ran a low-budget games magazine with my friends for a couple years. When I say low-budget, I mean photocopying at the 7-11. The first issue was taped with masking tape. I was like 12, okay?!
- Street Vending: In elementary school I enjoyed putting a table on the street and failing to sell lemonade and hockey cards to passers-by. I even kept a ledger of the lemonade I failed to sell. This was all of the lemonade.