Deploying the Telegraf InfluxDB Grafana (TIG) Stack with Docker to Monitor a Linux Host

A screenshot of the "Host Dashboard" Grafana dashboard.

So I set up an old Dell Optiplex 7010 to be my home Linux development server and decided to use that as an opportunity to start learning Docker so I used that to deploy an IRC bouncer onto my home server. Obviously, the next thing to do would be to deploy monitoring software so that … Continue reading Deploying the Telegraf InfluxDB Grafana (TIG) Stack with Docker to Monitor a Linux Host

How the Linux Kernel Detects PCI Devices and Pairs Them with Their Drivers

Have you ever wondered how Linux knows what PCI devices are plugged in? How does Linux know what driver to associate with the device when it detects it? In short, here's what happens: During the kernel's init process (init/main.c), various subsystems are brought up according to their "init levels." Among these early subsystems are the … Continue reading How the Linux Kernel Detects PCI Devices and Pairs Them with Their Drivers

Lessons Learned From an Open Source Capstone Project

The last term of my undergraduate Computer Science degree is almost over. Yay! My software engineering capstone project also comes to an academic close in a matter of days and I wanted to take a moment to reflect on some of the key lessons that I’ve learned from this entire process. For the uninitiated, Computer … Continue reading Lessons Learned From an Open Source Capstone Project

Macromancer’s Spellbook: Using Macros to Stay DRY

It is sometimes hard to see past the thick haze of caution surrounding the use of C Preprocessor macros in your code. Indeed, the dangers of Macromancy are well-stated in many corners of the internet. You would do well to heed them. However, there are times where a judicious use of macros can help reduce duplication in … Continue reading Macromancer’s Spellbook: Using Macros to Stay DRY