Friday, May 3, 2024

Poker, and other things...

If my 2018 blogging self had known that I'd take an unplanned 6 year hiatus from this blog, I'd have time-traveled to warn myself about a bleak future. 

So what's happened since then?

I am still around, and in my tenth year as an independent engineering consultant. Many of those years since kept me pretty busy. When you add that I lost at least half a dozen family members, including my father, all the train wreck that was Covid, trying to raise two teenage boys, being pretty involved with my local fishkeeping club, and also the project that I'm about to talk about, somehow blogging was one of those things I wanted to work on, but just ended up not making the cut in my priorities. 

During during the early days of the Covid pandemic, I had a lull in consulting work, and I also started playing a fair amount of computer poker in my off time. I played online, and also bought some old used xbox poker games off ebay. I'm not a gambler, and mostly don't play poker for money, except with local friends occasionally. I have just been a fan of the game for a long time, as a card game. 

I got the idea to start a "Pandemic project" with my down time. All of the poker software I've ever played has always left me feeling like it could be so much better, and when my ego flairs up I think "I could write something better". A lot of the poker games were pretty limited, and a majority of them only support a single type of poker - the most popular form if it, Texas Hold 'em. Texas Hold 'em is a fantastic poker game, but there are so many other ones out there that are a lot of fun too. Even minor tweaks to game rules can have a pretty big impact on the game dynamics. So I decided I would build a better poker game. I also decided after a lot of internal debate that I wanted to make a go of making it something that could have potential as a revenue stream. Being my own boss is part of why I do consulting (by no stretch the main reason), and building and selling your own product is the epitome of being your own boss. Additionally, while I have worked on many neat and exciting projects for client over the years, nothing is quite as fun as working on exactly what you want to do

So around April of 2020 I started working on a poker engine. At first it was only an "engine", as in it focused on the "Business logic" and rules of playing poker, without really making a game itself.  Work picked back up pretty quickly, so I focused on working on my poker code on nights and weekends when I wasn't spending family time or taking care of my fish. Working on a product as a side job in free time does give you a lot of freedom to not worry so much about deadlines or development costs, but in part it was therapeutic for me to dream up a feature and three days later have it functional. That's not to say it was done informally, I still used a lot of "professional" software development processes. I have a bug-tracker, unit tests, continuous integration, and for the larger features, I even wrote design documents. 

 4 years of feature creep later, I have something I'm very proud of, a full-blown single and multiplayer poker desktop application. I have put it up on a website, and I'm currently running a closed beta in that it's limited mostly to people I know personally. It's roughly around 300,000 lines of code, I could see it getting to 400,000 lines before I run out of polish and features to add. It's by far the largest personal project I've undertaken, so there is a lot of "me" in it. Almost all of it, including the server-side stuff and website, are written in C#. I think in just about any other tech stack, I would not have gotten to this point yet. 

My hopes are to resurrect this blog to semi-regular posting, or at the very least, blog a few times a year, and to make some posts that go into more detail about the architecture and process and little interesting tidbits about this project that's had a significant part of my focus for the past 4 years. 

At the time of this writing, I'm still in closed beta, but future readers ought to go check it out if they are interested in poker. You can also go to my site to sign up for future beta testing.