<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on dglloyd.net</title><link>https://dglloyd.net/post/</link><description>Recent content in Posts on dglloyd.net</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 12 Feb 2026 20:38:08 -0800</lastBuildDate><atom:link href="https://dglloyd.net/post/index.xml" rel="self" type="application/rss+xml"/><item><title>Meshcore and Heltec T114 Solar Discoveries</title><link>https://dglloyd.net/2026/02/12/meshcore-and-heltec-t114-solar-discoveries/</link><pubDate>Thu, 12 Feb 2026 20:38:08 -0800</pubDate><guid>https://dglloyd.net/2026/02/12/meshcore-and-heltec-t114-solar-discoveries/</guid><description>After several different on-again off-again interactions with various mesh networks, I finally seem to have found a community around Meshcore and the WCMesh folks driving their way up north! This drove me to put up my own meager repeater, house bound due to a lack of free time and community contacts for a better location— for now.
Digging through my bin of ADHD shame labeled LoRa Mesh, I was able to find a couple of Heltec T114 boards from the last time I went deep into trying to get get some Meshtastic momentum in my area and completely spinning out&amp;hellip; not before hitting up AliExpress.</description></item><item><title>BGP with metallb and a Cloud Gateway Ultra</title><link>https://dglloyd.net/2025/07/04/bgp-with-metallb-and-a-cloud-gateway-ultra/</link><pubDate>Fri, 04 Jul 2025 20:48:12 -0700</pubDate><guid>https://dglloyd.net/2025/07/04/bgp-with-metallb-and-a-cloud-gateway-ultra/</guid><description>In my previous home hosting setup (a long story I will get into another time), I was running a BGP session from MetalLB within a kubernetes cluster to an EdgeRouter-X to export routes into my home LAN. It sounds overly complicated and silly, and it is, but it gives my cluster the ability to essentially create Elastic IPs and assign/manage them itself, while exposing them &amp;lsquo;publicly&amp;rsquo;.
In this setup, I can get a LoadBalancer and either allow it to be assigned dynamically or specify a static IP that is externally routable to the cluster.</description></item><item><title>Ghosts? or long unexplained gaps in your resume</title><link>https://dglloyd.net/2025/07/03/ghosts-or-long-unexplained-gaps-in-your-resume/</link><pubDate>Thu, 03 Jul 2025 21:38:55 -0700</pubDate><guid>https://dglloyd.net/2025/07/03/ghosts-or-long-unexplained-gaps-in-your-resume/</guid><description>Wow, it&amp;rsquo;s been seven years. A lot has happened since the last post: two kids, a move, etc. I left my prior infrastructure director role in 2019 and relocated back to the central coast of California. Continuing my arc from pure operations through DevOps/SRE, I now manage software development teams with ownership ranging from real-time voice routing and conversational messaging to real-time audio transcription. It&amp;rsquo;s been interesting to approach software development from this side of things, playing on this side of the fence for a while (it&amp;rsquo;s all shifted left, right?</description></item><item><title>Haproxy, HHVM, and Varnish</title><link>https://dglloyd.net/2018/09/26/haproxy-hhvm-and-varnish/</link><pubDate>Wed, 26 Sep 2018 08:52:27 -0400</pubDate><guid>https://dglloyd.net/2018/09/26/haproxy-hhvm-and-varnish/</guid><description>In my &amp;lsquo;free&amp;rsquo; time I help out my good friend Jensen run the infrastructure for Asphalt &amp;amp; Rubber. This has lead to some interesting projects over the years, scaling Wordpress and MySQL on a shoestring budget, migrating from a traditional data-center environment to fully AWS, working around both my work schedule and the peak readership hours of a truly world wide audience. Most recently I have finally had the time and opportunity to put in a real load-balancer and caching layer in front of the application servers, driven both by a new theme roll-out as well as scaling needs.</description></item><item><title>Cookiecutter-flask and GitLab-CI</title><link>https://dglloyd.net/2018/09/12/cookiecutter-flask-and-gitlab-ci/</link><pubDate>Wed, 12 Sep 2018 11:42:38 -0400</pubDate><guid>https://dglloyd.net/2018/09/12/cookiecutter-flask-and-gitlab-ci/</guid><description>I frequently use cookiecutter-flask for small personal projects and as I am kicking around ideas for my latest project, I thought it made sense to get a baseline project for my specific needs and to then document the process so I don&amp;rsquo;t forget to use it again next time.
I started out by tackling Gitlab CI, wanting to mimic as much of the stock Travis-CI config as possible. This meant understanding the gist of how the Travis configuration works and mapping those concepts to the gitlab-ci.</description></item><item><title>Creating Debian packages for reproducible Node installations</title><link>https://dglloyd.net/2018/07/04/creating-debian-packages-for-reproducible-node-installations/</link><pubDate>Wed, 04 Jul 2018 09:11:05 -0400</pubDate><guid>https://dglloyd.net/2018/07/04/creating-debian-packages-for-reproducible-node-installations/</guid><description>Update I recently had to repackage puppeteer to update versions and discovered that FPM now correctly drops everything into /usr/lib/. This means the content below is no longer required, but I will leave it up for reference.
While working with my front-end Team at Truveris to refactor our PDF rendering pipeline, we came across and opted to move forward with Puppeteer. This would give us a flexible, fairly complete headless-chromium based tool-chain, with minimal customization required.</description></item><item><title>Logging and capturing messages from libraries and nested modules</title><link>https://dglloyd.net/2018/06/13/logging-and-capturing-messages-from-libraries-and-nested-modules/</link><pubDate>Wed, 13 Jun 2018 19:41:39 -0400</pubDate><guid>https://dglloyd.net/2018/06/13/logging-and-capturing-messages-from-libraries-and-nested-modules/</guid><description>Logging in Python, for the most part, is a simple task: import logging and logging.warning() your way to victory. This is fine for most basic scripts, you end up with sensible defaults: logging to the console, for all log levels higher than INFO.
import logging logging.info(&amp;#34;starting demo&amp;#34;) logging.warning(&amp;#34;yolo logging&amp;#34;) Running this script produces:
$ python demo.py WARNING:root:yolo logging Once you get into utilizing libraries and more specifically, libraries that implement the recommended python logging configuration for libraries, logging via module name can get confusing.</description></item><item><title>Packaging Nightmares</title><link>https://dglloyd.net/2017/12/06/packaging-nightmares/</link><pubDate>Wed, 06 Dec 2017 09:57:21 -0400</pubDate><guid>https://dglloyd.net/2017/12/06/packaging-nightmares/</guid><description>As a follow-up to the previous Debian packaging article, here is a second go at documenting for future me a couple more obscure concepts around building custom packages.
Virtual Packages So today I learned how to create virtual packages. For those unaware, Debian has a way for packages to state that they satisfy more than just a single package name. In the canonical example, there are dozens of packages that can fill the generic dependency of www-browser, such as firefox, chromium-browser, or konquoror.</description></item><item><title>Once again fucked by the intricacies of Debian packaging</title><link>https://dglloyd.net/2017/09/08/once-again-fucked-by-the-intricacies-of-debian-packaging/</link><pubDate>Fri, 08 Sep 2017 09:57:21 -0400</pubDate><guid>https://dglloyd.net/2017/09/08/once-again-fucked-by-the-intricacies-of-debian-packaging/</guid><description>Every couple of weeks I find myself having to modify a deb package, but can never remember the exact incantations required to correctly do everything. This post is mostly for my own information, since I have to spend a couple hours looking through the Debian documentation every time.
Create some directories to hold your working files $ mkdir gunicorn $ cd gunicorn Download the package you want to modify. $ apt-get download gunicorn=15.</description></item><item><title>First real adventures with Terraform</title><link>https://dglloyd.net/2017/04/04/first-real-adventures-with-terraform/</link><pubDate>Tue, 04 Apr 2017 22:04:43 -0400</pubDate><guid>https://dglloyd.net/2017/04/04/first-real-adventures-with-terraform/</guid><description>I have been meaning to try terraform for months now, but have always been held back by other obligations on time, energy, and infrastructure needs. After letting the tabs languish for months, finally, a project came my way that was begging for a full terraform deploy. All the attributes made this a perfect test bed: Dedicated VPCs, completely untied to any existing infrastructure, generous time line, etc.
Things I encountered while implementing my project: Most of my issues came from my desire to modularize as much as possible, to be reused across deployment tiers and products.</description></item><item><title>DevOps Days NYC 2016</title><link>https://dglloyd.net/2016/09/23/devops-days-nyc-2016/</link><pubDate>Fri, 23 Sep 2016 21:17:19 -0400</pubDate><guid>https://dglloyd.net/2016/09/23/devops-days-nyc-2016/</guid><description>Day One This is my first DevOps Days and third conference overall. It is the first that has caused me to really engage with my peers at a conference and get involved in discussions. The &amp;ldquo;open spaces&amp;rdquo; concept that most, if not all, DevOps Days have was a new experience for me, one that initially left me, a stoic introvert, slightly anxious.
Today there were three sessions, and in each that I attended there were roughly 10-20 people involved.</description></item><item><title>CD Blog pipeline, AKA overkill</title><link>https://dglloyd.net/2016/08/14/cd-blog-pipeline-aka-overkill/</link><pubDate>Sun, 14 Aug 2016 09:54:54 -0400</pubDate><guid>https://dglloyd.net/2016/08/14/cd-blog-pipeline-aka-overkill/</guid><description>I wanted a blog, so naturally I set about evaluating the myriad of static site generator options out there. Anything Ruby based was out, because, well, Ruby. Lektor looked nice, but wasn&amp;rsquo;t really there yet.. I saw Hugo mentioned and decided to give it a spin.
Of course, once I settled on the static site generator, I obviously had to stash it in source control. I didn&amp;rsquo;t want to use GitHub, just for sanity&amp;rsquo;s sake, so the next step was clearly setting up a gitlab instance.</description></item><item><title>New Beginnings</title><link>https://dglloyd.net/2016/07/19/new-beginnings/</link><pubDate>Tue, 19 Jul 2016 18:59:51 -0400</pubDate><guid>https://dglloyd.net/2016/07/19/new-beginnings/</guid><description>Here is to new beginnings on a new blog, hopefully one that is given the proper care and feeding.</description></item></channel></rss>