A refuge for sharing experiences with programming and technology.

Building a Ploopy Classic Trackball

Building a Ploopy Classic Trackball
Lately, I’ve been on a quest to find the most ergonomic desktop setup. I spend a lot of time at my computer and I’ve started to get the usual aches and pains associated with a sedentary desk job. Most recently, it has been my mouse arm that has been bothering me, namely my forearm, elbow, and fingers. I’ve been rotating through different kinds of mice, including the Logitech MX Vertical, Logitech MX Ergo, Kensington SlimBlade Pro, and Steelseries Aerox 3, but they mostly just shuffle the pain around.

Virtual Pinball Controller

Virtual Pinball Controller
After staying at a vacation rental with a Godzilla pinball machine last year, I’ve become mildly obsessed with pinball. Unfortunately, pinball machines are quite expensive and they take up a considerable amount of room. My dream is to own a pinball machine at some future point, but in the meantime I will need to be content with pinball games on the computer. There’s a few good options for pinball games: Visual Pinball is king of the hill for pinball simulators, Future Pinball is another popular simulator, and Pinball FX is on most game consoles.

Hackathon: API-Based Multiplayer Game

Hackathon: API-Based Multiplayer Game
For a recent hackathon at work, I decided to create an API-based multiplayer game, something along the lines of SpaceTraders or Rubbled. The idea is the entire game is built in a service with a REST API for issuing commands. There is no UI or client provided; players must create their own user interface or automate the commands somehow. I’ve worked on games before, but I haven’t ever created an online multiplayer game, so I thought this would be a fun experiment.

GopherCon 2023

GopherCon 2023
GopherCon was back in San Diego this year! As such, I was able to attend yet again. The conference was well worth attending and I had a great time. There were some great talks, a rather unusual workshop, and even some interesting sponsors/exhibitors. Here are some of my highlights! Workshop: Intro to Rust # Why go to a Rust workshop at a Go programming conference? Good question. I believe it is valuable to explore other programming languages to gain experience with different approaches to software development.

Empty S3 Bucket and DynamoDB Table Using the AWS SDK

Ever need to just completely clear out an S3 bucket or a DynamoDB table using the AWS SDK? Think it will be one SDK call and then you’re done? Not so! The S3 console has an Empty button for each bucket and the AWS CLI has a aws s3 rm --recursive command. But the console doesn’t lend itself to automation and the CLI command doesn’t work for buckets with object versioning turned on.

Exploring Sorting Algorithms in Go

Every decade or so, I become fascinated with sorting algorithms and spend some time implementing various approaches in my language of choice. The first time around, it was C++. Last time I took a stab at it, it was C#. This time around, I wanted to implement some popular sorting algorithms in Go. I think I enjoy it so much because sorting is easy to verify and there are so many varied approaches.

Hackathon: GPT4-x-Alpaca Part 2: Creating a MUD with Evennia

Hackathon: GPT4-x-Alpaca Part 2: Creating a MUD with Evennia
In part 1 of the hackathon I participated in at work, I set up the GPT4-x-Alpaca LLM with Oobabooga in an AWS EC2 instance. Next up in my hackathon journey was an attempt to make the LLM do something useful and fun. I’ve been casually interested in creating a Multi-User Dungeon or MUD for short. So for part 2 of the hackathon, I dug into the documentation for Evennia, a Python-based MUD game engine.

Hackathon: GPT4-x-Alpaca Part 1: Oobabooga and LLaMa.cpp

Hackathon: GPT4-x-Alpaca Part 1: Oobabooga and LLaMa.cpp
Ever since ChatGPT hit the scene, it seems to be all that anyone is talking about. I participated in a hackathon at work last week and was able to spend some time playing around with Large Language Models (LLM for short). Specifically, I was looking for something that could be hosted locally and did not communicate with the internet. ChatGPT is great and really useful, but most companies are not eager to share their private documentation or proprietary code in a public AI chatbot.

Hackathon: Building a Dungeon Crawler with Godot

Hackathon: Building a Dungeon Crawler with Godot
Earlier this year, there was finally an opportunity for another hackathon at work and this time I decided to try to build a game in a week. I’ve been working a bit with Godot, the open-source game engine that’s been growing in popularity recently. My experience has been that it’s fantastic for the 2D games that I usually fiddle with and it is also more than capable of handling 3D gamedev.

Using Go Modules

Go Modules is the official dependency management solution for the Go programming language. Recently, I finally converted over my personal projects. I had been putting it off for some time, since I was waiting for the Go team to finalize everything and work out all the kinks. Go 1.11 was when Modules was first released as a beta. Go 1.12 still had Modules in beta mode and Go 1.13 was when Modules came out of beta.

Hackathon: Training a Blackjack AI

Hackathon: Training a Blackjack AI
When I attended AWS re:Invent at the end of 2019, I attended a workshop for using machine learning via Amazon SageMaker to teach an AI how to play blackjack. Seeing as re:Invent was held in Vegas, I decided to take the spirit of Vegas home with me and create my own text-based blackjack game in Go. I added a simple interface so it would be easy to create different AI opponents.

AWS re:Invent 2019

AWS re:Invent 2019
Another late post, but that’s just how it goes. I attended AWS re:Invent with some collegues back in December of 2019 in Las Vegas. The conference spans multiple hotels on the main strip and has something like 70-80k attendees. Since it was my first time attending, I wasn’t really sure what to expect. Turns out, I had a lot of fun! There were lots of opportunities to try out different AWS technologies.