25 Interesting Things Jeff Has Done With The Internet
This is a sheet of "bonus material" I was sending out with resumes in 2008. Some things are big, some are small, but my intention was to demonstrate the range of things I've had my hand in over the years. Updated to include some newer stuff in the summer of 2009. See also: Resume, portfolio.
- Build an ASP.NET AJAX tokenized list control, a la Facebook (POP Forums)
In a WWFBD move, I implemented a control that allows the user to begin typing and get an auto-complete list of names that they can navigate with arrow keys/enter or by mouse. When they choose one, a "token" appears in the text box, with its data value stored in a hidden field. It can be wired to any page-based Web service
- Build a search engine (POP Forums)
The full-text indexing of SQL Server was a black box that seemed to do as it pleased, and eat a lot of I/O and CPU for reasons I couldn't explain. The solution? Build my own. A background service takes unindexed forum topics, breaks them down by word, throws out the junk, and scores the words based on frequency. A somewhat ugly SQL query (I need to refactor) gets paged results from 714,000+ posts generally in under .2 seconds. The secret isn't my skill, it's the careful indexing choices.
- Architect, evaluate, deploy app for billionaires (Digital Day)
When the executives at Mars throw money your way, you've gotta deliver. They wanted an app that could help them manage touch points with managers around the globe at various facilities, so I directed a small team to build out the app. I evaluated which mapping software to use (then Windows Live Maps), wrote some core libraries for basic "every app" functionality that the company didn't have (user management, instrumentation, error logging, various ASP.NET controls, etc.), established a build process, hired a code ninja to hand-off to and pushed back against delivering every possible feature in the first iteration. Client was thrilled, and we got v1 out in a few weeks.
- Make SEO agile with a data-driven page mapping framework (Insurance.com)
How do you pacify the expensive SEO consultants who want constant tweaks to your page titles, "file names" and meta tags? Take the physical page location out of the loop. A lightweight XML file contained all of the data, and an IHttpHandlerFactory served up the right page, passing along the title and meta goodies via HttpContext.Items.
- Prototype and build out insurance interview rendering engine (Insurance.com)
The rendering engine for the interview was inherited from Progressive circa 2001, ported to ASP.NET, but still straight rendering. I built a prototype that would live as a control on the page that rendered out the control tree based on the provided data. After an architect built some of the production foundation, I built out the various controls and their validators. We'd later make tweaks to use ASP.NET AJAX on some of the controls.
- Mentor young Jedis in the art of the ASP.NET AJAX control (Insurance.com)
From the time I wrote my book, I've always enjoyed mentoring and teaching, even if I was just a few steps ahead of those I was working with. Like me, many devs came up through the ranks via some informal training process. They're brilliant, valuable people, but maybe think differently than the typical BS in CS degree holder. I like helping those people, because I like it when people help me in the same way.
- Build and consume Web services to coordinate customer matching, VIN lookups and chat logging (Insurance.com)
The system at ICOM was ridiculously distributed, because it had to be. In addition to our internal systems, we would talk in real time to 15 insurance carriers, third party apps and lead aggregators. Understanding Web services was critical to performance. (This was also the time we established that "performant" is a noun, not an adjective, and the programming community seems oblivious to that.)
- Wrote a programming book: Maximizing ASP.NET
On the Microsoft NDA list and trying to keep up with the changes baking into .NET v2, I wrote this book for Addison-Wesley, which was finally released in March of 2005. While sales were remarkably average, the book was translated to Chinese, and I had a lot of positive feedback from devs struggling to make the jump from script to object-oriented programming.
- Assume the role of chief CSS wrangler (Insurance.com) While CSS is decidedly non-technical in the eyes of developers, it is so often completely mismanged. When we rebuilt our interview engine, it was an opportunity to create standards and attempt to reach a world of maintainability. It was new ground for me, and thinking the way the inventors of CSS wanted me to think was, and continues to be, a challenge.
- Make searching the coaster database an instant gratification high (CoasterBuzz.com)
The "normal" UI approach is to type, hit enter, get a page of results. I figured, why wait for a new page? A box opens up with results as you type, with a client-side cached result set after the first three characters. 5k script harnesses the magic from a Web service in the master page spitting out JSON.
- Sell my way into representation with Federated Media, for a site one-tenth the size of their smallest site (CoasterBuzz.com)
John Battelle's (Wired, Industry Standard) "conversational media" start-up represents Digg, Boing Boing and Ask a Ninja. So why do they mess with CoasterBuzz, serving a meager half- million pages per month? Because I made the case that it offered diversity and range in their portfolio, and they had nothing else like it. When I had a chance to talk to Battelle, he agreed... CoasterBuzz was like the decorative icing on his big cake.
- Implement source control, automated builds, continuous integration and training in under three months (Digital Day)
When I arrived, there was no source control, developers worked off of shared servers with no versioning, and deployment was done by looking at file time stamps. Yikes. My immediate goal was to transform the process as quickly as possible to minimize risk and mistakes, with a very young and inexperienced team of developers. It took some serious campaigning, but I managed to break people out of their comfort zone.
- Become a video-for-the-Internet compression ninja (consulting)
My resume says I went to school for radio and television, and it was only natural that I started putting video on the Internet in 1997. Boy was it tiny and crappy! But as time went on, and CPU's could handle it, we got better and better codecs. I loved squeezing an extra 100k out of a file. To this day I don't accept the same compression presets, as it's better to experiment. I own all of my own professional, high definition video gear.
- Use handler factories, all over the place (all over the place)
I don't know that this is an accomplishment as much as it is a way to build little frameworks and content management thingys. They're so convenient to map URL's to pages without query strings or messy page-level render overrides. I've toyed with virtual path providers used in combination with them as well, and that is ridiculously awesome power. Doing this prior to the release of ASP.NET MVC, it gave me a good foundation when exploring the rendering pipeline.
- Write an ad serving application (various POP World Media properties)
I'll be honest, I never really got beyond one or two iterations, but got the fundamentals in place. The problem was that I'd sell an ad campaign independent of the various agencies, and have to serve it with a mix of ads from those agencies. I'd also have to session cap and user cap the frequency. I built a small engine around these requirements, some basic UI, no reporting and did some simple testing to see if it could survive a million hits an hour. It did, and handled 50,000 a day easily. In the summer of 2009, the system was retired since the launch of Google Ad Manager made it obsolete.
- Use Silverlight's DeepZoom with data-backed image store (future secret project)
DeepZoom is a great feature, but what happens when you have a ton of images? A giant mess of files is messy, so I built a tile source against a database. Now the user upload the full resolution images (via another Silverlight app) to the server, which cuts them up and tiles them to the various resolutions.
- Build and host a site for a non-profit for free (JumpServeVolleyball.net)
Since the junior Olympic club I coached for folded, I haven't had the chance to do any coaching the last two seasons. But I wanted to do something, so I bundled some of the little, lightweight content management components together and donated that time and hosting to one of my local clubs. They have the best looking site in the region, thanks in part to a designer friend who skinned it for me.
- Re-architect the user tracking infrastructure (Insurance.com)
Four Web apps tracked user data and drove display decisions in four different ways, even though they all touched the same data. The solution was to pull it out of pages and create a single HttpModule that could be used the same way in every app, with a simple static method call to get the data for the current request (cached, of course, for the duration of the request/response lifecycle).
- Use video tour screencasts to introduce users to site features (CoasterBuzz.com)
Everybody's doin' it! Seriously though, its remarkable how well people get something when they see you do it, instead of trying to explain it to them in text. Explaining how to use the quoting feature in a forum correctly has resulted in fewer needless quotations and a lot less "^^^" posts.
- Offer "badge" images served dynamically for users to put on their blogs or sites (CoasterBuzz.com)
Take a base image, digitally scribble some text on it, give users HTML or BBcode to paste around the Internet. Cache it of course, but not too much. Cache it more in a later iteration when you see it start to load you down.
- Build an online store with basic inventory management (CoasterDynamix.com)
Niche hobby product company sells very realistic roller coaster modeling system. They needed a store to sell the kits and the parts, and also wanted some basic inventory capability. Does all of the usual ecommerce pieces like sales tax and invoices.
- Podcast for more than four years, using audio gear, computers and lots of Skype (CoasterBuzz.com)
So radio was not a good business to be in, but years later I found I can still talk into a microphone, and do it with friends around the world. The CoasterBuzz Podcast is almost weekly and we discuss all kinds of dorky amusement industry stuff. And people actually listen!
- Reduce dependence on advertising (CoasterBuzz.com)
When the market is ugly, go to the consumers. In 2001, DoubleClick dropped me and I was paying for my own T-1 back then (the only "inexpensive" way to host real bandwidth at the time). I launched CoasterBuzz Club as a means to generate revenue, and thousands have answered that call ever since. Subscribers get extra features and all of the ads are removed from the site from their view.
- Write services that run in the background on a Web site process (POP Forums)
Something about this still feels a little dirty, but it was a way to get around people who couldn't run services on their servers. The forum app runs a session data clean up service, a mail queue and a search indexing service. Some basic instrumentation and a kill switch keeps it from running crazy and bringing down an entire app pool.
- Speak at a conference on social media, twice (IAAPA)
The International Association of Amusement Parks and Attractions holds a huge trade show and conference every year, in one of only three places big enough to have it (Atlanta, Orlando or Las Vegas). The Internet is still somewhat of a mystery for a lot of members, so in 2007 I gave a basic overview talk of how social media offers new opportunities to connect with their audience. In 2008 I moderated a panel discussion on a lot of the same topics with Peter Shankman.