David J McLaughlin

Software Developer

This page is broken into a few sections, I've included an overview at the beginning of each section for convenience.


 

Skills

Here is a collection of tools and technologies I've worked with, they are tagged 1-3. Items with a 3 mean I'd be comfortable immediately leading an important project using that item, I understand it at a core level and am confident I know where the major gotchas are. 2s are items I'm comfortable working with on projects but there are still some unknowns to keep me from calling myself really well-versed. And 1s are items I may have worked with in some small capacity.



 

How I got interested in software

TLDR

I got started with .NET back in 2006 making modding tools for Halo 2 on the Original Xbox. I turned my Xbox modding skills into a small business, selling modded disk drives, hard drive expansions, and modded controllers for the Xbox 360 to friends. I built a few tools and a website for my Mom's ebay business. And I worked on some larger projects around the game Guild Wars 2, which helped jump start my career.


Middle School

I started programming in 2006 with .NET, I was playing way too much Halo 2 and fell into the glitching/modding scene. Back then Halo 2 was actively being reverse engineered, all sorts of cool projects and tools came out of that effort. I mostly reimplemented functionality found in other tools, patchers, map resigners, basic map property editors. Nothing new or particularly useful, I was pretty out of my depth, but I was so interested I couldn't help but follow along and try to make my own things.


After Halo 2, I got into writing small bots for Runescape. They typically didn't work very well, often getting stuck on walls or other terrain. At first I was using SCAR, basically it was/is scripting language & IDE centered around macros. There was a lot of prior art with SCAR, tons of examples, small one-off automations, and fully workable bots available on various forums so it made it very easy to learn. After spending a bit of time modifying other peoples scripts I started writing my own stuff In C#, I wanted to build something like SCAR but less general purpose. I started with simple auto-typers and eventually implemented a macro recorder/editor that became very useful because of how easy it was to make ad hoc automations.


High School

I spent most of my energy modding games and automating whatever I could. I built a few small tools for my Mom's ebay business, a small website in PHP and later a template populator tool. Ebay allowed custom html templates to be used on their listings, so I built an HTML template and a tool that would allow my Mom to fill it in via a simple WYSIWYG editor, she could add images directly from her camera, do basic image edits (cropping, quality, brightness, contrast, etc), and upload all from one simple UI. I started a small 'business' of my own building around modding the Xbox 360, I modded controllers, installed larger hard drives, and flashed disk drives to play modded game disks. There was a good bit of demand early on, but things quickly fizzled out once I ran through all my friends, and some of their friends.


I also spent a good bit of time with various Raspberry PI models. I built a dashcam for my car, overall a pretty simple project, most of my time was spent fiddling with gstreamer settings to get the best resolution and quality out of a PI A+. Overall it was a small ABS project box, a PS3 eyetoy camera, a GPIO RTC chip, and a micro usb panel mount cable. Much later I upgraded this to a smaller project box when I got my hands on a PI Zero and an official camera module.

I did a ton of a small projects, a home camera system based on the Motion project, a LAMP server, a Magic Mirror. Probably the most noteworthy would have been my portable game/media station that ran RetroPI. It was the PI project I spent the most time on, and it was the one I used the most. The setup was enclosed in a small carrying case, like the kind you see high-end camera lenses stored in, about 10 x 12 x 5 inches. I used a 5V 10A power brick, 2 powered USB hubs, a 10 inch screen, driver board, and speakers, a 12V fan, and an Acrylic sheet to cover the electronics and provide a keyboard tray for the bluetooth keyboard. I used a handful of panel-mount cables to expose the RCA, HDMI, Ethernet, and USB connections of the PI to the outside of the case, and inside the back part of the keyboard tray there was room for an Xbox 360 wireless controller adapter that allowed controlling the UI with an Xbox controller.


Post High School

After High School, I spent a bunch more time modding games, Guild Wars 2, Halo Online, Counter Strike, etc. Most projects were small one off trainers, but I did a few cool projects around Guild Wars 2. Shortly after Guild Wars 2 launched someone figured out that the Trading Post (i.e. WoW Auction House) ran through an HTTP REST API, which meant it could easily be interacted with programmatically. I quickly jumped on this, building out a custom GUI to overcome the shortcomings of the in-game UI, like the lack of filters. To give a bit of context, there are salvage items, which are items like armor or weapons that can be broken down into their base crafting materials, when salvaging items there is a range in the quantity of crafting materials received, typically 1-3, and you can get multiple different crafting materials, so from a sword you may get 2 iron and 1 wood when you salvage it. At the time there were a lot of items that when bought in bulk and salvaged would be profitable, it wasn't immediately obvious unless you ran the probabilities, so the demand was pretty low for most of these items. Profitability was good per item, roughly +20%, but overall the amount made per item was low, like making 20% on a 50 cent chocolate bar, you have to sell thousands to make any real money. This was in large part what inspired me to build my own Trading Post UI, to continue to make it worth my time I needed to salvage thousands and thousands of items, so I needed automated buying and more complex querying.

I hope to write a blog post sometime about my trading bot, as well as the bot I built that only used computer vision, as these projects played a big role in jump-starting my career.



 

My career at a high level

TLDR

I started out at a tech support company, building simple automations in .NET & Powershell and web-apps in PHP to improve technician productivity. From there I moved into an energy services company, they integrated with around 15ish utility companies, serving hundreds of thousands of customers. The system was Event Sourced, microservices would process messages from utilies and build a materialized view in SQL Server. I then moved into a startup in the online ordering space, they have a bit of a unique offering in that they integrate directly with restaurant's POS machines, saving restaurant staff time and energy when compared to other services like DoorDash.