I build software for a living —
to do what I love with those I love.
I designed and directed this site — the agents did the typing.
About
In 2009 I started writing code inside Second Life, of all places. What sold there was unglamorous infrastructure — contest boards, schedule boards, event boards, auction systems — the tools other people used to run their virtual businesses. That hobby convinced me this could be a career, so I went and got the degree; in 2013 I took my first engineering job as a Junior Software Engineer at ThermoSoft. The store kept running alongside the day job for years after that.
Today I'm a Senior Software Engineer with years behind me, building REST APIs and event-driven services on the B2B engineering team at Delta Defense. The approach hasn't changed much since ThermoSoft: find the root problem before proposing a fix, then eliminate it rather than patch around it. Lately I've been widening the stack on purpose — TypeScript, Docker, Cloudflare, AI tooling. This site runs on Cloudflare-native infrastructure end to end, which is an interest that first took hold years ago at LPi.
When the laptop closes, we're usually planning the next trip — out on the water, somewhere along a trail, or anywhere warm enough to swim. Hawaii and the Caribbean have both earned repeat visits.
Experience
Delta Defense is the service provider behind the U.S. Concealed Carry Association — training programs and certifications for concealed carry and self-defense nationwide, plus a membership program bundling training material, software, self-defense liability insurance, and legal counsel. I joined as a Software Engineer working on business-critical APIs across partner workflows and membership systems. The first stretch was on the Grid team, supporting individual customer memberships; I later moved to the B2B team, where we build the group and business membership side. Leading high-initiative projects and becoming an integral part of that team is what earned the promotion to Senior Software Engineer. I've spent the time since on team-level leadership, pursuing initiatives that align engineering practices across teams rather than one team at a time.
LPi started as a print-and-ship shop for church bulletins. The business model changed shape entirely when they started selling ad space inside them — enough ads made a bulletin cheaper to produce, and for some churches the ad revenue covered printing outright and then turned a small profit. Out of that grew WeConnect, a home-grown CMS churches used to build and manage their own websites, and ParishesOnline, a searchable nationwide directory of churches and their advertisers. I spent just over five years on the PHP team behind both, growing from a Junior Software Engineer shipping small fixes into a mid-level Software Engineer owning backend services end to end. That's where I got deep into REST APIs and MySQL schema design — the same backend foundation I still build on today. Part of what drew me to LPi was their growing interest in serverless infrastructure like Cloudflare and AWS, and that interest carried straight through into how I build things now.
ThermoSoft manufactures electric radiant floor heating and snow-melting systems. I was hired as a Junior Software Engineer to rebuild their manufacturing software in PHP, and on day one we pivoted to vanilla JavaScript instead. My mentor set up the core architecture so I could hit the ground running; about 90% of the build from there was mine. It came out as a full single-page application integrated with SAP Business One, running the production line end to end — bill of materials, serial numbers, barcode printing and scanning at each stage, electrical QA, custom reporting, and UPS shipping, from raw wire to shipped product. Winning over a skeptical warehouse team turned out to be as much work as the software itself, and that argument settled itself once raw material could finally be tracked by batch, support could resolve issues faster, and the warehouse floor got measurably quicker. The system is still in production today, years after I left.
Kirkwood Community College is a public college in Cedar Rapids, Iowa. I spent the first year at a small branch campus in my hometown so I could work full-time and take classes in the evenings, then moved to Cedar Rapids for the main campus. The coursework covered the fundamentals in Java, Visual Basic, and PHP, and for a while I earned a little extra cash tutoring other students in my own classes. Three years in, I left with an Associate's in Computer Information Systems plus Web Development and .NET certificates.
Second Life is a massively multiplayer online virtual world, and it's where I wrote my first real code. I taught myself LSL — Linden Scripting Language — by reverse-engineering open-source scripts, then built and sold dozens of products under the Lastat Productions brand for Linden Dollars, the in-game currency. Nearly all of it was infrastructure other business owners used to run their operations: contest boards, schedule boards, event boards, auction systems, and HUDs (heads-up displays). The store eventually carried a support group of over a thousand members, and I reinvested the income by hiring more experienced developers specifically so I could study how they built things. Somewhere in there I realized I could see myself doing this for a living, which is what sent me to college. The store stayed open for years afterward, running alongside the professional career.
We redesigned Delta Defense's group membership program end to end, so business partners can enroll their members into the USCCA program by web form, file upload, or direct API integration. The bulk of the work wasn't the code — it was extracting the actual problems out of non-technical teams and then engineering a solution that removed those problems rather than patched around them. Getting it across the finish line took several architectures: an early Kafka-based event-driven design, then Retool-hosted databases and workflows, and finally the current shape, where Retool only drops the file and the API owns the parsing and the business logic. What we run today is almost entirely automated, with real error logging, room to scale, and proactive alert monitoring that catches problems before customers ever notice them. The clearest signal it worked came from the sales floor: account reps who had previously refused to sell the product line started actively promoting it. I led the redesign with the support of my tech lead, coordinating customer communications and stakeholder alignment across multiple teams — the work that led directly to my promotion to Senior.
Here I built a complete single-page application in vanilla JavaScript — before modern frameworks really existed — to run ThermoSoft's entire manufacturing pipeline. It leaned on SAP Business One's XML API to pull bills of materials and work orders and to report back the materials actually consumed. Every stage of manufacturing got an interface designed for that stage: the system generated serial numbers and printed barcodes that were scanned as product moved down the line, which kept most stages hands-off-the-keyboard. It recorded electrical QA ratings for each mat and rejected anything that missed the quality bar. At the end of the line it drove the UPS API through packing and shipping — creating shipments, assigning tracking numbers, and validating addresses — and logging each box's contents gave our support teams a way to trace product loss and tighten the shipping process. When UPS started pricing by box size rather than weight alone, our mats were light for their size, so the software began recommending box dimensions from each product's size and quantity to hold shipping costs down.
Adventures
Family, nature, speed, and water — the things that keep me curious and grounded.
Time in the sun and on the water is my favorite way to reset. I've always been happy swimming, running a boat, or just floating down a river, and when COVID shut everything else down my wife and I bought kayaks and took to the rivers. Over the next few years I paddled the entire lower half of the Wisconsin River in stretches. The longest push was a five-day trip covering more than 65 miles — the longest I've gone without a real shower, and one of the trips I'm proudest of. Every one of them handed me a new problem to solve and a lesson about what to pack.
Most of our vacations end up in or around the water too. I've swam with sharks in Hawaii, ridden a jet ski in the Gulf of Mexico, and taken a sailboat charter out on the Atlantic. Closer to home in the Midwest, it's usually a rented pontoon or a day spent tubing down the river.
The next goal is underwater. I've done a private instructional dive in Hawaii and a group dive in Bonaire with my oldest daughter, and I'm working toward a PADI certification off the back of those. Being able to dive on my own while on vacation would be a real addition to the toolkit.
Hiking is the one outdoor thing the whole family can do anywhere, which is most of why we do so much of it. Living in Wisconsin, we hiked the Dells, the Kettle Moraine parks, and the Lake Michigan shoreline. Now that we're in eastern Illinois, Turkey Run State Park is the favorite — gorges, a stream running through the middle of it, a long suspension bridge, and a stretch where the trail simply is the creek, which is a strong argument for water shoes. We haven't finished every trail there yet, and I'm in no particular hurry to.
National parks and forests are the other pull. We've hiked in Michigan, Florida, and New Mexico; my wife and I rode side-by-sides in Hawaii, and I took my oldest daughter horseback riding in Tennessee and Aruba. Every one of them has its own ecosystem to walk into, which is the whole point. Great Smoky Mountains National Park in Tennessee is the one we keep going back to — beautiful, full of history, and good every single time.
Yellowstone, Zion, and Glacier Bay are all still on the list. We'll get there.
Seven years of competitive FPV — first-person view — drone racing, and it's still the closest thing to a rush I've found. Something about flying a quadcopter clicked immediately, and it wasn't long before I was winning most of the local races I entered. I qualified for MultiGP Nationals every year and made it to two of them, in Las Vegas, NV and Daytona Beach, FL.
Wanting more racing close to home, my wife and I built the Team Ramquad chapter with a few close friends behind us. We secured a dedicated field and ran five races every summer alongside organized weekly practice, usually with ten or more pilots competing for bragging rights, from first-timers to seasoned racers. To promote the races I designed and built a custom broadcast system that relayed every pilot's video feed, and we streamed each race to YouTube, Twitch, and Facebook at the same time.
Competitive drone racing is a chapter I closed when we started a family and moved to Illinois, and I have no plans to reopen it. Going from pilot to race director taught me a great deal about the sport, about what it actually takes to compete, and about how much of it runs on the community holding it up. I'm proud of what we built there and of the friends who came out of it.
Contact
Whether you're a future collaborator, an employer, or someone who also paddled a river they had no business paddling — I'd love to hear from you.
Protected by Cloudflare Turnstile · Your email stays private