Building a Battlesnake - How I Let Claude Do All the Hissing

This year was my second time building a Battlesnake. With the experience from a couple of years ago, I wanted to do something different. Last time I used the experience to learn a new language - Go (Go is great btw). I planned on using the same language and I definitely planned on using AI to help with writing the code this time around. Then the idea hit me. I didn’t write any of the code. Huh? I did not write any of the code. I used Claude AI to generate all the code. Well, kinda - I wrote the http server part to route a request to a function. If you were curious why I named my snake Claudia, well thats why. ...

January 20, 2025 ·  Me

That Conference in Wisconsin

I went to That Conference in 2023. No, this is not a recap of my conference experience from 8 months ago. I’m looking forward to the next one. Registration for 2024 is open, and the speaker lineup has been announced. I will be there and I think you should too. I’ve attended That a few times in the past and was trying to remember which years, but of course I’m drawing a blank. According to my email, I was a camper there in 2013, 2014, 2015, 2018 and of course 2023. ...

April 12, 2024 ·  Me

One Billion Row Challenge: way more than I thought

I found it like many other on January 1st, 2024. The One Billion Row Challenge. I was immediately hooked on the idea of doing this. I was coming off a disappointing non-finish of the Advent of Code and looking to redeem my incomplete effort. This was also the perfect opportunity to write some Go code and do my best to make it fast, like let’s break some rules and make bad decisions. This is not intended to be about Go, it is just the language I used for the challenge. The Go terms and concepts used here apply to many languages. ...

March 1, 2024 ·  Me

The Magical Elixir

I first saw Elixir at That Conference in Wisconsin sometime between 2015 and 2018, I really can’t remember. Ryan Cromwell was giving a talk on it and I was fascinated by it in less than 1 hour. I set out a goal to learn the language. You’ll notice that it is 2024, so you see how that went. Why Elixir? There is about a 0% chance I will use Elixir in my current role at work, so why go through the effort. Elixir is on a different spectrum from my primary languages of C#, JavaScript, and Go. It’s functional, it’s dynamically typed, there are no classes, interfaces, or for loops. I find it beneficial to learn how other languages solve problems in a different way and this one definitely checks the box for ‘different’. My hope is to see how I could have solved prior problems with a different mindset. I am not interested in determining if Elixir is better or worse than languages I already know. I want to see how it is different and where the differences can be beneficial to my thinking and reasoning in the future. Last reason for learning Elixir, I find this fun - I have been writing code in some form for over 20 years and never tire of learning new things. I know languages are not the most important part of software engineering, but I find the diversity in languages fascinating. ...

February 28, 2024 ·  Me

Skill Up With Katas

A few years ago, I started a weekly code kata at work with a small group of co-workers. My motivation at the time was to help an intern who was struggling with the “real” work. I figured code katas were a good practice. You can try new things, refine what you know, and can’t break anything so there is only upside. The intern moved on and this small group of developers still meets every Friday at 10:30. It is the best part of the week, or so I have been told by some. ...

February 9, 2024 ·  Me

If not git add ., then what?

Countless times you have been told to never use git add . when staging files. You’ve been to conferences where git experts say you shouldn’t use it. Tech people of Twitter also say it. Again and again, you hear never use git add . to stage your files. Habits I get it. I don’t want to accidentally stage a file, then commit it. Muscle memory is often times the culprit here. I don’t even realize I’m typing git add . until I hit enter. If you are like me, you have a git undo alias mapped to reset --soft HEAD^. I can’t count the times I have accidentally staged a file, then rapid fire commit with some message. I have done it enough times to justify a git alias. ...

February 6, 2024 ·  Me

Exercises in Concurrency - All Goroutines are Asleep!

How It Started I saw the One Billion Row Challenge at the beginning of January and was immediately intrigued. This is not about the challenge (more on that later), but instead my side quest in troubleshooting concurrency. After I found a fasting way to read a large file I decided that concurrency will make everything better, ya know, make all the cores work :wink:. I fill a buffer, send it to a pool of workers to do slow string functions, then combine results. Easy, right? I write the code yada yada yada, fatal error: all Goroutines are asleep - deadlock! ...

February 2, 2024 ·  Me