Presented below are some quick summaries of recent (and some not-so-recent) projects that I’ve worked on.
- Platforms are some of my favorite platforms that I've created or worked on.
- Web Sites are a selection of production web projects that I’ve released over the years.
- Applications are a few desktop applications that I’ve developed, mostly internal tools.
- Code Samples are a few selected code bases in multiple languages.
- Shipped Titles are the video game titles I’ve worked on.
I define platforms as software systems where other applications and business processes can utilize features in a standard, re-usable fashion. Here are a few of my projects that I consider successful platforms.
Battle.net Platform Experience
2019 The Battle.net platform itself covers many different features: account management, social graph, digital distribution, e-commerce, and more. Blizzard's partners, both internal and external, have to integrate many different pieces of software to utilize them all. I was charged with forming a brand new organization within Battle.net to handle improvements to the developer experience, covering SDKs, documentation, edge services, and more. The teams handling these products focus on making sure that Battle.net's offerings are world class and easy to use.
BlizzCon Virtual Ticket
2017 While the Virtual Ticket itself is a singular product, that didn’t stop me from being forward-thinking. 2017 was the first year Blizzard produced video content for BlizzCon without the assistance of a DirecTV partnership. We had to build out our video delivery capabilities in-house in partnership with our growing Broadcast department, and we built the systems backing the Virtual Ticket product using a series of first party services and third party vendor platforms, all designed to be extensible to other video products in the future.
2015 Battle.net had long provided a binary library to our internal game development teams for interfacing with platform services such as authorization, chat channels, and microtransactions. I was responsible for forming a new team to create a proper SDK, which included source code, documentation, and reference implementations. We also tackled a large project to port the SDK from C++ to C# for Unity-based projects like Hearthstone to improve cross-platform support on mobile devices.
BattlePay Product Management Tool
2014 BattlePay is an API used across Blizzard to support online transactions both through the web storefronts and in-game purchases. My team was responsible for building the tools for creating and managing products and entitlements, including multi-currency support. Eventually we also modernized the system for generating retail CD keys and sending them off to manufacturing, which up until that point was a very manual process.
2012 Originally, gamestop.com’s checkout experience was built directly on top of Microsoft Commerce Server, a set of COM objects that bolted the UI almost directly to the database, making it inflexible and difficult to scale. To bring the technology into the 21st century, I first banished Commerce Server to live behind a set of services, and then my team and I re-architected the whole system using higher level services to support the shopping cart and invoices. We also rebuilt the UI in ASP.NET MVC, removing all of the hardcoded business logic in favor of service orchestration.
2011 At GameStop, I worked side by side with a system architect to completely rebuild the catalog experience on gamestop.com. This included setting up and building the pipeline for ingesting data into an Oracle Endeca search appliance, crafting the user experience for search on the front-end, and updating the tools used by merchandisers to enter product and marketing data.
2009 I was one of two lead engineers on RealPage’s payments platform team, building system that processed rent and other payments for thousands of apartment complexes across the United States. This included ACH and credit card payment processing from both online self-service payments entered through our resident portal as well as payments originated on-site using check and credit card scanning hardware.
Think Finance Lead Generation
2008 At Think Finance, I was the lead engineer for a time on a system of services that we built to support lead generation from affiliates. It allowed non-technical marketing partners to create landing pages that could collect customer data and funnel them into our loan qualification rules engine so that we could determine if it was a good lead or not, and if so it would send them over to a white label loan experience and credit the affiliate.
2000 Beckett Publication’s Marketplace was the first project I worked on that I consider a “platform.” It featured a system where individual sports collectible vendors could list items for sale (similar to eBay) but customers saw it as a single storefront (similar to Amazon). One of the more challenging aspects I had to code was the unified cart, such as reconciling the differences in vendor preferences to come up with a single list of shipping charges to present to the customer when their order mixed items from different vendors.
From a design and development standpoint, a variety of web site projects are showcased with thumbnails below. Click the thumbnail for a larger view.
Blizzard Rebrand Project
2017 Starting in 2016, Blizzard decided to execute a "rebrand" where their online presence would be unified under the Blizzard brand instead of Battle.net. This was a major iniative for the company that required the involvement of every web and game team, as well as traditional publishing and marketing. For my team in particular, we launched 5 new products in the span of a single year to support the unification of the brand.
BlizzCon 2017 Watch Page
2017 BlizzCon 2017 marked the first year that BlizzCon would not be broadcast by DirecTV, and we had to learn how to build video from top to bottom. More than just the UI, my team in Web & Mobile was involved at every step, working closely with our newly formed Broadcast department to deliver 170 hours of video-on-demand and up to 12 simultaneous live streams to our players.
GameStop Expo 2013
2013 The web site for the GameStop Expo was my first real-world test of a responsive web site. The designer didn’t intend for it to be responsive, but I went ahead with it anyways and created a usable experience that looks good on all devices from phones to desktop computers. The site features three different break points to accommodate a range of display sizes. SASS and Extra Strength Responsive Grids helped me to crank out the code for this site in about 10 hours.
Mobile Rent Payments
2009 One of the core applications I worked on at RealPage was the Online Rent Payments system, which allows apartment complex residents to pay their rent online with a check or credit card. Camden Living, an existing client using this system, approached us asking for an iOS-specific version of the application. We created a small portal in ASP.NET WebForms using the Microsoft Ajax Toolkit. It was my first foray into developing for mobile Safari, and I was quite pleased with the outcome.
PayDay One – Direct Flow
2008 One of my first projects at Think Finance was to implement “Direct Flow” on the PayDay One brand. This was a simplification of the user experience from eight screens during the loan process down to two. It was also my first exposure to an MVC interface pattern for a web site. This was while ASP.NET MVC was still in beta, so we implemented our own MVC engine using custom code attached to WebForms. On my own initiative, I created some code in the site that auto-populated the forms with random customer data in order to speed up QA testing.
2001 This is web site of a marketing firm I worked for earlier in my career. I designed the site and built the HTML. There’s nothing really fancy going on here, but it’s a good example of my design skills circa 2001.
2000 My earliest example of e-commerce work. I designed and developed the user experience for the search features and the checkout process on the first version of the Beckett Marketplace. If you’re wondering why it looks eerily similar to Amazon.com of the time, it’s because that’s the direction I was given.
Over the years, I’ve also developed a few traditional thick client applications for various purposes. Click the thumbnail for a larger view.
Shop in Blizzard Battle.net App
2014 After successfully launching Battle.net Shop on the web, the next stop was to create a newvtab in the Battle.net App. This required working closely with the native programmers on the Appvteam to integrate the web pages seamlessly into the application window. The App also had its ownvrequirements for supported dimensions, so I had to expand the range of responsive states beyondvwhat was used on the web site. Fortunately we had established a common UI language between the App and the web site previously, so integrating the overall look and feel was less of an issue.
2011 When the merchandisers at GameStop needed a batch ETL (extract, transform, load) tool for the e-commerce product catalog, I took the opportunity to spend a little extra time making sure the tool was both functional and pleasant to use. The application is written using a WPF XAML interface, and I used WPF’s extensibility to create glass elements using GameStop brand colors. I left some of the more complex controls such as the grids at the Windows defaults since I didn’t have a lot of time to complete the tool, but they appear clean and functional despite not meshing completely with the rest of the design.
CrossFire Valet (home)
2007 Valet was one of the first desktop applications I ever created. It was like an IM application except the user received new leads from automated email and phone systems rather than direct messages. It was written in C# and .NET, but I had to learn a lot of the Win32 API so that I could do more advanced features not supported by Windows Forms at the time, like seamless windows, tray notifications, and monitoring system-wide input for idle detection. I also learned about &ldquot;double-buffering&rdquot; for the first time since I had to solve a flicker issue whenever the list updated itself. :) I wrote the server that supported it as well, integrating with a 3rd party push notification server appliance.
CrossFire Valet (lead)
2007 This is another view of the Valet application. This sub-window shows what happens whenever the user clicks on a lead in the main window. This actually utilizes an embedded web pane to display most of the UI. The reason we did this was to make it easier to update the application without having to push a new client version every time.
Most of the production code I’ve written is unfortunately proprietary in nature and not something I get a chance to showcase. Here are a few of my personal creations for you to peruse.
C++, Python SeriStruct is a simple library for creating classes that can be easily converted to/from data streams. It also has a Python script for auto-generating these classes from a domain-specific text format. I originally put this together to practice test-driven development; about 90% of the code was written after the test cases.
Rust, SQL This is an example of a full stack API written in Rust using the Rocket framework. It includes two calls, one to record a rating/feedback combo from a user and another to retrieve previously recorded feedback (with some filtering options). It also includes full database schema for MariaDB/MySQL. The code is heavily commented to provide design insight.
I’ve had my hand in developing or supporting a few video game titles.