I'm best contacted through email.
My Curriculum Vitae provides a summary of my work history. I can also be found on LinkedIn.
Here are a few things that I'm proud of:
- I built Tetris in PHP for some reason.
- I have implemented a complete working model of the card game Condottiere in C#.
- I have built a complete model of the dynamic player ability system for the board game Quantum in C#.
- I have built over 70 web applications over the past 25 years.
- I have participated in many game jams. In one my team created a game call Conspicuous where you play as a big-brother type surveillance organization and have to listen in on conversations to find a trouble-maker.
- Working with some others at a game jam I created a typing game / platforming hybrid game called Super Typo Sisters.
- I love building games with my kids. My youngest loved Arkanoid so we built our own version together. I taught the older kid some basics, and she built a tomato chopping mini-game on her own.
- I worked with an artist to create a 2D robot destruction game called Demolitron. You control a giant robot that walks around a large city and destroys buildings. The robot has many forms of attack.
- I created a board game prototype that is completely event-driven, separating the domain from the front-end. The front-end of the game reacts to the events raised in the model, and the state is projected into actors and other front-end behaviors.
- I created a prototype platformer called PunchGirl, modeled after my daughter. I actually made and remade the prototype multiple times in multiple frameworks (there's a bunch, check out my YouTube). She can't jump, but she can punch in any of 4 orthogonal directions. When punching the ground or walls she's propelled in the opposite direction.
- I built a simulation study animated / interactive infographic for my partner's thesis defense.
- I created hours of web development tutorials that instructed developers on how to use tools such as Jquery, Code Igniter, and Laravel.
- I created a 4-hour-long video course teaching event-based programming ideas including Event Sourcing and CQRS. It includes source code for a working application.
- I found a designer that I clicked with in 2007. We used the word of mouth that my video series brought to create a freelance partnership called Big Name. The company lasted over 4 years.
- I managed client acquisition and discovery for Big name. I found that I have a knack for ferreting out requirements.
- I developed and maintained email systems for a medium-sized company for 4 years. It was normal for companies to host their own, at the time.
- After my original partner left to pursue a different kind of work, I met and mentored two developers who came to work with me in Big Name. I'm proud that we had a healthy relationship and a healthy business. They're both very capable developers.
- I founded Laravel.io, the official Laravel community portal Q&A website.
- I created the original Netherlands Laravel meetup. I stopped running it for a while.
- I founded the original Laravel Podcast. I have long since stepped down, leaving it in very capable hands. It's still going strong today.
- I was an early adopter of Laravel and I was part of a culture that brought the chat channel from 10 people, many of whom I brought with me from Code Igniter, to over 450 before I moved on to other endeavors.
- I trained thousands of developers in the use of Laravel through the chat channel, articles, conference talks, videos, and relationships that I made during meetups and conferences.
- My wife and I picked up our entire life in 2010 and moved our family from Nashville, Tennessee to Utrecht, Netherlands. It was a huge undertaking. We had never been to the Netherlands before. Our nationalities are almost completely converted, and I'm proud our hard work and success on this risky endeavor.
- I co-founded Laracon EU, Europe's official Laravel conference. It has hosted ~850 attendees multiple years running. COVID has shut down our in-person events. But we've been delivering trainings and online events in the meantime.
- I am a practitioner of Domain-Driven Design. I have read through the blue and red books, attended workshops, and talks, and practiced the mindset for more than half a decade. I seek to practice the spirit of DDD in the things that I do. I was a somewhat early adopter of DDD in the PHP community and worked to evangelize the ideas.
- I co-founded the DDD Europe conference. It has hosted the world's leading experts in DDD and may be the finest programming conference in Europe.
- I worked closely with leading DDD experts in business and programming context, building and running successful businesses.
- I have designed and built software that managed industrial print-jobs for over 200 printers.
- I've studied functional programming for over 8 years and have integrated the lessons into everything that I've made since. I have experience with Scala, Elixir, F#, and others.
- I single-handedly built a large event-based application that successfully observes and automates hundreds of business processes. I designed the system from the ground up such that it was completely focused on automation through event-based integrations.
- I have traveled to and given talks at conferences in the UK, USA, Netherlands, Serbia, Russia, and India. I may have forgotten some.
- I created a board gaming meetup in Utrecht that started as 6-8 people but blew up into having upwards of 50 people per monthly session. I left the meetup in good hands. It will become active again after COVID.
- Long Long ago I built a simple restaurant server tip-tracking app for Android that sold quite well for years.
- I built an "anti platforming" game as a love letter to my wife, which was available for free on Google Play.
- I have attended over 20 conferences for both game design and web development.
- Linux is my operating system because I have complete control over it. I consider and configure every aspect about my interaction with my computer. I have 25 years experience with Linux, including both at home and at work. Designing and implementing my interactions with my machines is part of who I am.
- I changed from the QWERTY keyboard layout to DVORAK so that I could fix my bad typing form and improve my comfort. It worked.
- I built a comprehensive Telegram SDK with which I make chat bots for my work and personal lives.
- I built a chat bot for my family that handles allowances, including automatic deposit and managing a transaction history so that I won't forget.
- My business chat bots deliver sales and platform information into separate channels in real-time. Everything that happens in the business processes can be broadcast to these channels.
- Over four years as a systems administrator, I designed and built 50+ servers including external RAID enclosures and kept them running in the data center.
- I worked closely with MySQL to set up and manage our 150 gig database, which might not sound like much now, but was significant at the time.
- I worked with MySQL to implement binary replication, which was in very early development and at the time was primarily funded by slashdot and my employer, across a dozen database servers.
- I became very familiar with MySQL and MySQL optimization.
- I implemented and managed monitoring software like Nagios to keep up with the health of my many servers. I wore a pager (more reliable than cell phones) to be immediately notified if there were any problems. This was important because downtime had to be avoided at all costs. We could lose in the 5 digits per hour of downtime.
- I configured load balancers to distribute load to servers that separately hosted and were specifically configured for dynamic and static content.
- I had the honor of working together with a visionary entrepreneur to implement an incredible variety of business solutions. This included data analysis and projection and application development.
- I built the platform for a service called HealthTeacher that worked with curriculum designers to provide health care curriculum to thousands of schools in the north-eastern United States.
- I developed Discovery Hospital by utilizing data owned by Discovery (of Discovery Channel fame) to provide 'drop-in' solutions for hospital websites so that they could provide searchable databases of conditions, symptoms, and other health-related information.
- I use I3 window manager to automatically tile all the windows on my computer. I dramatically prefer the tiling paradigm over the standard window stacking approach.
- I build custom audio widgets for my laptop's dock. They come in especially handy for video calls.
- I build a system that allows me to select a region of the screen, capture it as image data, run it through optical character recognition, and then put the resulting text into my clipboard or perform other operations on it such as translating it.
- I built a custom weather widget for my user interface that uses data from rapid API. It lets me know the highs and lows as well as the current "real feel".
- I created a backup management library that allows developers to both back up and restore their databases with one-click. It currently has over 823,000 downloads on Github.
- I built a completely functional deck-builder (card game) library that can be used to easily create deck-building games in Godot.
- I created my own dotfile (configuration file) management program called "dot-filer". It automatically stores my system configurations into a versioned repository with multiple offsite clones so that I can bring a new machine build up to date with my configurations instantly.
- I created a website where my kid can access videos from YouTube. I white-list channels that she's allowed to access, and it prevents her from watching or being recommended any other content on the platform.
- I created a significantly comprehensive library for rapidly developing applications with event-based architectures as a hobby for my own personal consumption.
- I created a utility that can analyze tags in ROM collections, accept rule based directives, and then project the collection into new folders based on the directives.
- I created a general solution vagrant / ansible based virtual machine management and provisioning setup so that I (or anyone else) can easily set up new virtual machines one-click out of the box without resorting to any kind of niche implementation.
- I have taught myself guitar and bass over the past 20 years. I have played with a number of bands when I lived in Nashville. I am not a fantastic player but, I'm still working to improve.
- I bought a house and placed a full band setup including drums, stacks, mixer, pa, mic, recording bits underground. I rented out the bedrooms that weren't mine and played music with the tenants.
- I am keeping my houseplants alive.
- I married someone who is so amazing that they make me a better person.
- 25 years ago, my friend and I built an EEPROM burner with a parallel port cable and bread board. We used it to program Atmel microcontrollers for nefarious purposes.
- I have experience with Commodore Amiga, 386, 486, etc etc all the way to modern era.
- I have owned > 15 laptops (work and play) over the past 20 years.
- I worked as a consultant for a while where I gained confidence in my ability to solve a wide array of problems without previous experience in those specific areas.
- I'm REALLY good at Mario games.
- I was a competitive Street Fighter 4 player for years. I traveled for tournaments and won no fewer than 6 against strong opposition.
- I owned Killer Instinct and Ultimate Mortal Kombat 3 arcade machines.
- My sport is Brazilian Jiu Jitsu, which is a sort of wrestling martial art.
- I'm an avid reader of speculative fiction. I read over a hundred novels before leaving high school.
- At this point in my life, I value stability and harmony. Because of this, I am able to bring it hard when needed.
- I have an incredibly huge card collection. Absolutely unbelievable.
- I enjoy traveling and giving workshops / training in event-based architecture.
- I spent quite a while learning how to paint board game miniatures. I'm a lot better than I was originally.
- I'm very punctual.
- I have seen over 1700 movies and keep a movie diary.
- I have collected almost a terabyte of family photos and videos and at least annually build more scripts to improve the organization of them. It's part of my legacy.
- My first job with computers was as a bench technician. I would pop a desktop onto the workbench, plug it up, and fix it. One after another. I was 16 and in heaven.
- I have been a conference host for no fewer than 9 conferences with audience sizes up to 850 attendees.
- I wrote an article named "Codeigniter is Dead" about how development on the framework stopped. Some people disagreed, but shortly afterward everyone jumped ship to Laravel.
- I have grown fairly competent with the expansive systemd for Linux.
- My Linux setup primarily consists of custom-built widgets and interaction mechanisms. It's part of my life's work.
- I am incredibly used to wearing medical masks because my best-friend's brother had an immunity disease that prevented him from leaving his house when we were young.
- Whiteboards help me to think, not just develop software.
- I tell the important people in my life that I love them.
- I created a discipline that involves building the most naive possible version of an algorithm and then only complicating it as requirements demand. I wrote over 30,000 lines of code with this discipline as exploratory research.
- I do not feel comfortable or secure if my code isn't backed up with tests.
- I created the Dev Discussions podcast where I sought to expose ideas that I wanted to spread.
- My code style has been meticulously designed over years of experimentation and analysis. My style is a product of my journey. Ultimately it doesn't really matter. But I do have a fondness for my journey.
- I seek to find ways to differentiate myself, but I have also internalized the benefits to standardization. In this, I believe both adaptability and individuation to be kinds of maturity.
- I use powerful development tools, even if it means spending a long time understanding and configuring them. I'm all about the long-term gains.
- My youngest has a browser bookmark to a page where she can enter a message for me. The message shows up on my laptop status bar.
- I led and team of 3 to build the social media site MomMeetMom.com which is a site that mom's can use to find other compatible moms for playdates. The site uses surveys and a statistical model implemented in R to match moms based on their supplied information.
- I have non-trivial experience with over a dozen programming languages (and adjacent) including PHP, C, C++, C#, JavaScript, Python, Scala, Java, SQL, shell script, GdScript, ActionScript, Haxe, Elixir, Ruby, Lua, Perl, TCL, ASM, and others. But I am far less interested in programming languages than I am in programming paradigms. Languages have ways of thinking, and those ways of thinking are what's important. This is the reason that a Java developer can easily use C#.
- Programming is not just work to me. When I was 9 (pre-internet) I saw BASIC on an Apple IIe and it was sorcery. At that time I had never wanted anything more than to be able to program on the computer. I spent the next years filling notebooks with computer programs that I would enter into a computer when I got the chance. I was lucky to meet a friend who was into it to, he would be the only person that I shared this with for many years.
- Modeling is an act of discovery, of learning, of see things in a new way. The act of modeling software is not different from modeling any other problem in life. Designing software over the past 30 years has given me tools that I can use to help understand myself.
- My mid-west Kansan high school didn't provide much of a math education. Over the years I attended community college and worked with online courses like Khan academy to supplement my knowledge. I believe very strongly that a mathematics education is very important for most web development work, even when it's not immediately obvious why, and it's absolutely critical to the rest.
- I have read a significant number of non-fiction programming books. When I pick up a new language, I read a book. When I am about to enter a new situation using a new technology, I read a book. I believe that reading books is often easier and more effective than watching video or reading articles, but of course those are also valuable.
- My favorite author is Neal Stephenson and my favorite books by him are Anathem and Cryptonomicon. Anathem is absolutely a treasure.
- I designed a prototype multi-touch surface using frustrated total internal reflection to transmit IR light into a webcam with an IR bandpass filter which then interpreted the plan of the surface and translated it into cursor movement.
- When I lived in Nashvile, I had a pool table. I got beginner great, intermediate not-great.
- I have a collection of video game cartridges that I loved as a youth. I love both the nostalgia and the self-expression inherent in the selected titles.
- My first computer was 4.77mhz. My second computer was 33mhz. My first modem was 2400 baud.
- I was obsessed with BBSs when I was younger, before the internet became available. I ran one from my house using Renegade, unbeknownst to my parents, on the phone line dedicated to us kids by paying my brothers money every month.
- I moved out of my home state of Kansas when I was offered a Linux sysadmin job in Nashville. They flew me down for 2 weeks for paid work, to get to know me and my capabilities. I got to work with professionals from SuSe Linux and MySQL. 2 weeks later my stuff was packed into a U-haul truck headed southbound.
- When I was 14 I participated in IRC wars. I would compete with other teens to take over one another's IRC channels through various means including building war scripts, exploiting network splits, and exploiting wingate proxies.
- I built and maintained a server rack in my home with rack-mount cases, networking equipment, and elegantly managed cabling.
- I became an expert in the RMA process as a result of managing racks with over 400 hard drives over almost half a decade.
- After my midwest high school education, I started working in computing. I chose to continue my education by attending community college specifically focusing on physics and mathematics.
- I built a complex animation and movement exhibition in Scratch, the snap block programming system by MIT that was made to teach kids programming logic.
- At LAN parties I was the one who fixed everyone's computers.
- When I was 15, I built a significant number of map-making tutorials for Duke Nukem 3D, many of which are still available online.
- I learned how to refurbish original Nintendo console hardware.
- In 1998, I modified two Celeron 300A processors with a soldering iron to enable me to overclock them to 450mhz. I ran them in my Linux desktop with an SMP kernel.
- When I was a teenager, I cut my own coaxial cable to set up a token ring network in my parent's basement so that I could run a beowulf cluster.
- I have saved, sealed, and stored collection of ~100 old video game magazines from the early to late 90's.
- I have unified my computer's user interface with the Nord color palette. This includes everything from my IDE, terminal, dock, file manager, etc. I'll get bored and switch it eventually.
- My favorite movie is Primer.
- I started learning ASM to increase the speed of graphics rendering within GWBASIC games.
Of course, I'm more than a self-curated list of things that have happened in the past. Contact me and we can talk about how we can work together.