José Miguel Hernandez

AOL, AOL.com

Senior Software Engineer · 2008–2009 · San Francisco

The tools I built to sell ads became the tools the company used to decide things.

AOL bought Bebo in 2008 and ran it as its social network, with a team that built the tooling its sales, content and marketing teams ran on.

This was 2008–2009, the other side of the $850 million Bebo acquisition. I came over with the company and kept working on the same product, on the team I had moved onto before the deal closed, already promoted to senior engineer on the Bebo side. The through-line of those eighteen months was isolating failure: sponsored content moved out of hand-edited HTML, and tracking moved into a service that could not take the site down.

  • JavaScript
  • Java
  • FreeMarker
  • JSP

Key projects

Selected work from the AOL years.

  1. Ad routing rules with an audit trail

    Ad operations

    Bebo ran about 20 ad tags from about 10 providers. I built the admin for routing them: page-group routing, per-provider placement lists, audit logging on every change, and a start/stop kill switch. I also put a counter on each tag, so a delivery discrepancy with a provider could be settled with our own numbers rather than theirs.

  2. A counter service about 160 Bebo staff could open

    Measurement

    The counter service I co-architected at Bebo replaced the legacy sales tracking, and I built its admin and reporting UI, using the Google Visualization API for the charts. Any user action could fire a counter by tracking id, logging age, gender and geo; logs bucketed by hour, day and month, and counters compared against each other to give click-through over time. It ran as an independent service so it could not take Bebo down. About 160 Bebo staff had access to its reports, and the company's own October 2008 data dashboard cited the tool by name as the source for its top-photos numbers. Its JMS queues, built by the backend engineers, aggregated the impressions and clicks.

  3. Ad placements anyone could launch

    Ad systems

    Sponsored content had been hard-coded into pages as an open HTML field, so any mistake by production could take down a page. We replaced it with placements made of slots, filled from an inventory of items, each rendered from a dynamic template that could dereference a member's own name or friend count, and each counting its own impressions and clicks. I wrote the JavaScript, HTML and CSS for these placements and rolled them out to about 50 locations, including most of the front page at about 9 million views a day and the front-page takeover slot. I trained the production team to build and maintain the takeovers almost immediately.

  4. The specification production could build against

    Handover

    For the Games launch I built the JavaScript as reusable libraries and delivered four new placements ahead of schedule. The specifications came with it: how a slot behaves, its dimensions and states, what production could and could not change.

  5. Polishing the AIM browser client

    Messaging

    Jeshua Borges and I had built instant messaging together before Bebo: a white-label messenger, a multi-protocol desktop client, an XMPP gateway. There was no chat work in the Bebo years; the thread picks up again here, where we used that experience to polish AIM's in-browser JavaScript client. I started out building an imitation of a messenger at a tiny startup and ended up on the one that had defined the category.

  6. Celebrity photo albums and the cost of keeping them fresh

    Experiment

    During the acquisition I was asked to evaluate editorializing AOL celebrity photo content on the photo page, viewed about 60 million times a day. I seeded a sponsored profile with albums from the AOL news database, promoted them from a featured-albums area, and trained an AOL editorial team to refresh it twice a week. It ran six weeks in September 2008. Click-through started at 0.08–0.1% and decayed to 0.02% when it was not maintained; each click was worth about eight downstream page views. At a $0.50 eCPM that modelled to $48–$240 a day, against roughly a day and a half of editorial time each week. I suggested looking into a feed if the team continued, given the modest revenue and editorial time required.

It was also where a much longer thread finally landed: the instant-messaging work I had started earlier ended up inside AIM.