I've spent more than a decade turning customer needs into technical specs and delivering software slowly and steadily over many small iterations/deliverables. I've delivered software solutions as an individual, and as a member of small teams.
I have worked with various database systems, but spent the most time with MySQL. I have worked on desktop and web applications, but mostly web applications since ~2010.
I have experience with large web frameworks, but am comfortable building a toolbox out of composable libraries.
Cake (consumer software), 2016-2017 (remote)
With two other developers, added features and fixed bugs to get the node.js/Express/React app Cake closer to shipping.
eDataSource (email marketing industry), 2013-2016 (remote)
- With a team of 3-4 developers:
- Built and maintained a distributed Java application that processes millions of emails per day, indexing the commercial email campaigns and storing the results in MySQL and ElasticSearch
- Developed a client-facing AngularJS application Email Analyst, used by email marketers to determine the effectiveness of their marketing campaigns and diagnose email deliverability problems
- Maintained Boxbe, a spam-filtering service used by 1M+ users
- Built the internal admin site used to manage the domain/brand/company taxonomy, and administrate client user accounts
ISoft Data Systems (car parts and heavy truck parts industries), 2005-2013
In roughly chronological order:
- Performed maintenance and feature development for an inventory/point of sale application built with C++/MySQL
- Wrote a minimal CRM tool for internal support use, using PHP and MySQL
- Wrote an AJAX-based clock-in system with a PHP/MySQL back-end
- Worked with partner customers to develop an enterprise application, writing specifications and delivering features
- Developed a push-based replication tool for MySQL databases
- Became lead developer/designer of legacy Windows application
- Codified standards for internal documentation in the company wiki, curating and maintaining all input
- Developed an XMPP chatbot for use in company chat rooms using C++/Gloox
- Developed an application for performing queries directly against Quickbooks company files
- Developed a prototype for a PhoneGap-capable mobile version of parts search portal HeavyTruckParts.net with jQuery Mobile, PHP, TinyMVC
- Developed a web application for enterprise inventory software, for use on mobile hardware with barcode scanners
As the sole phone support tech during my first year at ISoft:
- Handled all incoming support calls for a Windows-based application
- Maintained and added to a suite of reports built with Crystal Reports and MySQL queries
- Travelled to customer locations to perform installations and training
For a long-form description of my time at ISoft, click here.
- Noddity, a client-side wiki/blog framework
- abstract-state-router, a framework-agnostic nested state router for web applications
- susdsearch.com, an improved search site for some of my favorite content creators that scrapes their main site
- communalchecklist.com, a low-friction gift registry/checklist
An arbitrary selection of my smaller libraries
- sql-concat, for building SQL statements programmatically
- financial-arithmeticator, for arbitrary-precision arithmetic on financial values
- mannish, a mediator focused on reducing coupling between stateful modules in larger apps
For a more complete list of libraries I've published, see tehshrike.github.io.
I have written a few posts related to my software projects:
- Writing Noddity
- Why your webapp needs a state-based router
- Side project post-partum: Communal Checklist
- Writing SQL for applications
Delivered products/features using:
I'm particularly interested in the chance to work with Clojure, Elm, Elixir, or other languages focused on simplicitly through pure functions.