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.

Is it Easter?

Introduction Easter passed by not to long ago and I found out that Easter day is determined by the phase of the moon. I think this is really interesting and the Wikipedia page has a lot of information. It also has an algorithm that lets you calculate the day of Easter. I wanted to do something with this and I ended up making a web app that will tell you if it’s Easter....

May 11, 2024 · John

Chip-8 Dev Challenge: Frame Rate

Introduction Chip-8 runs at 60 fps (frames per second) and it’s very important to maintain this frame rate. Unlike modern systems, the sound and delay timers are tied to the frame rate. If the frame rate is too fast or too slow, the timing within apps will be off. Also, some apps will time off of the VSync (vertical synchronization). Making the frame rate even more important. I tried multiple methods to maintain a consistent frame rate in Chipped-8 and in the end I was able to achieve a solid 60 fps....

April 21, 2024 · John

Chip-8 Dev Challenge: Sound

Introduction Sound in Chip-8 is very easy. If the sound timer isn’t 0, play a tone. While this isn’t difficult, XO-chip adds another level of complexity. It uses a 16 byte pattern buffer with an associated pitch in order to create unique tones which can change per frame. Thus, XO-Chip can create basic music with it’s expanded audio. XO-Chip Audio This was by far the hardest thing to support while developing Chipped-8....

March 12, 2024 · John

I Made a Chip-8 Emulator

Introduction I’ve been following game console emulation for a long time and I decided I wanted to learn more. Specifically, the hardware aspect because I have no experience with how chips work. In order to learn more, I decided to write an emulator for a simple system. I originally thought NES but that is more complex than was realistic for me. Next, I thought of the Atari 2600 but even that seemed like a bit more than I’m ready for....

February 4, 2024 · John

Optimizing Docker Container Image Size

Introduction When I was containerizing my blog search service, I went through multiple iterations of the Dockerfile as I was learning how to create an image. Containerizing was easy but I wanted to create a small and efficient image and that process was a bit more involved than I expected. I want to go into a little detail about what I learned about writing a Dockerfile that puts importance on the final image size....

January 7, 2024 · John

Updating Blog Full Text Search

Introduction A few years ago I switched from WordPress to Jekyll and I lost full text search. But then I remembered I’m hosting my blog on my own server! So I wrote a Full Text Search service to restore the only feature I lost in the transition. This was working great until I moved from Jekyll to Hugo. The search Javascript needed a slight tweak but otherwise search was still working....

December 5, 2023 · John

A Better Vaultwarden Deployment

Introduction Earlier this year I looked at switching from Bitwarden (online service) to self hosting Vaultwarden. The post I wrote was fairly high level and focused on different container options. It was a fairly generic deployment that didn’t go into much detail. Configuration and security considerations were woefully neglected in that post. It also didn’t go into detail about how I’d integrate it into the VPS that I use as VPN, DNS, and now password vault server....

November 26, 2023 · John

Switching from NGINX to Caddy

Introduction My go to web server has always been NGINX and it’s been my default choice since I started this blog. Any time I need a web server it’s without question NGINX. That is until recently. I’ve been playing around with containerization and specifically making my vaultwarden deployment better. But that’s for another post. As I was looking into this, the Caddy web server kept coming up. Vaultwarden seems to really like it....

October 21, 2023 · John

Moving from Jekyll to Hugo

Introduction I needed to update some pages on my blog and while looking at it, it feels a bit stale. The site design hasn’t really changed in nearly 15 years. The only real update was in 2019, when I switched from WordPress to Jekyll. They were minor changes and made to accommodate moving to Jekyll. Otherwise, this blog has looked and acted essentially the same for all these years. Wanting to update the style also meant I should take the time to update things like Javascript libraries, Jekyll plugins and what not....

September 18, 2023 · John

Automating DNS Adblocking

Introduction A few months ago I setup a private DNS resolver with ad blocking. At that time I decided to manually update the block file whenever I installed server updates. This works, but it very quickly became tedious. I’m not sure why I initially thought it wouldn’t. I’ve since decided to automate the process. Block File Script The previous script I wrote would download a hosts file based block list and convert it into a format that Unbound can load....

May 24, 2023 · John