41554 blogs · [ { "id": "01a08794-d64e-721f-a3d3-7d56f0a42915", "title": "Org Teach Export Macros", "url": "https://kennyballou.com/blog/2026/05/org-teach-macros/index.html", "published_at": "2026-05-08T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019e9a13c9f", "title": "Tagged PDFs via Org Export", "url": "https://kennyballou.com/blog/2025/08/tagged-pdfs-org-export/index.html", "published_at": "2025-08-07T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019ea0adcd2", "title": "Installing GUIX", "url": "https://kennyballou.com/blog/2025/05/installing-guix/index.html", "published_at": "2025-05-26T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019ea25348c", "title": "WIP: Data Changes != Safe", "url": "https://kennyballou.com/blog/2025/05/data-delta-not-equals-safe/index.html", "published_at": "2025-05-21T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019eacc2a6a", "title": "alJabr: An example interpreter using Maven and ANTLR", "url": "https://kennyballou.com/blog/2025/04/aljabr/index.html", "published_at": "2025-04-28T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019eb087e00", "title": "Use Diff Conflict Style 3", "url": "https://kennyballou.com/blog/2025/04/diff-style-3/index.html", "published_at": "2025-04-09T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019eb78c2de", "title": "Passive Mail Server Fingerprinting with DNS", "url": "https://kennyballou.com/blog/2023/12/passive-mail-fingerprinting/index.html", "published_at": "2023-12-28T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019ebeaa5af", "title": "Portable, Repeatable (, and Reproducible) Notebooks", "url": "https://kennyballou.com/blog/2023/05/notebooks/index.html", "published_at": "2023-05-26T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019ec551fb8", "title": "Today in Bad Plots", "url": "https://kennyballou.com/blog/2023/05/today-in-bad-plots/index.html", "published_at": "2023-05-10T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019ece72ea3", "title": "Variable Relations of a Method", "url": "https://kennyballou.com/blog/2023/04/variable-relations-of-a-method/index.html", "published_at": "2023-04-24T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019ed486da9", "title": "Org Projects with Gantt Charts", "url": "https://kennyballou.com/blog/2022/06/org-projects-with-gantt/index.html", "published_at": "2022-06-28T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019edb84840", "title": "GPG Key Transition", "url": "https://kennyballou.com/blog/2022/06/new-gpg-key/index.html", "published_at": "2022-06-22T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019ee6e3c9e", "title": "Org Mode Publishing Static Site Generation", "url": "https://kennyballou.com/blog/2022/05/org-mode-publishing/index.html", "published_at": "2022-05-25T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019eea6aea1", "title": "Default Drop IPv6 -- Self-inflicted Pain", "url": "https://kennyballou.com/blog/2021/07/default-drop-ipv6-self-inflicted-pain/index.html", "published_at": "2021-07-22T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019eeb55bd7", "title": "Git: Tracking Review Branches", "url": "https://kennyballou.com/blog/2021/05/git-tracking-review-branches/index.html", "published_at": "2021-05-08T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019ef8dc7c0", "title": "Commit Granularity", "url": "https://kennyballou.com/blog/2021/03/commit-granularity/index.html", "published_at": "2021-03-17T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019efcbc589", "title": "Organizing Source", "url": "https://kennyballou.com/blog/2020/08/organizing-source/index.html", "published_at": "2020-08-24T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f04a7e20", "title": "Organizing Research", "url": "https://kennyballou.com/blog/2020/08/organizing-research/index.html", "published_at": "2020-08-19T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f04aae4f", "title": "Yesterday You Said Tomorrow", "url": "https://kennyballou.com/blog/2020/08/yesterday-you-said-tomorrow/index.html", "published_at": "2020-08-18T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f128a2c5", "title": "Blog Content Deploy with AWS Code Commit and Code Build", "url": "https://kennyballou.com/blog/2020/02/blog-deploy-code-commit-and-build/index.html", "published_at": "2020-02-12T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f164102e", "title": "Hosting with AWS S3 and CloudFront", "url": "https://kennyballou.com/blog/2020/02/hosting-with-aws-s3-cloudfront/index.html", "published_at": "2020-02-12T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f1e9c075", "title": "AWS ECS Container Overrides for Event Targets", "url": "https://kennyballou.com/blog/2019/10/aws-ecs-events-target-input/index.html", "published_at": "2019-10-29T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f2cebfd3", "title": "NixOS Setup and Configuration", "url": "https://kennyballou.com/blog/2019/07/nixos-md-luks-lvm-setup/index.html", "published_at": "2019-07-23T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f386b097", "title": "NixOS", "url": "https://kennyballou.com/blog/2019/07/nixos/index.html", "published_at": "2019-07-19T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f46034bd", "title": "(New) Static Site Generation", "url": "https://kennyballou.com/blog/2019/03/static-site-generation/index.html", "published_at": "2019-03-03T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f52d45c2", "title": "Conky Mail Notifications using Maildirs", "url": "https://kennyballou.com/blog/2017/10/conky-maildirs-config/index.html", "published_at": "2017-10-08T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f58e5620", "title": "GPG Key Transition", "url": "https://kennyballou.com/blog/2017/08/gpg-key-transition/index.html", "published_at": "2017-08-23T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f66daa9e", "title": "Git Packfiles", "url": "https://kennyballou.com/blog/2017/03/git-packfiles/index.html", "published_at": "2017-03-01T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f7287755", "title": "Coreboot for x230", "url": "https://kennyballou.com/blog/2017/01/coreboot-x230/index.html", "published_at": "2017-01-31T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f75982ef", "title": "Elixir/Erlang Hot Swapping Code", "url": "https://kennyballou.com/blog/2016/12/elixir-hot-swapping/index.html", "published_at": "2016-12-07T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f7ac3606", "title": "Git Resurrecting History", "url": "https://kennyballou.com/blog/2016/09/git-resurrecting-history/index.html", "published_at": "2016-09-04T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f8496fb5", "title": "Releasing Elixir/OTP Applications to the World", "url": "https://kennyballou.com/blog/2016/05/elixir-otp-releases/index.html", "published_at": "2016-05-27T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f8aed617", "title": "Git in Reverse", "url": "https://kennyballou.com/blog/2016/01/git-in-reverse/index.html", "published_at": "2016-01-18T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019f9423d9f", "title": "The Art of Manually Editing Hunks", "url": "https://kennyballou.com/blog/2015/10/art-manually-edit-hunks/index.html", "published_at": "2015-10-24T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019fa753397", "title": "Readings in Distributed Systems", "url": "https://kennyballou.com/blog/2015/05/readings-in-distributed-systems/index.html", "published_at": "2015-05-08T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019fa318aa4", "title": "Vim Tips 2015-05-07", "url": "https://kennyballou.com/blog/2015/05/vim-tips-2015-05-7/index.html", "published_at": "2015-05-07T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019fb0fc37c", "title": "Vim Tips 2015-03-17", "url": "https://kennyballou.com/blog/2015/03/vim-tips-2015-03-17/index.html", "published_at": "2015-03-17T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019fb4b2b42", "title": "Apache Storm vs Apache Spark", "url": "https://kennyballou.com/blog/2014/09/apache-storm-vs-apache-spark/index.html", "published_at": "2014-09-08T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019fc05adfe", "title": "Real-time Streaming with Apache Spark", "url": "https://kennyballou.com/blog/2014/08/real-time-streaming-apache-spark-streaming/index.html", "published_at": "2014-08-18T00:00:00+00:00" }, { "id": "01a08794-d64f-721b-b2f8-1019fc92a21b", "title": "Real-time Streaming with Apache Storm", "url": "https://kennyballou.com/blog/2014/07/real-time-streaming-storm-and-kafka/index.html", "published_at": "2014-07-16T00:00:00+00:00" } ] posts Claim your blog
Back to kennyballou.com
Blog · corpus.blog/blogs/kennyballou.com/posts

kennyballou.com

kennyballou.com

2026

2025

2023

2022

2021

2020

2019

2017

2016

2015

2014