Code that works for you

One ridiculously cheesy emacs session. Trust me, things get more exciting.

Problem? Solved.

I get a huge kick out of making computers do interesting things, whether the benefit is for myself or others.

With a diverse toolkit, a wealth of experience, and a wide support network, I'm able to make meaningful contributions when it comes to web software and technology.

See my portfolio

Skills

  • Creating and scaling high-performance web applications
  • Developing a web presence for you and your business
  • A/B (Bucket) Testing and Analysis
  • Internet advertising and marketing

I'm currently taking on new clients to assist in these areas, and more.

Let's Talk

Technology 101

Here are some of the most common technologies and programming languages I'm experienced with.

C/C++

When performance is a priority.

Libraries: GLib, GSK, GSL, Boost

Ruby

Beautiful code. A pleasure to read and write.

Rapid webapp development using Ruby on Rails.

PHP

Arguably the most widely-used web scripting language.

Rapid webapp development using CakePHP.

SQL

Most modern web frameworks hide the database layer from you.

Despite this, you should always know how to get your hands dirty.

Javascript

Developers can do amazing things in the browser these days.

Experienced with jQuery.

HTML

HTML5 is here.

Let's get to work.

CSS

Your algorithms may be killer, you aren't going to get anywhere without a decent UI.

Love the grid: 960 Grid System

Version Control

Long ago I lost some important code because I wasn't using version control. Never again, thanks.

Hell, this paragraph you're reading now is checked into git.

Project Management

TRAC, Bugzilla, etc.

Web Standards

Cross-browser testing is hard enough when you're writing valid W3C code, so why write something invalid without a good reason?

Protocols

TCP/IP, HTTP, SSH... all the classics.

Webapp Best Practices

Caching, gzipped content, CSS sprites, compressed JS served via content distribution networks... whatever it takes to keep things loading fast!

Experience

A bit about my past work and education.

Snap Technologies, Inc.

Pasadena, California
Senior Software Engineer
May 2005 - January 2010

I worked on a multitude of projects during my time at Snap.

At first, my focus was on crawling and indexing the web, while our main product was a search engine. My team focused on creating a custom database to store our search index, crawling software to efficiently and politely harvest web content, HTML parsers, as well as search relevancy algorithms for servicing user queries. C and Perl were my go-to languages during this time.

Our Snap Shots product became a big success, and I ended up spending a lot of time working on the problem of generating and displaying previews for links on the web. For a given URL, how would you summarize the content? What's the best way to quickly deliver these previews to the end user? Lots of C and Ruby on the back-end, PHP and Javascript for the front-end.

Snap Shots has been installed on millions of websites and blog networks, including TechCrunch, Wordpress.com, LiveJournal, Xanga, and more. During peak hours, hundreds of Shots might be served per second!

Snap LinkAds gave me my first exposure to the internet advertising business. I spent a lot of time working on machine learning techniques. If we have millions of possible ads we can show for a given ad unit impression, and millions of ad unit impressions, how can we quickly learn which ad configurations are working so that we only show the best performers?

A few technologies I helped develop:

  • Custom key-value database for efficient, compact storage, querying and transmission of all in-house data. All data stored compactly in a custom binary format. Individual databases may be partitioning over any number of servers, to ensure redundancy and fast data access. [language: C | relevant libraries: glib]
  • Custom high performance web application server. Given a YAML or XML configuration, incoming HTTP requests are handled by making parallel requests to data sources such as databases, external partner APIs, RSS feeds fetched in realtime, etc. [C/glib]
  • Custom load-balancing, fault-resistant proxies to sit between frontend and backend services. [C/glib]
  • Custom message queue system to manage data flow despite rapidly evolving lists of publishers and subscribers. [C/glib]
  • High-performance HTML/XML scraping system, utilizing multiple cores/processors as available. [C, Ruby]
  • Ruby Gems to provide access to in-house C libraries for utility scripts and Ruby on Rails applications [C, Ruby]
Visit Snap.com
Read More

Harvey Mudd College

Claremont, California
B.S., Computer Science
May 2005

Instead of writing a thesis, each student in the HMC CS Department participates in a clinic project. Students form small teams and spend a full school year working for an industry client, with guidance from a faculty advisor.

During clinic, I served as Project Manager on a research project for Laserfiche — an industry leader in document management solutions — under the supervision of Professor Zachary Dodds.

The project focused on developing distributed search algorithms for use in large document databases, using a modified version of Apache Lucene.

Other coursework included:

  • Algorithm Design & Analysis
  • Computability & Logic
  • Computer Graphics
  • Computer Networks
  • Computer Systems
  • Data Structures
  • Discrete Mathematics
  • Operating Systems
  • Programming Languages
  • Software Development
Visit HMC.edu
Read More