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

Linode vs DigitalOcean

Introduction For about the past 14 years I’ve been using Linode as my preferred personal VPS provider. I started using them at the beginning of November 2008 when I first setup my blog. Other than a short and painful mistake of hosting my blog elsewhere, it has lived on Linode. Recently I had to setup a VPS with DigitalOcean. This was due to needing the VPS in a data center located in a very specific place....

April 22, 2023 · John

Vaultwarden a Self Hosted Password Vault

Introduction When Lastpass first came on the scene I jumped on it because of how easy it makes syncing passwords between devices. Previously, I was using a local password manager that was only on my computer. Thankfully, mobile logins weren’t nearly as necessary for daily life back then. However, I still needed my computer to log into anything on my phone. Over the years, Lastpass started having security incidents. This isn’t surprising with how big it became....

March 16, 2023 · John

Setting up a Private DNS with adblocking

Introduction Recently I setup a VPN to so I could get around geo-restrictions for for a specific streaming service I’m using. So far it’s been working well. Now that I have the server, I started thinking about what else I could do with it. One thing that jumped out at me is DNS. I configured my WireGuard client connections to use CloudFlare and fallback to Google’s DNS servers. While this does provide privacy from my ISP and queries originate from the same VPN server, felt like I could do better....

February 11, 2023 · John

My VPN Experience

Introduction I was recommended some videos and I’ve been very interested to watch them. However they’re not available outside of a specific country due to geographic restrictions. This is a common problem and pretty much every commercial VPN service advertises this as a major reason to use their VPN. So I embarked on what should have been a simple journey. Sign up for a VPN, choose an end point in the country I need, and watch the videos....

January 6, 2023 · John

Restic Backup

Introduction Since 2017 I was using SpiderOak for backups of my laptop. While the service has gotten better since I first tried them, they still have some issues which kept me looking for alternative . I was using SpiderOak because they are one of the only all in one solutions that allow local encryption and specifying what directories to backup. This is a must for me because I don’t want my entire home directory backed up....

December 10, 2022 · John

CSO Compression and Decompression Tool

Introduction I have a number of backed up ISO files that were taking up quite a bit of space. I wanted to save some space and I decided to compress them. Instead of putting them into something like a ZIP archive, I decided that compressing into CSO would be the most usable option. Sadly, there is a lack of CSO compression and decompression tools that can be easily installed using something like homebrew....

November 21, 2022 · John

Lua Template Engine Yet Again

Introduction After writing a template engine in Lua, I found some deficiencies and wrote a few more iterations. After having used the template engine for quite a while, I’ve made a few enhancements and some fixes. This is hopefully the final version of the template engine. Newest Engine This engine is an iteration of the previous template_engine3.lua. The differences are: Bug fixes for escaping routines. An empty string will no longer cause a failure....

August 28, 2022 · John

macOS USB Enumeration in C

Introduction Apple provides documentation for using IOKit, but it’s not very clear how to do a number of things. Descriptions and relationships of functions often isn’t clear. While there are examples, they tend to be lacking. The generic types IOKit uses doesn’t help either because you could have multiple different types of hardware sharing the same device object type. I was working on a project where I needed to enumerate USB devices on macOS....

December 6, 2020 · John