Skip to content
Welcome
  • Home
  • About
  • All Posts
  • Experiment
    • Experiment Child

All Posts

  • Home
  • All Posts
  • Building a Programming Language in TypeScript

    “I must create a system, or be enslaved by another man’s. I will not reason and compare: my business is to create.” William Blake Why Create a Language? Why not?…


    April 11, 2025
  • Goodbye Software Developers, Hello Automation Engineers

    AI is going to take all the Software Developers jobs. That’s what they say. There is some truth to that. Like many professions, Software Development has many facets, and many…


    February 22, 2025
  • Smash the Test Pyramid!

    For many years, the Test Pyramid was (still is?) the de-facto model for formulating the testing strategy for your software system. But it’s not perfect, and if you are focused…


    September 19, 2024
  • Machine Learning for Programmers – Part 1 – The Fundamentals

    Machine Learning and AI can be a daunting domain. There is a lot of advanced math, new technical terms, and low level hardware that a typical programmer may not be…


    June 29, 2024
  • Observability, Testability, and Encapsulation – Opposing Tensions Shape Good Design

    There is so much to learn to become a good software developer. Once you get past the technical hurdle of mastering all the tools, frameworks, and languages you need to…


    June 22, 2024
  • Building a Multiplayer Gaming System – Part 3 – Establishing the Context

    Welcome to Part 3 of the series! In Part 2 we discussed the process we’re going to use to design our system. Now we’re going to use that process to…


    June 7, 2024
  • Building a Multiplayer Gaming System – Part 2 – Design Process

    Welcome to Part 2! In Part 1, we laid out some of the high level components of the system and established that we are going to build the system with…


    June 1, 2024
  • Building a Multiplayer Gaming System – Part 1 – Introduction

    Greetings! Welcome to Part 1 of Building a Multiplayer Gaming System. Throughout this series we are going to design a system that supports a turn-based 1v1 multiplayer gaming experience from…


    May 25, 2024
  • Two Kinds of Learning in Turn-Based Game AI

    AI is all the rage, and for some folks, it’s just magic. Well, it’s not magic. It’s an algorithmic system based on combining decision models with data analysis. We’re going…


    April 20, 2024
  • Natural Language is a Bad Way to Communicate

    There is a general push in the software industry towards using more natural language. Generative AI tools allow people to build software using natural language. Behavior Driven Development methodologies use…


    April 11, 2024
  • Building an Interactive Generative AI for Music in TypeScript – Part 1

    Have you ever wanted to listen to some music but couldn’t quite find what you wanted? Or have you ever wanted to make some music, but you aren’t a trained…


    March 3, 2024
  • Building a 1v1 Game Matchmaking Service in Go – Part 3

    This article is part 3 of a series. Part 1 – Domain ModelingPart 2 – Turning Domain Model into Code The associated code repo is here. Deployment At the end of…


    December 7, 2023
  • Building a 1v1 Game Matchmaking Service in Go – Part 2

    This article is part 2 of a series. Part 1 – Domain Modeling The associated code repo is here. Turning the Domain Model into Code In Part 1, we modeled…


    November 26, 2023
  • Building a 1v1 Game Matchmaking Service in Go

    This article is Part 1 of a series. Part 2 – Turning the Domain Model into Code A 1v1 Game Matchmaking Service is a service that pairs up opponents for…


    November 22, 2023
  • How AI will change Software Development

    Lessons from Mathematical Optimization – the basis for current AI Machine Learning and many parts of current ‘AI’ systems are built on top of the field of Mathematical Optimization. There…


    November 8, 2023
  • Taming Concurrent Code – State Transitions vs Flows

    Concurrent code is everywhere. Anytime you have multiple operations that can take a little time and happen simultaneously, you’ve got concurrent code. If you are reading and writing files, interacting…


    October 7, 2023
  • The Duality of State and Events

    Duality has different meanings in different domains, but the essential idea is that of ‘two sides of the same coin’. There is one object, or one entity, and there are…


    September 30, 2023
  • Functional Core, Imperative Shell implemented with Finite State Transducers

    In a previous article we looked at Finite State Transducers (FSTs). To quickly recap, a Finite State Transducer is a type of Finite State Machine that also produces output. This…


    September 17, 2023
  • Thinking in Finite State Transducers to Enhance Precision

    What is a Finite State Transducer? Your first guess might be that its an essential component of a car-based time machine, like a flux capacitor. It isn’t, but believe it…


    September 16, 2023
  • Using Queueing Theory to Build Better Software Systems

    Here’s a fun question you can use at parties: Can you think of a word with 5 consecutive vowels? If you have really interesting friends, you might get some exotic…


    April 10, 2023
Copyright 2025 — Welcome. All rights reserved. Sinatra WordPress Theme
Scroll to Top