A social nerd writing about everything 🤓| Major Hayden
My team at work does lots of work with retrieval-augmented generation, or RAG, and parsing documents is really painful. It’s so painful that I recently delivered a talk on this very topic at DevConf.US 2025! Another one of the talks at DevConf.US this year was about docling. We’ve been using it on our team for a while and we really enjoy how it takes challenging documents in various formats and parses them into a single, common document. I’ll walk you through setting up docling in your ...| Major Hayden
Quadlets are a handy way to manage containers using systemd unit files. Containers running via quadlets have access to the external network by default, but they don’t automatically communicate with each other like they do in a docker-compose setup. Adding networking only requires a few extra steps. Setting up some quadlets # I often need a postgres server laying around on my local machine for quick tasks or testing something I’m working on. Lately, I’ve been focused on RAG databases and...| Major Hayden
I’ve used so many performance monitoring tools and systems over the years. When you need to know information right now, tools like btop and glances are great for quick overviews. Historical data is fairly easy to pick through with sysstat. However, when you want a comprehensive view of system performance over time, especially with GPU metrics for machine learning workloads, Performance Co-Pilot (PCP) is an excellent choice. It has some handy integrations with Cockpit for web-based monitorin...| Major Hayden
I watch plenty of YouTube videos with instructional content. Some are related to my work while many others involve my hobbies, such as ham radio and financial markets. Lots of them have really useful information in them, but I struggle with taking notes while I’m watching. It turns out there’s a tool for that! During some face to face work meetings last week, a coworker showed off fabric. Let’s go through how to use it with some examples. Installation & setup # The author, Daniel Miessl...| Major Hayden
Hello from DevConf.US in Boston, Massachusetts! I presented yesterday about the challenges of developing systems for retrieval-augmented generation (RAG) with large language models (LLMs). If you’ve been reading tech blogs lately, or the r/rag subreddit, you might think that implementing RAG is as simple as tossing documents into a database and watching the magic happen. (Spoiler alert: it’s not.) I’ll quickly recap the presentation in this post, but you can also download the slides as ...| Major Hayden
Podman’s quadlet system combined with systemd timers makes container updates easy and automatic.| Major Hayden
Efficiently communicate a problem and your recommendation in record time with an SBAR. 📝| Major Hayden
Developing software with a critcal date comes with its own set of challenges.| Major Hayden
Although Scrum is a popular agile methodology, it often becomes a theater of activity that distracts teams from what customers actually need. 📅| Major Hayden
Yes, I do write code with help from an LLM, but I wouldn’t call it vibe coding. Let’s dig into how (and why) I do it. 🤖| Major Hayden
Retrieval-augmented generation (RAG) is helpful for AI workflows, but it certainly is not easy.| Major Hayden
A recent switch back to i3 (from sway) left me wondering how to examine just the Xorg logs sent to journald.| Major Hayden
I replaced my old Toyota 4Runner with a new one so I could snag the last run of the 5th generation. It’s a tough, reliable vehicle with just enough space for my family and our pets. However, this new one came with the same problem as my old one. All of the bolts that hold in the front skid plate were mostly stripped. Getting them out was difficult and I knew getting them back in would be worse. I’ll cover how to fix it in this post. If you’re in a hurry, scroll past the next section! Ot...| Major Hayden
Bienvenidos!1 I’ve been learning Spanish for just over a year and I often type messages in either Spanish or English (my native language) with coworkers and friends. Just like most people, I make spelling mistakes in both languages. 🙃 Firefox offers a feature for multi-language spell checking and translations but it can be a bit challenging to set up. This post explains how to load languages into Firefox and use them for spell checking. Installing languages # Take a trip over to [Diction...| Major Hayden
Ask anyone about the toughest part of their workday and it usually comes down to one thing: meetings. There are plenty of reasons: The meeting could have been an email Nobody notices when I attend the meeting, but they notice when I don’t The meeting is recurring whether there’s something important to talk about or not There’s no time for questions after everyone presents in a meeting Someone dominates the conversation This was a central problem in my “Five tips for a thriving technol...| Major Hayden
Author’s note: This post is all about my personal thoughts on artificial intelligence (AI) and they don’t represent the views of any employer or group. --- You can’t escape the clutches of AI lately. It’s in my smartphone nestled next to my text messages. It’s in my work chats. It’s reading my Spanish in Duolingo. It’s in my photo albums retouching my images. Sometimes we know that there’s AI involved in something and sometimes we don’t. However, it seems like so many are in...| Major Hayden
I recently built a new PC for my birthday and I splurged a bit with a new AMD Radeon 7900 XTX GPU. Although I’m not a heavy gamer, I’m working with LLMs more often and I’m interested to do some of this work at home. btop is my go-to tracker for all kinds of data about my system, including CPU usage, memory usage, disk I/O, and network throughput. It’s a great way to track down bottlenecks and find out why your CPU fan is spinning at max speed. 😜 Screenshot of btop running on my sys...| Major Hayden
I’m splitting time between two roles at work now and one of the roles has a heavy focus on LLMs. Much like many of you, I’ve given ChatGPT a try with questions from time to time. I’ve also used GitHub Copilot within Visual Studio Code. They’re all great, but I was really hoping to run something locally on my machine at home. Then I stumbled upon a great post on All Things Open titled “Build a local AI co-pilot using IBM Granite Code, Ollama, and Continue” that started me down a pa...| Major Hayden
Plex has been a mainstay for serving up media at home but it seems to have changed lately towards a more and more commercial offering. A friend recommended Jellyfin and I deployed it on my Synology NAS in a Docker container. I did a few quick tests in a web browser and everything looked good. But then my Jellyfin android app told me: Playback failed due to a fatal player error Everything looked fine in the browser, so it was time to dig in. Checking the logs # I opened up an ssh connection on...| Major Hayden
Linux networking and firewalls give us plenty of options for redirecting traffic from one port to another. We can allow people outside our home to reach a web server we run in our internal network. That’s called destination NAT, ot DNAT. You can also redirect traffic to different ports on the same host. For example, if you have a daemon listening on port 3000, but you want people to reach that service on port 80, you can redirect traffic from 80 to 3000 on the same host (without network add...| Major Hayden
We’ve all been in that situation where we see a device in Linux and wonder which physical device it corresponds to. I remember when I built my first NAS and received an alert that a drive had failed. It took me a while to figure out which physical drive actually needed to be replaced. This happens with network devices, too, and I wrote a post about systemd’s predictable network device names back in 2015. Cloud instances often make it even more confusing because storage devices are fully v...| Major Hayden
Scroll through the list of Wayland posts posts on the blog and you’ll see that I’ve solved plenty of weird problems with Wayland and the Sway compositor. Most are pretty easy to fix but some are a bit trickier. Java applications are notoriously unpredictable and Wayland takes unpredictability to the next level. One particular application on my desktop always seems to start with massive cursors. This post is about how I fixed and then discovered something interesting along the way. Fixing ...| Major Hayden
We’re all familiar with the trusty old dhclient on our Linux systems, but it went end-of-life in 2022: NOTE: This software is now End-Of-Life. 4.4.3 is the final release planned. We will continue to keep the public issue tracker and user mailing list open. You should read this file carefully before trying to install or use the ISC DHCP Distribution. Most Linux distributions use dhclient along with cloud-init for the initial dhcp request during the first part of cloud-init’s work. I set of...| Major Hayden
The 2024 Texas Linux Festival just ended last weekend and it was a fun event as always. It’s one my favorite events to attend because it’s really casual. You have plenty of opportunities to see old friends, meet new people, and learn a few things along the way. I was fortunate enough to have two talks accepted for this year’s event. One was focused on containers while the other was a (very belated) addition to my impostor syndrome talk from 2015. This was also my first time building sli...| Major Hayden
Static blogs come with tons of advantages. They’re cheap to serve. You store all your changes in git. People with spotty internet connections can clone your blog and run it locally. However, one of the challenges that I’ve run into over the years is around analytics. I could quickly add Google Analytics to the site and call it a day, but is that a good idea? Many browsers have ad blocking these days and the analytics wouldn’t even run. For those that don’t have an ad blocker, do I wan...| Major Hayden
Caddy offers a great web and proxy server experience with minimal configuration and automated TLS certificates. Learn how to connect Caddy to Porkbun to get TLS certificates by managing your DNS records for you automatically. 🐷| Major Hayden
My issues with open source mailing lists aren’t with the technology, but with unorganized pattern of the discourse itself. 🖇️| Major Hayden
Although my first attempt at self-hosting Mastodon was a failure, I went back for a second attempt with docker-compose. 🧗♂️| Major Hayden
Avoid cloud provider modifications and deploy a genuine release version of Fedora 37 on Hetzner Cloud. ⛅| Major Hayden