David P. Bushong
Career Goal:
To work with smart people leveraging awesome tools to get Important Work
done delightfully well.
Expertise:
- Software Development (C, Ruby, Perl, Python, PHP,
Haskell, CoffeeScript, JavaScript, Java, and Bourne Shell) I have
extensive experience providing and consuming various HTTP-layer
"protocols" such as XML and JSON REST, SOAP, OAuth, and OpenID.
I am proficient with a very wide range of command line utilities,
revision control systems (legacy and distributed), shells,
compilers, and editors.
- Server Architecture(Creating, modularizing, managing, and
iterating on designs for horizontally scalable high-traffic,
high-availability infrastructure, operating across heterogeneous
language environments).
- Web Development (HTML, JavaScript, CoffeeScript, (S)CSS, AJAX,
CGI, Perl, Ruby, PHP, Python, and back-end integration using Oracle,
MySQL, SQLite, PostgreSQL, Memcached, Redis, and MongoDB through
Embperl, EPerl, and Mason with mod_perl, eRuby with mod_ruby, Rails
0.x - 3.x, Express with NodeJS, and Plone with Zope). I also have some
image editing experience using The Gimp under UNIX and Photoshop
under MacOS and Windows, and have additionally developed various
back-end image generation tools (dynamic custom web-based
chart/graphic creation and complex image creation and processing
using ImageMagick).
- Release Management (Administering multiple CVS, Subversion,
git, and Mercurial repositories, with access provided via CVSWeb, WinCVS,
Trac, GitHub, and native UNIX clients tunneled through SSH.) I have
written release scripts using rsync and other tools to efficiently
distribute trees of web data and code, as well as provided for
near-zero-downtime rollback where possible. I variously designed
or adopted numerous branching and tagging schemes for releases,
development, and maintenance work. I have managed code releases to
custom host, EC2 cluster, and Heroku application servers and asset
releases to various CDN services
- Systems Administration (FreeBSD 2.2.2 - 5.5, Sun
Solaris 2.5 - 8, RedHat Linux 5.1 - 8.0, Debian GNU/Linux 2.2,
Ultrix 4.2, NetBSD 1.2, Digital UNIX 4.0, Ubuntu 7.10 - 12.10),
supplying SMTP, Ident, IMAP(S), (S)POP3, HTTP(S), FTP, LPD, NFS, NIS,
SMB, NMB, CIFS, LDAP, NAT, IPSec/PPTP VPN, (D)DNS, CVS(up), DHCP, SSH,
VNC, NTP, IRC, NAS, PPP, WebDAV, Subversion, BitTorrent,
and other services securely and efficiently.) I have configured IPFW,
IPFilter, IPChains, IPTables, and various proprietary firewalls.
I have extensive experience with scripting, automation, and monitoring.
I have designed systems for and worked with Hadoop and Amazon
ElasticMapReduce for massive systems parallelization. I have managed
small clusters of EC2 hosts for load-balanced public web traffic.
- Desktop Consulting working knowledge of MacOS, Windows, and
Unity/Gnome Desktop environment on modern Linux distributions.
- PC Hardware/Software (Assembly, Installation, and
Configuration)
Work Experience:
- 2/2013 - present
Senior Development Engineer for Groupon, working on improving their deal redemption rate.
- 11/2011 - 2/2013
Engineering Team Lead for Britely,
a service focused on providing beautiful ways to read, learn, and
remember. I've been scoping, managing, and implementing fast-turnaround
prototypes with scalable architecture considerations, using
CoffeeScript, SCSS, HTML, MongoDB, Rails, NodeJS, Express, and numerous
cloud services.
- 3/2008 - 11/2011
Senior Web Developer for MashLogic,
a Silicon Valley startup focusing on enhancing the end-user
browsing experience. I worked with every aspect of the service,
from browser add-on JavaScript to front-end JavaScript, CSS, HTML,
and image-editing through backend C++, Perl, Rails, and Java web
services, through EC2 systems administration.
- 3/2005 - 3/2008
Senior Web Applications Engineer
for AvantGo, the service
for mobile content distribution owned and operated by
iAnywhere, Inc., a
subsidiary of Sybase, Inc.
I worked with a small team designing new applications and backend support
infrastructure for AvantGo's 7 million user advertising-supported
service.
- 11/2002 - 3/2005
Senior Systems Administrator / Web Developer
for Media Net Link, Inc., a
consulting firm in San Ramon providing "web services for business".
I worked in network architecture, server security, and
web applications development.
- 4/2002 - 11/2002
Independent Consultant providing systems administration and
software development services to a range of clients.
- 11/1998 - 4/2002
Systems Administrator/Web Applications Developer for
Euphorion (formerly DataMain), Inc. (No longer in business), an
e-business solutions provider based out of Milpitas, CA. I handled
planning, consultation, and implementation of security and high
availability networked solutions and did part-time programming of
fast turnaround, resource efficient, web-based applications.
Additionally, I managed much of the internal IT infrastructure
necessary to provide transparent, secure access to intra and extranet
data.
- 8/1996 - 11/1998
Systems Administrator
for the DECF at
UC Berkeley. Responsible for
student, faculty, class, and staff account creation and maintenance,
as well as security and troubleshooting on 1400+ user system.
- 5/1996 - 8/1996
Webmaster and Technical Support Engineer for
InterCon Systems West. (No longer in business)
Maintained and downsized transitional
web page (http://www.svcdudes.com/, no longer in service);
Handled technical support for
TCP/IP and telecom products via phone, fax, and e-mail.
Projects:
- WoolGather
- An ongoing project to create a WebSockets-based IRC client+bouncer,
to maintain a persistent, searchable connection to multiple chatrooms.
(Possibly multi-protocol in the future) Used: JavaScript, HTML5, WebSockets, Node.js
- 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:
- Data Structures: emphasis on C++ data structures
- Machine Structures: emphasis on C and MIPS R3000 assembler
- Operating Systems: emphasis on threads and concurrency in C++
- Database Management Systems: emphasis on RDBMS
- Programming Languages and Compilers: emphasis on OO language design
- Foundations of Computer Graphics: emphasis on 3-D modeling.
Also see the project home page
- Components and Design Techniques for Digital Systems:
emphasis on efficiency in logic design
- Engineering Economics: emphasis of practical aspects of
engineering cost structures
- Software Engineering: emphasis on group dynamics and modular
design. Also see project
home page.
- Efficient Algorithms and Intractable Problems: emphasis on sound computer
theory