Solving problems

Writing a PNG encoder in JavaScript - Dark web operatives needed to take full-page screenshots, but the Tor browser wouldn't cooperate... sometimes you need to get down to the byte-level and do it yourself.

Stealing techniques from Apache Lucene - A deep-dive into the Lucene source code gave me the education I needed to create my own inverted-index search solution, unlocking the value from multiple terabytes of data.

Massive OSINT automation - Automation, discovery and aggregation of threat intelligence at scale to 10X analyst productivity.

Ditching React to build a framework from scratch - When a complex ReactJS setup became too heavy, I drastically reduced code complexity and removed tens of thousands of lines of code by building our single-page application with vanilla ES6 and modern browser APIs.

Leading a team

Cluster computing the world's ugliest data - After prototyping solutions and writing library code, I hired, trained and managed a team using Spark and Hadoop to process the world's ugliest data.

Letting others look smart - The time came to re-write a system I had built in a weekend. I wanted to do all work myself, but I made the smart choice and hired another developer to do the work (and get the glory) — relegating myself to simply managing the project. I missed out on all the fun, but the code turned out great!

Joining a team

Ramp up and "un-spaghetti" - A Vue.js app started getting out of hand, so I joined the frontend team to help refactor and follow best practices. I quickly learned the codebase, learned Vue.js and the Vuetify framework, and then started adding new features while reducing lines of code.

A culture of testing - After getting up to speed on a large server-side codebase with significant technical debt, management asked me to start guiding the team towards a culture of testing and writing testable code.

Listening to users

Skip the SPA, use Google Sheets - Give the users what they want by delivering useful data directly to Google Sheets.

It all started with some poker bots - Back in the Chris Moneymaker heydey of online poker, I gained a ton of experience creating poker bots for sites like Party Poker and PokerStars. This is where I started learning software architecture, image processing, and automation.

Pangea Poker - A classic-style browser-based interface for blockchain poker.

Way too many scrapers and bots - I've made way too many scrapers and bots for sites like Amazon, YouTube and LinkedIn. But I made my clients happy and I discovered great tooling and techiniques that I still use today.