41554 blogs · [ { "id": "01a0875e-3dea-739c-8fba-16ad5078c339", "title": "15x Performance Improvement by Reverse Engineering a Vital Part of the Deployment Pipeline", "url": "https://charlesthomas.dev/blog/15x-performance-improvement-by-reverse-engineering-a-vital-part-of-the-deployment-pipeline-2025-04-21/", "published_at": "2025-04-21T23:13:17+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad507b3c09", "title": "Using Tags in Sonarr and Radarr to Selectively Sync Media", "url": "https://charlesthomas.dev/blog/using-tags-in-sonarr-and-radarr-to-selectively-sync-media-2025-04-19/", "published_at": "2025-04-20T00:47:07+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad51543758", "title": "Migrating My Custom Domain from Gmail to Fastmail", "url": "https://charlesthomas.dev/blog/migrating-my-custom-domain-from-gmail-to-fastmail-2025-04-11/", "published_at": "2025-04-11T12:34:30+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad51c5b899", "title": "Serving Valid HTTPS Certs From My K3s Homelab to External Devices Using ExternalName Services", "url": "https://charlesthomas.dev/blog/serving-valid-https-certs-from-my-k3s-homelab-to-external-devices-using-externalname-services-2025-03-28/", "published_at": "2025-03-28T17:26:42+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad52a816b8", "title": "Converting My YouTube Subscriptions to RSS", "url": "https://charlesthomas.dev/blog/converting-my-youtube-subscriptions-to-rss-2025-03-01/", "published_at": "2025-03-01T21:08:25+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad537e6071", "title": "The Evolution of My Smart Home as Told by My Oldest and Favorite Integration", "url": "https://charlesthomas.dev/blog/the-evolution-of-my-smart-home-as-told-by-my-oldest-and-favorite-integration-2024-11-14/", "published_at": "2024-11-15T00:56:23+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad543954dd", "title": "Automating Even When It's Easy - Or: Why Can't I Remember the Syntax for Password-less Sudo?", "url": "https://charlesthomas.dev/blog/automating-even-when-its-easy-or-why-cant-i-remember-the-syntax-for-password-less-sudo-2024-11-03/", "published_at": "2024-11-03T16:07:58+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad5520aeb9", "title": "Meet 'Em Where They Live: Choosing Home-Assistant Over Grafana for Observability", "url": "https://charlesthomas.dev/blog/meet-em-where-they-live-choosing-home-assistant-over-grafana-for-observability-2024-10-27/", "published_at": "2024-10-27T16:58:50+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad55dc651d", "title": "Managing git Hooks with make Magic", "url": "https://charlesthomas.dev/blog/managing-git-hooks-with-make-magic-2024-10-22/", "published_at": "2024-10-23T02:37:24+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad56211377", "title": "Automating Docs by Abusing GitHub Repo Topics", "url": "https://charlesthomas.dev/blog/automating-docs-by-abusing-github-repo-topics-2024-10-10/", "published_at": "2024-10-11T01:18:15+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad56793fdb", "title": "Split Monolithic YAML File by Kubernetes Kind", "url": "https://charlesthomas.dev/blog/split-monolithic-yaml-file-by-kubernetes-kind-2024-10-04/", "published_at": "2024-10-04T23:45:43+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad56d3c849", "title": "Everything I Know About Incident Management I Learned From Shoveling Snow", "url": "https://charlesthomas.dev/blog/everything-i-know-about-incident-management-i-learned-from-shoveling-snow-2024-01-20/", "published_at": "2024-01-20T20:36:56+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad56e8f4d0", "title": "Automating Myself Out of a Job", "url": "https://charlesthomas.dev/blog/automating-myself-out-of-a-job-2024-01-06/", "published_at": "2024-01-06T19:39:28+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad574bdf2f", "title": "Lightning Fast Code Search in the Terminal", "url": "https://charlesthomas.dev/blog/lightning-fast-code-search-in-the-terminal-2023-11-08/", "published_at": "2023-11-08T18:58:51+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad57b11027", "title": "Generating My Resume as a PDF with Github Actions", "url": "https://charlesthomas.dev/blog/generating-my-resume-as-a-pdf-with-github-actions-2023-10-14/", "published_at": "2023-10-14T16:51:10+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad57c1cfef", "title": "Dynamic img src with Hugo Shortcodes", "url": "https://charlesthomas.dev/blog/dynamic-img-src-with-hugo-shortcodes-2023-01-16/", "published_at": "2023-01-16T17:51:20+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad57cde513", "title": "when alias isn't enough: $@", "url": "https://charlesthomas.dev/blog/when-alias-isnt-enough-@-2022-11-20/", "published_at": "2022-11-20T16:52:06+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad58acb2b4", "title": " macOS Helper Apps", "url": "https://charlesthomas.dev/blog/macos-helper-apps-2022-11-20/", "published_at": "2022-11-20T16:24:50+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad58faacf0", "title": "Hello World!", "url": "https://charlesthomas.dev/blog/hello-world-2022-11-19/", "published_at": "2022-11-19T20:34:54+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad59b39dd0", "title": "🔐 pgp", "url": "https://charlesthomas.dev/pgp/", "published_at": "2022-11-19T19:54:29+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad5a49492f", "title": "I'm Charles Thomas", "url": "https://charlesthomas.dev/about/", "published_at": "2022-11-19T19:50:38+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad5b031eda", "title": "2014: Year of Code", "url": "https://charlesthomas.dev/blog/2014-year-of-code-2015-01-01/", "published_at": "2015-01-02T02:06:06+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad5b869460", "title": "Shows What I Know – More Finishing Touches", "url": "https://charlesthomas.dev/blog/shows-what-i-know-more-finishing-touches-2013-09-09/", "published_at": "2013-09-10T02:06:06+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad5c7ff315", "title": "Raspberry Pi Mail Server: Final Touches", "url": "https://charlesthomas.dev/blog/raspberry-pi-mail-server-final-touches-2013-09-08/", "published_at": "2013-09-09T02:06:06+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad5d5fa117", "title": "Some Problems with My Raspberry Pi Mail Server, and How I Fixed Them", "url": "https://charlesthomas.dev/blog/some-problems-with-my-raspberry-pi-mail-server-and-how-i-fixed-them-2013-08-31/", "published_at": "2013-09-01T02:06:06+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad5d827fc0", "title": "More Raspberry Pi: Calendar Syncing, Spam & Filtering", "url": "https://charlesthomas.dev/blog/more-raspberry-pi-calendar-syncing-spam-filtering-2013-08-24/", "published_at": "2013-08-25T02:06:06+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad5d9a8bea", "title": "Building a Raspberry Pi Mail Server: How", "url": "https://charlesthomas.dev/blog/building-a-raspberry-pi-mail-server-how-2013-08-04/", "published_at": "2013-08-05T02:06:06+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad5dd67e64", "title": "Building a Raspberry Pi Mail Server: Why", "url": "https://charlesthomas.dev/blog/building-a-raspberry-pi-mail-server-why-2013-08-04/", "published_at": "2013-08-05T02:06:06+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad5e71c5b8", "title": "IT: Good to Great with 3 Rules", "url": "https://charlesthomas.dev/blog/it-good-to-great-with-3-rules-2009-08-26/", "published_at": "2009-08-27T01:51:10+00:00" }, { "id": "01a0875e-3dea-739c-8fba-16ad5eade3c2", "title": "Batch script to open most recent file", "url": "https://charlesthomas.dev/blog/batch-script-to-open-most-recent-file-2009-04-28/", "published_at": "2009-04-29T01:51:10+00:00" } ] posts Claim your blog
Back to charlesthomas.dev
Blog · corpus.blog/blogs/charlesthomas.dev/posts

charlesthomas.dev

charlesthomas.dev

2025

2024

2023

2022

2015

2013

2009