![Moving the Table of Contents in PDF Files](/blog/moving-toc-in-groff-pdfs/cover.jpg)
Moving the Table of Contents in PDF Files
Sometimes I need to move the table of contents generated by Groff to the front of a document. In this post I share a simple approach I take to solving this.
![Adding DNS Adblock to my Unbound Configuration](/blog/adding-dns-adblock-to-unbound/cover.jpg)
Adding DNS Adblock to my Unbound Configuration
In this post I share how I added DNS adblocking to the Unbound DNS server configuration on my OpenBSD firewall.
![Setting Up a Firewall with Raspberry Pi and OpenBSD](/blog/raspberrypi-openbsd-firewall/cover.jpg)
Setting Up a Firewall with Raspberry Pi and OpenBSD
Tired with my current firewall, I have decided to switch over to a Raspberry Pi 4 running OpenBSD. In this post I describe how I did this and the problems that I ran into.
![SSG and Hydration with Yew](/blog/ssg-and-hydration-with-yew/cover.jpg)
SSG and Hydration with Yew
In this post I go over how I rewrote this website in Rust using the Yew framework with SSG and hydration. I cover a number of the issues that I encountered and how I addressed them.
![Moving to Mastodon](/blog/moving-to-mastodon/cover.jpg)
Moving to Mastodon
Much like a great number of other people, I have followed the trend towards Mastodon, and have found it to be quite a wonderful experience.
![Moving my Lambda Functions to Rust](/blog/moving-lambdas-to-rust/cover.jpg)
Moving my Lambda Functions to Rust
My experience changing the AWS Lambda functions for this website from Python to Rust.
![Overlays with Custom Widgets in GTK](/blog/overlays-with-custom-widgets-in-gtk/cover.jpg)
Overlays with Custom Widgets in GTK
In this post I show how to build a collapsible controls overlay in GTK, rendered over a simple custom widget.
![Allocating Memory for DMA in Linux](/blog/allocating-memory-for-dma-in-linux/cover.jpg)
Allocating Memory for DMA in Linux
In this post we take a look at allocating memory on Linux using huge pages with the intention of sharing that memory with PCIe devices that use DMA.
![Bitmap Tri-Color Marking](/blog/bitmap-tri-color-marking/cover.jpg)
Bitmap Tri-Color Marking
In this post I look at a simple tri-color marking implementation that uses bitmap operations to walk the heap.