Thanks to visit codestin.com
Credit goes to nachtimwald.com

Hi there

Welcome to my blog and take a look around. Maybe you’ll find something you’ll like. I like to write about a variety of topics but most posts are computer focused. While I mainly write for myself, I hope that some of what I post will be useful for others.

Chip-8 Dev Challenge: Sound Revisited

Introduction Last year I wrote about generating XO-Chip sound and the challenges it creates. Specifically, taking a 128 bit pattern of 1’s and 0’s and turning that into a sound wave. However, that post only went into detail of the audio pattern. Recently I was updating Chipped-8 and optimizing sound was one of my areas of focus. In addition to optimization I wanted to fix a few bugs and annoyances that were present. ...

July 12, 2025 · John

Chipped 8 Now With a Cached Interpreter

Introduction I decided to pick up Chipped 8 again so I could learn more about interpreter design. Specifically, cached interpreters. Since I already have a Chip-8 emulator, it was the perfect way to get into the subject. When I first made Chipped 8, the interpreter for the CPU instructions was written as a pure interpreter: the standard read, analyze, execute loop. I knew that pure interpreters are slow, but I didn’t really understand why. This led me to learn about different types of interpreters. Specifically, pure, threaded, and cached interpreters. I also learned about dynamic recompilation, but that’s a bit more complexity than I wanted to get into. ...

June 11, 2025 · John

Packaging with PyInstaller

Introduction Not to long ago I needed to deploy a simple Python app I had written on a Linux server. It was a single file and my first thought was to drop the file on the server, but it needed some dependencies. Not a big deal, or so I thought. Putting a single file Python app on a server is typically fine. Just install the deps from the requirements.txt either through the distro package manager or into a venv. Building out a whl file makes this whole thing even easier since it’s a single package and pip will install all dependencies automatically. ...

May 19, 2025 · John

Zsh Disable History

Introduction There are a number of times when I’m working on something and need to set an API key as an environment variable. I don’t want this recorded in my terminal history because it’s never a good idea to have an API key stored that way. What I end up doing is making a run.zsh file, put the export and then what ever command I plan to run that uses the environment variable. This isn’t difficult but can be an annoying in some circumstances. For example, if I’m running multiple commands or if I’m running the same command but changing flags. ...

December 20, 2024 · John

Listing Files in Docker Image

Introduction A common problem I run into when containerizing apps is checking the files included in the image. More often than I’d like to admit, the first attempt I end up with files in the wrong location. For example, when I containerized “is it Easter”, I needed to verify all the files were getting added to the correct location. Normally, I’d create an image, then start it as a container with Docker Desktop. At which point I can view the container contents. This works, but isn’t great. A lot of times I want to check the file contents because I know the container won’t start and I’m trying to figure out why. Like if my CMD referencing the wrong location. ...

November 12, 2024 · John

Split Hugo Config

Introduction Recently, I was looking into converting my blog to use hugo modules and saw that hugo supports splitting the configuration file into multiple components. I really liked this idea and decided to give it a try. Splitting the configuration allows setting different options for development and production. This is really handy because while writing new posts I use hugo server and I have to use a variety of flags -D -F in order to include drafts and future posts. This is because these are off by default. ...

October 22, 2024 · John

KDocker 6.1 Released

KDocker 6.1 has been released! Yet more work has been put into reading the application icon. The latest issue was the icon being completely blank. I tweaked reading the icon and reworked the fallback. Additionally, I put a check in place to ensure an icon is only used when 10% or more is opaque. That way the fallback icon will be tried or the default icon not found icon will be used. This should prevent empty spaces from being added to the system tray. ...

September 28, 2024 · John

KDocker Reflections and What's After 6.0

Introduction KDocker 6 is now out and I want to take some time to reflect and think about what the future has in store for it. Random reflections KDocker was started 20 years ago in 2004. I took over in 2009 and have been running the project for the past 15 years and I never thought I’d be part of it for so long. At that time I was heavily using the application and when the original author announced he was going to stop working on it, I didn’t hesitate to take over. ...

September 7, 2024 · John

KDocker 6.0 Released

Introduction It’s finally here, KDocker 6.0. It’s the biggest since release ever and packs in every one of my wishlist features. While there are a lot of changes, I want to talk about a few of the more important and interesting ones. Updates First and foremost, it’s been updated for Qt 6. KDocker’s major versioning since 4.0 has followed the major Qt version it uses. With Qt 6.7 being the current release it’s plenty stable and Qt 6 has wide distro availably. ...

September 1, 2024 · John

KDocker 5.5 Released

It’s been quite a while since the last KDocker release but, here we are with a new release! In this release reading the window icon has been changed to make those pesky ‘?’ icons less likely. The source code for this release can be found here. This is the last planned 5 series release before 6.0 is out. More on this in the future.

August 16, 2024 · John