David Bushong

david@bushong.net
/ˈdeɪvɪd buːˈʃɒŋ/
Mailing address upon request
http://bushong.net/david/

Career Goal:

To work with smart people leveraging awesome tools to get Important Work done delightfully well.

Expertise:

Work Experience:

Projects:

esfixup
A command-line utility to perform multiple automated code transforms for JavaScript or similar languages: Used: JavaScript, NPM
GitHub CLI Extensions: bulk-pr and grep
Extensions for the official GitHub CLI to support opening automated PRs against multiple repositories and performing shell `grep`-style searching. These started their lives as part of a multi-command `gh` CLI internal to Groupon, and were Open Sourced to be compatible with the new official `gh` CLI. Used: TypeScript
Git Workflow CLI
A git plugin (git wf) for managing a scalable branch/release workflow and automating common GitHub-related flows (creating feature branch from existing branch, opening PRs against proper parent branch, cleaning up afterwards. Used: JavaScript, NPM
Automated Workflow Provisioner
A system for automating various onboarding tasks to move between deployment platforms at Groupon. Included a number of novel features: Used: JavaScript, NPM
Napistrano
A JavaScript/Promises-based deployment toolset used by most web-tier applications at Groupon. I inherited and rewrote the project from the ground up to be modular and handle a variety of error conditions gracefully and safely. Used: JavaScript, CoffeeScript, Mocha
BetterLinks Server Backend
A high-performance REST service which aggregated requests to multiple backend data sources, including a C++ term extractor, Java semantic relevance engine, third party advertising APIs, Squid HTTP proxies, PostgreSQL database, Memcache, and more. I architected the basic backend structure, specified and contracted out some of the early technical components, and integrated all the pieces, including 2 iterations of an extremely high-volume stats-management framework, monitoring, reporting, and release management. Used: PHP, PostgreSQL, C++, Memcache, Redis, Java, JSON, Squid, Varnish, nginx, CRUSH tools, Hive, Tokyo Cabinet, EC2, Apache, rrdtool, Munin, Nagios, SVN, Haskell, Perl, Bourne Shell, Avro
SmartLinks/BetterLinks Browser Add-on
A streamlined version of the MashLogic add-on, the BetterLinks add-on did only link injection, but supported Chrome, Firefox, and MSIE 7+. The SmartLinks variant had to be a resuable, injectable codebase that could be included in other Firefox or Chrome add-ons, manage robust stats collection, and fail gracefully. I worked on all versions, and architected the message bus system needed to do secure communication between the various privilege layers of the Chrome extension. Used: JavaScript, JSON, CSS
MashLogic Browser Add-on
Once described as a "swiss-army knife for the web", I worked on the architecture for this multi-purpose browser add-on. The final version had an installable sub-module architecture which interfaced with custom web-pages via backchannel messaging, and supported a number of modules, including currency convertion, unit conversion, Wikipedia linking, ad-removal, and more. Used: JavaScript, CSS
Mason Components for AJAX
I gave a 45-minute presentation at OSCON 2006 on how to use Mason components to build AJAX applications through good design and effective code reuse. Used: HTML::Mason, JavaScript, S5
AvantGo for RSS
This feature allows RSS feeds to be synchronized to a handheld device for offline viewing. Challenges included the need for extensive, multi-level caching for performance and to avoid overfetching feeds from sensitive RSS providers, parsing of often poorly formatted data, and finding ways to provide easy implementation of the feature in the existing server framework. Used: Perl, HTML::Mason, JavaScript, MySQL, Memcache, RSS
AvantGo Travel Tab
The AvantGo Travel Tab feature allows PDA users to pull down an offline cached copy of their travel itineraries, as well as weather, maps, and city guide information (restaurants, attractions, etc.) pertinent to their travel destinations. Challenges included retrieving and normalizing data feeds from various Travel Providers, as well as integrating numerous other data types into an efficiently downloadable and navigable UI. Used: Perl, HTML::Mason, JavaScript, MySQL, Memcache, XML, SOAP
Wordsy
Wordsy is a playalike to the Yahoo! "TextTwist" game, but implemented entirely using AJAX, DHTML, and a simple Perl backend, integrating a third-party Java applet for optional sound support. Used: Perl, JavaScript
Dogtivities
I originally wrote the PHP Event Calendar backend for this for use with Danville.com. For Dogtivities (with permission from Media Net Link), I rewrote the code to be more modular and to cater to the specific needs of the site. Used: PHP, MySQL
Baagle Desktop Search
Built in a weekend on a dare, this is a workalike to Google Desktop Search that works on UN*X systems. It uses existing Open Source indexing and conversion software, but provides an easy-to-use web frontend to access the results, without the need for a separate webserver. Used: Perl
Floating Sheep Wishlist
I designed the backend database schema and core logic for this generic wishlist system. Interesting features include: heuristic page scraping, hidden automatic "learning" customization of some interface features to the individual user, a simple generic PHP PearDB abstraction layer-based database session storage layer, a HTML::Mason-like args() functionality to provide register_globals-like simple access to variables in a secure fashion, and a reuse of my styled-font image generation and caching system. Used: PHP, MySQL
AthenaRMS
I worked on the 5.0 Open Source release of the Athena Request Management System software, performing a complete security audit. I wrote the installation system and wrote the release management scripts. I implemented some of the advanced configurability features for the 5.1 release, and worked on an upgrade/XML data transport import/export utility. Used: PHP
XML::Aggregator
This system allows you to extract content from any unstructured data source (e.g. a website) and publish it to any XML DTD you specify in an automated manner. Great for extracting real estate listings, job listings, RSS news feeds, or just about any sort of repetitive data whose format you can't control. The core module is Perl, the web interface uses HTML::Mason
Euphorion Performance Tester
Fully configurable custom load tester. Uses multiprocess communication, locking, and database files efficiently to achieve and sustain a high number of parallel connections to a webserver, simulating any sort of user session desirable. Targeted towards evaluating application server page (Java, Perl, ASP, etc) performance. Used: straight perl
Euphorion Client Extranet
Working with the UI design team, built a complete extranet interface for Euphorion's clients to securely access files, project member information, and mailing lists. Features included: Windows filesharing access for Euphorion staff, web upload capability for client, complete administrative control via the web, no back-end database needed, all information encapsulated in client directories, full per-client authentication and external anonymity (no one client can see what the others are). Used: HTML::Mason
Mason Gallery
My own take on automatic thumbnail generation: simply create a directory and toss images to it under the /pics tree and they are automatically accessible (no index.html or anything needed). Pages are cached efficiently and only regenerated when necessary. Other features include JPEG Exif data and thumbnail extraction, RSS feed, and simple search. Used: HTML::Mason
Comics Page
A configurable, databased-backed, multi-user comics page system for my private use. Contact me for a demonstration. Does many interesting things with caching and failure management. Also provides an RSS feed for use with rich aggregators. Used: HTML::Mason
Temperature Page
This application combines a back-end cron job to gather temperature data with a simple front-end graphing page. Used: Ruby, Rails, RRDtool

Education:

UC Berkeley, Berkeley, CA.
Bachelor of Science Degree in Electrical Engineering and Computer Science (EECS), Computer Science Emphasis, received 12/1998
Course-work included: