There Was Never Any Documentation
I have never been able to answer “tell me about yourself” in an interview. I get about four sentences in, realize I’m narrating a timeline, and watch the other person’s eyes go somewhere else. The problem was never that I lacked material. The problem was that I kept trying to tell it in order.
Here is the actual answer, and it took me twenty years to notice it: every job I have ever been good at was handed to me as a black box with no manual. Somebody built a thing, then left, and the thing kept running, and nobody knew why. My entire career is that same situation over and over with different acronyms on it.
The rest of this is evidence.
My dad opened the box
I owe most of this to my father. He was a genuine gear head. He and my uncle broke and re-fixed dirt bikes as teenagers, which turned into wrenching on cars they drag-raced, which turned into being a mechanic for most of his life. He worked at an auto garage out of high school and by the time he passed away he’d been a maintenance supervisor at a bread factory and the in-house mechanic at a bowling alley, fixing Brunswick pinsetters.
What mattered wasn’t the mechanical skill. It was that he was completely unbothered by not knowing how something worked. He’d just start taking it apart.
So when we got the family PC, the communal one in the dining room that every household had, it took him about a day to pop the case and notice the shop had shorted us on DRAM. He drove back and got that sorted. That was the first domino.
I don’t remember the year. I do remember being called in from the backyard because he’d finished setting everything up and the dial-up had connected. The first website I ever visited was Nickelodeon.com.
Pretty quickly he was “fixing” computers for everybody we knew, and the house filled up with a hoard of parts, Windows install disks and floppies, and roughly ten thousand AOL CDs. He ran Cat-5 drops through that ancient house once we got DSL, because WiFi at the time was terrible.
Christmas 2000, my parents gave me my own desktop. It came with Windows ME. My dad had gotten into the Windows XP beta and we kicked off that install before driving to my grandparents’ to swim for a few hours, which is how long it took. I’m fairly sure the CPU was a 900MHz Athlon with a scorch mark on the heat spreader.
I’m not going to pretend that 90% of what I did on that machine wasn’t playing games. But I was absorbing how the thing worked, and before long I was helping my dad build and repair other ones.

The Xbox is where Linux got me
Around 2003 my dad brought home an original Xbox he bought off a coworker, and it became a fixation. Thirteen-year-old likes video games, shocking. But those consoles were absurdly moddable. I worked my first job, tending the snack bar at the bowling alley, for a few weekends to fund a mod chip and a respectable 80GB hard drive. A dollar per gigabyte felt like a steal.
I bring it up because I’m near certain that was my first exposure to Linux. It was genuinely wild to me that I could boot a game console into a desktop environment, not least because it was plugged into a TV. XBMC was the other one. Playing video files off a network share on the living room television seems quaint now. In 2003 it felt like black magic.
Somewhere in there I also went through a phase of believing I was a graphic artist, got dangerously handy with Photoshop 7, and built a bunch of almost certainly cringeworthy websites in Dreamweaver. I met some guy on a message board who had a VPS and set me up a tenant with a subdomain. I had an anime website on the live internet by 8th grade. I have no idea what the domain was, which is a shame, because there’s a decent chance the Wayback Machine has it. That also reminds me of my first real fight with a database: getting MySQL configured on some free-tier host so I could run phpBB for all five of my friends to post on.
RuneScape, or how I learned to program by refusing to play a game
Toward the end of 8th grade, a bunch of my friends and I got very addicted to RuneScape. Anyone who has played it knows where this goes. The game is monumentally grindy and repetitive, which is the perfect environment to motivate a kid who doesn’t yet understand his own obsession with automation to learn enough Java off message boards to write scripts that play the game while he sleeps.
I found the botting community just after Jagex had permanently killed Autorune. That was the impetus for modified game clients that let you run scripts against the client directly, and those clients were expensive to produce. Jagex was using Zelix KlassMaster, which didn’t just strip comments and rename symbols, it rewrote the bytecode into something logically equivalent that broke Java decompilers. What came out the other end was source that wouldn’t compile without serious work.
Fortunately, smarter people had already solved that. Several “bots” existed. I put that in quotes because looking back, what they actually were is an API and framework:
- A deobfuscated copy of the game client source
- Symbols renamed into something human,
b.javabecomingengine.java - A scripting layer on top, usually a class you extend to get helper functions in the namespace, things like computing a game object’s on-screen coordinates or generating human-looking mouse movement
The first one I used was sBot (I found a archived version of v1.0 and decompiled it. Script.java is the main thing of note here). My first program ever was a script for it. Bots at that point didn’t bother with mouse or camera control, they just made the same function call to the server that clicking would have made. My script was an auto-trainer. When your character died you always respawned in the same spot, and there was a cow pen nearby. The script walked you to the pen if you weren’t already there and attacked cows in an infinite loop. When you eventually succumbed to bovine-inflicted injuries, it detected that from the game’s global coordinate system and walked you back.
Someone has since archived an enormous pile of RuneScape Classic botting material, and almost all of my old sBot scripts are in there. Finding them was surreal.
RuneScape 2 came out shortly after I got into this. Big visual upgrade, same fundamental architecture, and deobfuscated client code was available before long. I kept writing scripts, but the project I actually care about from that era was my own. I had finally started to grasp OOP and had gotten very into IRC bots. There’s a Java IRC library called PircBot. I took a deob of the current client, imported PircBot, and worked out how to swap the in-game chat for the traffic in one of the IRC channels we all lived in.
It worked. My write-up earned me the Java badge on the Kaitnieks forums. It also got my main account permanently banned a day or two later, because I forgot to censor my username in a screenshot and it turns out Jagex mods read those forums too.
There’s an aside here I’m still proud of. I also played a Java game called Cannons, and its client was obfuscated too. Having just spent a year immersed in this, it looked like an obvious target, and RuneScape’s protections were far more advanced. Most of Cannons decompiled fine. Only a handful of functions had been mangled at the bytecode level badly enough to refuse. I also noticed every string in the client was stored encrypted in big static arrays, and the functions that wouldn’t decompile were exactly the ones responsible for decrypting them. Teenage me read the bytecode until he understood the algorithm, then decrypted every string in the game. I got to a set of sources that built and ran. What defeated me was the sheer labor of staring at hundreds of renamed symbols to work out intent, even with the strings readable.
I found the original client in a GitHub archive recently. I’ve been using Claude Code to finish what I started. Twenty-odd years is a reasonable turnaround.
Formal education, briefly
Getting banned was probably a blessing. I stopped pouring time into playing and kept the part I liked, which was automating it. It is more fun to automate that game than to play it, and I don’t think you can blame me.
Somewhere in here I successfully installed Gentoo from the handbook. I have a vivid memory of sprinting back and forth across the basement between my machine and my dad’s, where I had the handbook open, hand-typing every command.
I went to Sun-tech for my senior year of high school, into electronics technology, which was structured as the entire first semester of an EE degree from Pennsylvania College of Technology. I immediately found uses for the programming. The TI-83 I had to buy for the class was programmable, so I programmed it constantly and passed the results around on link cables. I loved the digital electronics portion far more than I expected. Finished the year with a 4.00 and 15 credits, so I enrolled at PCT and kept going.
Here was my partner and I's entry into the lego robotics competition at PCT that year we were at Sun Tech. That's me operating it with the glorious mane.
College kept being fun for the same reason. I had to implement 16-bit multiplication on an HC12 in assembly using 8-bit registers before I was allowed to touch C. One final project was wiring a potentiometer to the HC12 board so you could dial the CPU clock frequency by hand. For an open house, where they parade prospective students through campus, my group built a part sorter using a rotary indexer, a machine vision camera, and a robot arm. It sorted round objects from square ones. Proof of concept, but it worked.
I had to work that day, so I wasn't there to present the project. Rest assured I did all of the programming.
I waited until about three years in to decide EE wasn’t it and CompSci was. Transferred to Bloomsburg, did a year, ran out of financial aid, and dropped out. I got perfect marks in two Java courses, discovered Python and Jython, and got my first real exposure to SQL. Hold that thought.
The mill
Early 2013, I’m looking at two more years of tuition with most of my aid gone.
My wife, then girlfriend, worked with a woman whose dad was a programmer at the textile mill in town, and mentioned they’d been struggling to find another one. I found out later they’d been through at least four people in the two years before I interviewed. I’m confident that worked in my favor.
I convinced them to hire me with zero idea what an AS/400 or RPG even was, on the promise that I’d get up to speed fast. I was there a little over seven years, until it closed for good in 2020.

I did get very familiar with basically every flavor of RPG, because there were thirty years of in-house programming to maintain and debug and not a fucking shred of documentation. No comments either. Just working code and the people who wrote it long gone.
This is the part where the pattern clicks. It is the same problem as a deobfuscated game client. Somebody’s intent is in there, encoded in symbol names that mean nothing and control flow nobody explained, and the only way through is to read it until it makes sense. I had been practicing for this since I was thirteen.
I learned quickly that you could run SQL on that box. I hadn’t cared much about SQL in college and suddenly it was a force multiplier. Then I learned IBM shipped official JDBC drivers for the AS/400, which meant Java, which was my whole background. I’d also figured out by then that laying out a quick GUI is much faster in Python than Java, which is where Jython comes in. Jython let me import IBM’s JDBC driver and build the rest of the tool in Python.

The things I built there, roughly in order:
- EAT XML mapper. Jython. Tech designers exported pattern specs as XML from their design software, and the tool pulled out what was needed and wrote it straight into the AS/400 tables.
- Loom layout. Jython. Let weave shed supervisors enter weaver and fixer sets, who was running which looms, directly into the system instead of on paper.
- Pick entry. Pure Java, running on Windows tablets. Two people read production totals off the looms and entered them straight into the AS/400.
- Pick maintenance. Java GUI, and the last piece of the incentive pay overhaul. With sets and production totals flowing in directly, the manual entry that had been eating 10-plus hours a week was gone. After this, nothing in the process happened on the AS/400 except the weird black-box algorithms that computed the actual dollar amounts.
- FTP-based “EDI.” In quotes, because real EDI has its own transport layer and all the fees that come with it. Several customers preferred CSV, TSV, or XML dropped on a shared FTP site. Invoices, advance ship notices, the lot. I wrote the Wells Fargo interface too, since they factored most of our clients.
- Finished goods interface. During the transition off the AS/400, when the new ERP owned finished goods and everything else was still on the old box, I wrote the interface that built the transactions to create finished goods inventory in the new system. (and the eventual return route to auto-close invoices in the AS400)
Those three incentive pay tools are the ones I’d point at if you only let me keep one thing. They fed the calculation behind people’s paychecks. That is a very different feeling from writing a script that farms cows.

How I became an analytics guy without deciding to
All of the above happened in roughly my first five years, right up to being acquired by Glen Raven, a much larger mill out of North Carolina. Glen Raven was already on the ERP we were migrating to, so that became the focus immediately. It was a wild year, maybe eighteen months. That period is when the pivot into analytics actually happened, though nobody announced it.
By then I was very handy with SQL, and the process engineers and finance people at the new company quickly worked out that I knew where the data lived in the AS/400 and how to get it out. I also got tight with their desktop support team and became the guy onsite with elevated permissions who could help debug things.
Eventually I owned a weekly plant operation summary published up to Glen Raven, and built quality tracking plots in Excel with one of the process engineers, posted every week.
Nobody handed me an analytics job. I ended up doing analytics because I was the only person who could answer the questions, and once you’re the person who can answer the questions, that becomes your job. When they closed the Sunbury plant in 2020, that was the direction I looked in, and it’s how I landed at Geisinger.

Now
I’m an analytics engineer at Geisinger, in Quality and Safety Analytics. Databricks, PySpark, a lot of MS-SQL. Finishing a CS degree I started fifteen years ago.
Off hours I run a home lab, reverse engineer the BMS in my golf cart, poke at the CAN bus in my RV, and, as mentioned, am finally finishing a decompilation I abandoned as a teenager.
So: tell me about myself. I take apart systems that nobody documented, and then I automate the boring part. I’ve been doing it since I was eleven. Everything else on my resume is just where I happened to be standing when I did it.