41554 blogs · [ { "id": "01a087ee-c49c-713b-a598-f0c0bf91a83a", "title": "Year 2025 in review", "url": "https://thewagner.net/blog/2025/12/31/year-2025-in-review/", "published_at": "2025-12-30T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a76845670", "title": "Advent of Code 2025", "url": "https://thewagner.net/blog/2025/12/12/advent-of-code-2025/", "published_at": "2025-12-11T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a76c5ea83", "title": "Normal accidents", "url": "https://thewagner.net/blog/2025/10/26/normal-accidents/", "published_at": "2025-10-25T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7784134c", "title": "My note-taking process", "url": "https://thewagner.net/blog/2025/10/11/my-note-taking-process/", "published_at": "2025-10-10T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7866de62", "title": "Homelab turns five", "url": "https://thewagner.net/blog/2025/05/31/homelab-turns-five/", "published_at": "2025-05-30T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7874e3a8", "title": "Six months of CDK", "url": "https://thewagner.net/blog/2025/02/15/six-months-of-cdk/", "published_at": "2025-02-14T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a79117054", "title": "Year 2024 in review", "url": "https://thewagner.net/blog/2024/12/31/year-2024-in-review/", "published_at": "2024-12-30T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a79e42e88", "title": "Advent of Code 2024", "url": "https://thewagner.net/blog/2024/12/25/advent-of-code-2024/", "published_at": "2024-12-24T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7a139a35", "title": "NixOS on the Lenovo Carbon X1 (Gen 12)", "url": "https://thewagner.net/blog/2024/09/10/nixos-on-the-lenovo-carbon-x1-gen-12/", "published_at": "2024-09-09T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7a648ab2", "title": "Raspberry Pi camera on NixOS", "url": "https://thewagner.net/blog/2024/07/31/raspberry-pi-camera-on-nixos/", "published_at": "2024-07-30T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7b5e8265", "title": "Software Quality", "url": "https://thewagner.net/blog/2024/06/25/software-quality/", "published_at": "2024-06-24T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7b87147c", "title": "The Stupidity Paradox", "url": "https://thewagner.net/blog/2024/04/19/the-stupidity-paradox/", "published_at": "2024-04-18T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7c0a5e3b", "title": "Year 2023 in review", "url": "https://thewagner.net/blog/2023/12/31/year-2023-in-review/", "published_at": "2023-12-30T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7cca742c", "title": "Advent of Code 2023", "url": "https://thewagner.net/blog/2023/12/25/advent-of-code-2023/", "published_at": "2023-12-24T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7d2fd0c0", "title": "Homelab deployment", "url": "https://thewagner.net/blog/2023/11/25/homelab-deployment/", "published_at": "2023-11-24T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7dbe8660", "title": "Building Nix packages for the Raspberry Pi with GitHub Actions", "url": "https://thewagner.net/blog/2023/11/20/building-nix-packages-for-the-raspberry-pi-with-github-actions/", "published_at": "2023-11-19T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7e8d79c7", "title": "Managing the development of large software systems", "url": "https://thewagner.net/blog/2023/02/28/managing-the-development-of-large-software-systems/", "published_at": "2023-02-27T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7f56bb4f", "title": "Year 2022 in review", "url": "https://thewagner.net/blog/2022/12/31/year-2022-in-review/", "published_at": "2022-12-30T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a7f571a6b", "title": "Advent of Code 2022", "url": "https://thewagner.net/blog/2022/12/25/advent-of-code-2022/", "published_at": "2022-12-24T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8028f806", "title": "Exploring Logic Programming", "url": "https://thewagner.net/blog/2022/01/23/exploring-logic-programming/", "published_at": "2022-01-22T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a80de8d4d", "title": "Year 2021 in review", "url": "https://thewagner.net/blog/2021/12/31/year-2021-in-review/", "published_at": "2021-12-30T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8188a596", "title": "Advent of Code 2021", "url": "https://thewagner.net/blog/2021/12/25/advent-of-code-2021/", "published_at": "2021-12-24T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a820ec5f3", "title": "Leaving Pix4D", "url": "https://thewagner.net/blog/2021/07/15/leaving-pix4d/", "published_at": "2021-07-14T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a82315654", "title": "Practicing writing", "url": "https://thewagner.net/blog/2021/06/05/practicing-writing/", "published_at": "2021-06-04T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8256e0e7", "title": "Markov-chain word generation", "url": "https://thewagner.net/blog/2021/03/07/markov-chain-word-generation/", "published_at": "2021-03-06T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a82892974", "title": "Building container images with Nix", "url": "https://thewagner.net/blog/2021/02/25/building-container-images-with-nix/", "published_at": "2021-02-24T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8366200c", "title": "Year 2020 in review", "url": "https://thewagner.net/blog/2020/12/31/year-2020-in-review/", "published_at": "2020-12-30T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a83995a1b", "title": "Advent of Code 2020", "url": "https://thewagner.net/blog/2020/12/25/advent-of-code-2020/", "published_at": "2020-12-24T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a849327b7", "title": "Deploying with GitHub Actions and more Nix", "url": "https://thewagner.net/blog/2020/12/06/deploying-with-github-actions-and-more-nix/", "published_at": "2020-12-05T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8511a888", "title": "Kevlar", "url": "https://thewagner.net/blog/2020/10/18/kevlar/", "published_at": "2020-10-17T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a85d039ac", "title": "Concurrency in Go, Clojure, Haskell and Rust", "url": "https://thewagner.net/blog/2020/07/10/concurrency-in-go-clojure-haskell-and-rust/", "published_at": "2020-07-09T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a866e96e7", "title": "Deploying thewagner.net", "url": "https://thewagner.net/blog/2020/07/03/deploying-thewagnernet/", "published_at": "2020-07-02T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a86afaa7d", "title": "Homelab", "url": "https://thewagner.net/blog/2020/05/31/homelab/", "published_at": "2020-05-30T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a86b44425", "title": "Exploring Nix", "url": "https://thewagner.net/blog/2020/04/30/exploring-nix/", "published_at": "2020-04-29T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8701dbf7", "title": "Parallel mindset", "url": "https://thewagner.net/blog/2020/02/29/parallel-mindset/", "published_at": "2020-02-28T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a87c73019", "title": "The essence of a CI/CD pipeline", "url": "https://thewagner.net/blog/2020/01/07/the-essence-of-a-cicd-pipeline/", "published_at": "2020-01-06T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8832835c", "title": "Functions in disguise", "url": "https://thewagner.net/blog/2019/12/20/functions-in-disguise/", "published_at": "2019-12-19T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a883e72b1", "title": "O’Reilly Velocity Conference 2019", "url": "https://thewagner.net/blog/2019/11/08/oreilly-velocity-conference-2019/", "published_at": "2019-11-07T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a88b88a8e", "title": "Polymorphism and testing", "url": "https://thewagner.net/blog/2019/10/28/polymorphism-and-testing/", "published_at": "2019-10-27T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a894e0552", "title": "Consistent vocabulary in control flow", "url": "https://thewagner.net/blog/2019/09/25/consistent-vocabulary-in-control-flow/", "published_at": "2019-09-24T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8a2e900f", "title": "Concurrency without magic", "url": "https://thewagner.net/blog/2019/07/15/concurrency-without-magic/", "published_at": "2019-07-14T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8a324f5f", "title": "Build systems à la carte", "url": "https://thewagner.net/blog/2019/06/19/build-systems-a-la-carte/", "published_at": "2019-06-18T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8aee86d7", "title": "Exploring parser combinators", "url": "https://thewagner.net/blog/2019/05/03/exploring-parser-combinators/", "published_at": "2019-05-02T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8bdd0de9", "title": "Load balancer", "url": "https://thewagner.net/blog/2019/01/30/load-balancer/", "published_at": "2019-01-29T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8c75dd86", "title": "Think paper", "url": "https://thewagner.net/blog/2019/01/03/think-paper/", "published_at": "2019-01-02T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8d3a36c2", "title": "Minimum Coin Exchange", "url": "https://thewagner.net/blog/2018/04/30/minimum-coin-exchange/", "published_at": "2018-04-29T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8d60d177", "title": "Knowing Algorithms", "url": "https://thewagner.net/blog/2018/03/10/knowing-algorithms/", "published_at": "2018-03-09T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8d856119", "title": "Concurrency Patterns", "url": "https://thewagner.net/blog/2018/02/26/concurrency-patterns/", "published_at": "2018-02-25T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8db02555", "title": "Working habits", "url": "https://thewagner.net/blog/2016/07/20/working-habits/", "published_at": "2016-07-19T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8db8d09d", "title": "Going mobile", "url": "https://thewagner.net/blog/2015/08/20/going-mobile/", "published_at": "2015-08-19T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8e16c98e", "title": "Code archeology", "url": "https://thewagner.net/blog/2015/03/25/code-archeology/", "published_at": "2015-03-24T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8ea4613d", "title": "The ultimate eclipsometer™", "url": "https://thewagner.net/blog/2015/03/20/the-ultimate-eclipsometertm/", "published_at": "2015-03-19T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8f524f4d", "title": "My blogging workflow with git", "url": "https://thewagner.net/blog/2013/08/09/my-blogging-workflow-with-git/", "published_at": "2013-08-08T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a8ffa0b74", "title": "Total control", "url": "https://thewagner.net/blog/2013/07/22/total-control/", "published_at": "2013-07-21T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a903ddcac", "title": "Prototypes for stepper motor control", "url": "https://thewagner.net/blog/2013/07/19/prototypes-for-stepper-motor-control/", "published_at": "2013-07-18T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a91349844", "title": "Led and button", "url": "https://thewagner.net/blog/2013/06/26/led-and-button/", "published_at": "2013-06-25T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a91f15fcd", "title": "Fresh theme", "url": "https://thewagner.net/blog/2013/06/18/fresh-theme/", "published_at": "2013-06-17T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a9243197f", "title": "Backup", "url": "https://thewagner.net/blog/2013/05/15/backup/", "published_at": "2013-05-14T22:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a93204c14", "title": "Cardboard Raspberry Pi case", "url": "https://thewagner.net/blog/2013/03/17/cardboard-raspberry-pi-case/", "published_at": "2013-03-16T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a9349849c", "title": "Brain transplant", "url": "https://thewagner.net/blog/2013/03/12/brain-transplant/", "published_at": "2013-03-11T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a94317be4", "title": "Pelican up and running", "url": "https://thewagner.net/blog/2013/03/08/pelican-up-and-running/", "published_at": "2013-03-07T23:00:00+00:00" }, { "id": "01a087ee-c49d-73a1-892b-966a94e460e2", "title": "Hello world", "url": "https://thewagner.net/blog/2013/03/06/hello-world/", "published_at": "2013-03-05T23:00:00+00:00" } ] posts Claim your blog
Back to thewagner.net
Blog · corpus.blog/blogs/thewagner.net/posts

thewagner.net

thewagner.net

2025

2024

2023

2022

2021

2020

2019

2018

2016

2015

2013