Contact
- +1-781-990-UNIX
- +1-781-990-8649
- webwork@(my name).com
Capabilities
Through the years I've worked on enough different projects and platforms to accumulate a rather wide and varied set of skills.
Project Examples
Over the course of recent engagements, I've produced solutions to a number of different problems in a variety of sectors. To present a sampling of efforts, I've:
- architected and prototyped a complete rework of an online video ingestion, conversion, and distribution system, including a hybrid MySQL/NoSQL schema, a cascading, role-based access control system, as well as conducting research, evaluation, selection, and integration with third-party, hardware-accelerated codec conversion and quality normalization mechanisms.
- designed an extensible system for a client in the online advertising space to correlate user identifications across various ad-serving networks, implementing a configuration and extension tool in Python, server-side hooks in Lua, and client code in JavaScript - which I was also responsible for verifying across a wide range of browsers, up-to-date and otherwise. (Odds are you have cookies from that system in your browser right now.)
- diagnosed both software and hardware problems in a client's embedded system, located and specified cost-effective off-the-shelf replacement devices, designed, implemented, and QAed a highly pluggable, efficient software solution in C to handle their mission-critical, quasi-realtime processing, and supported deployment efforts - deployments which've never seen a single software-related outage.
- conceived and built a zero-knowledge webapp in PHP and JavaScript, allowing a client to safely pass sensitive customer data over relatively untrusted hosts and services, providing end-to-end security and improved user confidence.
- designed and implemented a meaty, robust JavaScript widget which, due to deployment situations, could not reasonably depend on external libraries and had to be constructed in a standalone fashion, while still needing to carry out extensive UI and cross-domain asynchronous IO operations - long enough ago that cross-browser problems were still a much bigger issue.
- reverse engineered a proprietary network protocol (for legitimate compatibility purposes) and constructed a server for it in C.
- designed and built a LAMP-based system for managing automated advertising campaign distribution across regions, verticals, vendor types, etc..., supporting impression-limits, inter-campaign competitive conflict resolution, and product-based triggering.
Interaction Examples
Of course, technical skill is only part of the story. Projects don't take place in a vacuum, as human interaction is a huge part of business. Over time, between independent work and my conventional career I've:
- regularly liaised with remote workers from as close as Florida and New York to as far away as Vietnam and the Czech Republic.
- often helped clients present and justify proposed solutions to their management, board, and/or investors.
- mentored junior engineers, as well as more senior contributors who were looking to adapt to a different context.
- built up extensive experience gathering requirements and turning them into functional specifications.
- frequently been the trustworthy voice and face of
engineering in pre- and post-sales contexts, as well as client
calming and expectations-management situations including:
- mollifying livid US Navy admirals sufficiently to gain a support opportunity and quickly resolve their root issue. (This happened a number of times, actually. They always went away happy.)
- providing "how [the service] can solve your problems" spiels to NCAA head coaches, fielding questions, helping with initial platform familiarization, and collecting / prioritizing feedback to guide future development efforts.
- satisfying the information and security officers of a large German bank that the solution in question was the right choice for them, despite being the only technical representation on the call, and said call coming in at approximately 3 AM without warning.
- driving retail IT device adoption by working to allay brick-and-mortar operators' fears through one-on-one architecture explanation, risk/reward breakdowns, and low-hassle system customization, where needed.
- traveling to Riyadh on less than 48 hours notice to support a deal with the largest telecom provider in the Arab region, where I was tasked with field issue diagnosis and resolution as well as being "the guy with the wrench" in meetings with their top brass.
Skill Details
To give a quick, non-comprehensive rundown of skill experience:
- Languages: assembly (Motorola, SPARC, x86), AWK, Bourne [again] shell, C/C++, CSS, HTML, Java, JavaScript, Lua, Perl, PHP, Python, Scheme, SQL, Tcl/Tk, XPath/XSLT
- Contexts: daemons, databases, installers, kernel drivers (Solaris and Linux, mostly, with some Windows and OSX), libraries, web backends and frontends
- Revision Control Use: CVS, git, Perforce, RCS, SVN
- Revision Control Administration: CVS, git, SVN
Networking
When it comes to the subject of networking, I've done so much in that regard that I felt the subject deserves its own section. I have rather extensive, low-level (meaning more detailed, not as in entry-level) experience with:
- ethernet (802.3 and some 802.11)
- IP-over-ATM
- IP (mostly v4, but some v6 as well)
- ARP
- TCP, where I:
- personally designed and built a commercially deployed man-in-the-middle stack.
- implemented and researched connection-state attack
mitigation techniques relating to:
- DoS (single point and distributed)
- Hijack (ISN vulnerabilities, etc..)
- developed methods to enhance end-to-end performance from a middle intercept point.
- proxy (of the deep protocol inspection variety), server, and
(sometimes) client programming with protocols including:
- FTP
- HTTP / HTTPS
- DNS
- IPSec (a common tunneling protocol)
- SIP (a VOIP protocol)
- XDMCP (X-Windows Display Manager Control Protocol)
- BSD-style (rather common) and Solaris-style routing internals.
- clustering (HA/LB) topics, such as:
- VIP (Virtual IP address) management
- application vs. network-level implementation techniques
- problems that can arise via specific failure combinations (and suitable resolution approaches)
- live TCP/UDP connection migration between nodes
- NATing
- many flavors of tunneling.