41554 blogs · [ { "id": "01a08755-3a74-72c0-be36-89b98100ec76", "title": "Asynchronous Emacs Direnv Devshells", "url": "https://blog.tjll.net/asynchronous-emacs-direnv-devshells/", "published_at": "2026-06-17T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b981d846ec", "title": "You Don't Love systemd Timers Enough", "url": "https://blog.tjll.net/you-dont-love-systemd-timers-enough/", "published_at": "2026-05-05T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b9825148ea", "title": "This Blog Post is Your Sign to Start Self-Hosting", "url": "https://blog.tjll.net/this-is-your-sign-to-self-host/", "published_at": "2026-02-19T07:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b983512c2e", "title": "Thank Goodness Universal Basic Income Saved the AI Economy", "url": "https://blog.tjll.net/thank-goodness-for-ubi/", "published_at": "2026-01-08T07:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b9838feaad", "title": "439 Days, 8,369 Miles, and 2 Kids with an Electric Vehicle", "url": "https://blog.tjll.net/one-year-with-the-kia-ev9/", "published_at": "2026-01-06T07:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b9840d85ad", "title": "To monitor my backups, I had to first invent the universe", "url": "https://blog.tjll.net/to-monitor-backups-invent-the-universe/", "published_at": "2025-08-15T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b984aee8d6", "title": "systemd has been a complete, utter, unmitigated success", "url": "https://blog.tjll.net/the-systemd-revolution-has-been-a-success/", "published_at": "2025-07-08T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b985375fa6", "title": "The Human Resources Alignment Problem", "url": "https://blog.tjll.net/human-resources-misalignment/", "published_at": "2025-06-18T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b985b41ac8", "title": "A Beginner's Guide to Extending Emacs", "url": "https://blog.tjll.net/a-beginners-guide-to-extending-emacs/", "published_at": "2025-02-04T07:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b986602402", "title": "Blog Architecture Redux", "url": "https://blog.tjll.net/blog-architecture-redux/", "published_at": "2025-01-27T07:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b9874fb5c2", "title": "How to Preview System Updates on NixOS", "url": "https://blog.tjll.net/previewing-nixos-system-updates/", "published_at": "2023-02-08T07:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b987c607eb", "title": "An Affordable Voice Assistant that Won’t Spy On You", "url": "https://blog.tjll.net/build-your-own-voice-asistant/", "published_at": "2022-12-13T07:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b98834199a", "title": "A Modest License Violation Proposal", "url": "https://blog.tjll.net/a-modest-license-violation-proposal/", "published_at": "2022-10-16T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b9892c40a9", "title": "The Best Thing About Docker is not Docker", "url": "https://blog.tjll.net/the-best-thing-about-docker/", "published_at": "2022-09-27T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b9892e1932", "title": "35 Million Hot Dogs: Benchmarking Caddy vs. Nginx", "url": "https://blog.tjll.net/reverse-proxy-hot-dog-eating-contest-caddy-vs-nginx/", "published_at": "2022-09-14T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b989dfbae4", "title": "One Year With the Framework Laptop and NixOS", "url": "https://blog.tjll.net/one-year-with-nixos-on-framework/", "published_at": "2022-09-05T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b98acd785f", "title": "Have You Considered Load-bearing Shell History?", "url": "https://blog.tjll.net/load-bearing-shell-history/", "published_at": "2022-07-21T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b98bb78a2b", "title": "A Doppler Test Drive", "url": "https://blog.tjll.net/a-doppler-test-drive/", "published_at": "2022-03-24T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b98bebb3a7", "title": "Too Simple To Fail: Marrying Nomad, Caddy, and Wireguard", "url": "https://blog.tjll.net/too-simple-to-fail-nomad-caddy-wireguard/", "published_at": "2022-02-04T07:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b98c4262d9", "title": "Unbreakable Builds on Container Schedulers without Containers", "url": "https://blog.tjll.net/container-scheduling-without-containers/", "published_at": "2021-06-10T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b98d1cf181", "title": "Tools I Love to Not Think About", "url": "https://blog.tjll.net/tools-i-love-to-not-think-about/", "published_at": "2021-01-23T07:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b98dfe6255", "title": "Industrial Strength Arch Linux", "url": "https://blog.tjll.net/industrial-strength-arch-linux/", "published_at": "2020-09-26T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b98e8f2337", "title": "My Favorite Things From 2019", "url": "https://blog.tjll.net/the-best-of-2019/", "published_at": "2020-02-04T07:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b98f7f2ed3", "title": "Shell Kung Fu", "url": "https://blog.tjll.net/shell-kung-fu/", "published_at": "2019-01-05T07:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b990494711", "title": "Going Completely Overboard with a Clustered Homelab", "url": "https://blog.tjll.net/distributed-homelab-cluster/", "published_at": "2018-08-13T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b990a0bb94", "title": "Building my ideal router for $50", "url": "https://blog.tjll.net/building-my-perfect-router/", "published_at": "2018-04-09T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b99143e577", "title": "When Disks Die: A ZFS Recovery Post-Mortem", "url": "https://blog.tjll.net/when-disks-die-zfs/", "published_at": "2018-03-12T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b991c50276", "title": "Systemd for (Impatient) Sysadmins", "url": "https://blog.tjll.net/systemd-for-impatient-sysadmins/", "published_at": "2017-07-09T06:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b992b086fc", "title": "Advent Of Code 2016 in Haskell", "url": "https://blog.tjll.net/advent-of-code-2016-haskell/", "published_at": "2016-11-30T07:00:00+00:00" }, { "id": "01a08755-3a74-72c0-be36-89b9935c05b8", "title": "systemd, User Instances, Device Units, and Media Archiving", "url": "https://blog.tjll.net/systemd-for-device-activation-and-media-archiving/", "published_at": "2015-07-11T06:00:00+00:00" }, { "id": "01a08755-3a75-7058-88c5-b5959e277c7d", "title": "Kippo Honeypot Video Gallery", "url": "https://blog.tjll.net/kippo-honeypot-video-gallery/", "published_at": "2014-10-19T06:00:00+00:00" }, { "id": "01a08755-3a75-7058-88c5-b5959ee5fa65", "title": "Running Docker on CentOS - External Network Access", "url": "https://blog.tjll.net/fixing-docker-routing-problems-on-centos/", "published_at": "2014-10-03T06:00:00+00:00" }, { "id": "01a08755-3a75-7058-88c5-b5959fca10b1", "title": "Practical Linux Pipelining", "url": "https://blog.tjll.net/practical-linux-pipelining/", "published_at": "2014-05-17T06:00:00+00:00" }, { "id": "01a08755-3a75-7058-88c5-b5959fe9da35", "title": "SSH Kung Fu", "url": "https://blog.tjll.net/ssh-kung-fu/", "published_at": "2014-04-27T06:00:00+00:00" }, { "id": "01a08755-3a75-7058-88c5-b5959ff712aa", "title": "Please stop hashing passwords", "url": "https://blog.tjll.net/please-stop-hashing-passwords/", "published_at": "2014-04-20T06:00:00+00:00" }, { "id": "01a08755-3a75-7058-88c5-b595a051a982", "title": "An Exercise in Weak Random Seed Exploitation", "url": "https://blog.tjll.net/weak-random-seed-rack-exploit/", "published_at": "2014-04-04T06:00:00+00:00" }, { "id": "01a08755-3a75-7058-88c5-b595a0d3efec", "title": "Docker DVWA Container How-To", "url": "https://blog.tjll.net/docker-dvwa-container/", "published_at": "2014-03-02T07:00:00+00:00" }, { "id": "01a08755-3a75-7058-88c5-b595a1b445ae", "title": "Yet Another Vim Setup", "url": "https://blog.tjll.net/yet-another-vim-setup/", "published_at": "2013-12-25T07:00:00+00:00" }, { "id": "01a08755-3a75-7058-88c5-b595a2170c9b", "title": "Raspberry Pi XBMC How-To", "url": "https://blog.tjll.net/raspberry-pi-xbmc-howto/", "published_at": "2012-12-29T07:00:00+00:00" }, { "id": "01a08755-3a75-7058-88c5-b595a2c3d720", "title": "The blog zygote", "url": "https://blog.tjll.net/the-blog-zygote/", "published_at": "2012-07-19T06:00:00+00:00" }, { "id": "01a08755-3a75-7058-88c5-b595a3a08e3b", "title": "In which I make a blog", "url": "https://blog.tjll.net/welcome-to-my-blog/", "published_at": "2012-06-12T06:00:00+00:00" } ] posts Claim your blog
Back to tylerjl
Blog · corpus.blog/blogs/blog.tjll.net/posts

tylerjl

blog.tjll.net

2026

2025

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012