Programming Portfolio
PPC Reporting System

When: 2007-2010
LoC: 40,000
Contribution: Architect, Principal Developer, Requirements Analyst, DBA, End User Documentation, System Administrator
Tech: J2EE, myFaces, JSP, Tiles, Apache Trinidad, Apache Tomcat, SQL Server, SVN, Hudson
Description: A comprehensive reporting system for monitoring the pay-per-click (PPC) performance of online advertisements. Data is imported via Yahoo’s SOAP API, parsing of CSV file received via email, and manual data imports. The project includes a multi-tiered login system which allows administrators to manage client login credentials, management features for adding new search engines as data sources, and 11 different reports which can be broken down by a variety of data metics. The Reporting System is currently used by SEO firms and their Fortune 1000 clients.
Challenges: Scaling the system to handle immediate generation of custom reports with hundreds of thousands of data points, on a limited server budget.
Geotargeter for Amazon WordPress Plugin

When: 2011
LoC: 600
Contribution: Sole Developer
Tech: PHP, Javascript, JQuery, AJAX, HTML, WordPress, Git
Description: The Geotargeter for Amazon WordPress Plugin determines a website visitor’s location using JSONP APIs and then dynamically rewrites pages containing links to Amazon to show visitors links to their local Amazon store. Features include performance caching, secure AJAX calls, and configuration options via the admin area.
For more information on how the Geotargeter for Amazon Plugin increases Amazon Associate earnings, click here.
Ravatars WordPress Plugin
When: 2008-2009
LoC: 450
Contribution: Sole Developer
Tech: PHP, HTML, CSS
Description: Ravatars is a WordPress plugin for generating custom avatars for blog comments. The plugin uses a hash of the commentator’s email address to create a random avatar from a set of source images. The avatar will remain the same each time the commentator leaves a comment. The avatar size and source images are customizable by the site owner. The Ravatars plugin has been downloaded over 3,000 times.
Challenges: Supporting the plugin on a variety of WordPress versions and themes.
GrokCode Website

When: 2007-2011
LoC: 1,300
Contribution: Theme Designer & Coder, Publisher, SEO
Tech: HTML, CSS, JavaScript
Description: GrokCode is my personal website covering programming trends, tales from the software development trenches, recommendations on development books and tools, and my opinions on anything related to programming. I try to cover a variety of topics and programming languages to make the site useful as a general resource for developers of all stripes. GrokCode uses a custom WordPress theme that I created, and contains all original content.
Challenges: Troubleshooting layout problems with non-standards compliant browsers.
AB Landing Page Testing

When: 2006
LoC: 1,800
Contribution: Sole Developer, DB Design, Statistical Analysis
Tech: PHP, mySQL, HTML
Description: Calculates the relative effectiveness of 2 or more web pages using the Chi-square distribution. The application uses a multi-tiered user system of 3 levels: admin, partner, and client. Admins and partners have the ability to create new tests, change the branding and color scheme of the interface, and view AB test reports. New tests are created by adding the URLs of the test pages to the application, and installing tracking codes on the client’s server in order to track the results.
Challenges: Learning the best way to statistically analyze the results.
Joke Generator

When: 2004
LoC: 600
Contribution: Sole Developer
Tech: Allegro Common Lisp
Description: The generator is programmatically seeded with knowledge about different nouns and modifiers, then uses that vocabulary to generate jokes. The generator searches every possible combination of <modifier> <noun>, <modifer> <noun> in its vocabulary, and tries to create a punchline based on different transformations. All of the jokes are of the form: “What do you get when you cross X with Y?” This code was written for my CS288: An AI Approach to Natural Language Processing class at UC Berkeley. Q: What do you get when you cross a port with Frosted Flakes? A: I don’t know but it’s serial!