41554 blogs · [ { "id": "01a08747-915e-7056-ba62-6fbe95fde238", "title": "An Antidote to AI Anxiety", "url": "https://blog.dnmfarrell.com/post/an-antidote-to-ai-anxiety/", "published_at": "2026-07-28T09:51:24+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe963c316e", "title": "When \"Best Practices\" Aren't Best", "url": "https://blog.dnmfarrell.com/post/when-best-practices-arent-best/", "published_at": "2026-07-20T08:09:44+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe971b0e7e", "title": "A Theory of the Monolith", "url": "https://blog.dnmfarrell.com/post/a-theory-of-the-monolith/", "published_at": "2026-07-12T11:19:11+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe97407d1e", "title": "Prompts Aren't the Unit of Work", "url": "https://blog.dnmfarrell.com/post/prompts-arent-the-unit-of-work/", "published_at": "2026-07-06T08:39:39+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe97f8b237", "title": "Reductio ad Machinam", "url": "https://blog.dnmfarrell.com/post/reductio-ad-machinam/", "published_at": "2026-05-19T10:37:51+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe98af4a0e", "title": "Do the geniuses in the datacenter get lunch breaks?", "url": "https://blog.dnmfarrell.com/post/do-the-geniuses-in-the-datacenter-get-lunch-breaks/", "published_at": "2026-04-30T11:41:35+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe990deb7d", "title": "Why Your Agents Need a Human in the Loop", "url": "https://blog.dnmfarrell.com/post/why-your-agents-need-a-human-in-the-loop/", "published_at": "2026-04-01T11:30:00+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9959a0e5", "title": "The Unsupervised Agent Problem", "url": "https://blog.dnmfarrell.com/post/the-unsupervised-agent-problem/", "published_at": "2026-02-20T12:55:00+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe99a70b49", "title": "The Nature of Computing Innovation", "url": "https://blog.dnmfarrell.com/post/nature-of-innovation/", "published_at": "2025-01-21T14:45:40+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9a76a476", "title": "My Best Tech Purchase of 2024 Was A Laser Printer", "url": "https://blog.dnmfarrell.com/post/laser-printer/", "published_at": "2025-01-02T15:36:06+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9adc745c", "title": "Novelty In Software Engineering", "url": "https://blog.dnmfarrell.com/post/novelty/", "published_at": "2024-12-16T17:41:35+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9b102691", "title": "Microservices Reify Compute", "url": "https://blog.dnmfarrell.com/post/microservices-reify-compute/", "published_at": "2024-12-10T15:59:33+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9bf4ff8e", "title": "Luck", "url": "https://blog.dnmfarrell.com/post/luck/", "published_at": "2024-12-05T15:52:02+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9bff4858", "title": "I'm Not Mutable, I'm Partially Instantiated", "url": "https://blog.dnmfarrell.com/post/incomplete-data-structures/", "published_at": "2024-11-06T15:02:02+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9c791d71", "title": "Simulating AWS IAM with Prolog", "url": "https://blog.dnmfarrell.com/post/simulating-aws-iam-with-prolog/", "published_at": "2024-09-23T16:44:03+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9d214d7f", "title": "Perplexity Online LLMs Are a Useful Evolution", "url": "https://blog.dnmfarrell.com/post/perplexity-online-llms-are-a-useful-evolution/", "published_at": "2024-04-10T12:15:26+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9d9608ba", "title": "Making a Difference", "url": "https://blog.dnmfarrell.com/post/making-a-difference/", "published_at": "2024-03-26T12:18:27+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9e4fe6f5", "title": "The Best Way to Improve Software Quality", "url": "https://blog.dnmfarrell.com/post/the-best-way-to-improve-software-quality/", "published_at": "2024-02-04T18:24:08+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9eb54200", "title": "Your Code Review Policy Doesn't Matter As Much As You Might Think", "url": "https://blog.dnmfarrell.com/post/your-code-review-policy-doesnt-matter/", "published_at": "2023-11-15T15:04:55+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9f045740", "title": "Consider Right-Page-Only Note-Taking", "url": "https://blog.dnmfarrell.com/post/consider-right-page-only-note-taking/", "published_at": "2023-11-11T16:23:09+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9f4b944c", "title": "A ChatGPT Shell Script", "url": "https://blog.dnmfarrell.com/post/chatgpt-at-the-terminal/", "published_at": "2023-10-24T23:45:32+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbe9f83a93d", "title": "Check Out *My* Linkedin", "url": "https://blog.dnmfarrell.com/post/check-out-my-linkedin/", "published_at": "2023-08-08T23:47:53+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea014cc7a", "title": "Escaping HTML in Hugo posts", "url": "https://blog.dnmfarrell.com/post/escaping-html-in-hugo-posts/", "published_at": "2023-07-07T00:23:09+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea0fedd1d", "title": "Monads Can Simplify Go's Error Handling", "url": "https://blog.dnmfarrell.com/post/monads-simplify-go-error-handling/", "published_at": "2023-02-24T12:39:14+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea13a9788", "title": "Displaying Athena Spend in AWS Console", "url": "https://blog.dnmfarrell.com/post/monitoring-athena-spend/", "published_at": "2023-02-22T00:40:04+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea1c6a6ba", "title": "Parallel Processing with POSIX Shell", "url": "https://blog.dnmfarrell.com/post/parallel-processing-with-bash/", "published_at": "2023-02-12T22:28:37+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea1cfc44c", "title": "Silencing Spark's Most Annoying Warning", "url": "https://blog.dnmfarrell.com/post/silencing-sparks-most-annoying-warning/", "published_at": "2022-11-14T16:54:06+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea22d4cf3", "title": "Understanding Delta Lake's Change Data Feed", "url": "https://blog.dnmfarrell.com/post/understanding-delta-lake-change-data-feed/", "published_at": "2022-11-01T23:55:49+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea2c93bcd", "title": "Is Golang's Grammar Context Free?", "url": "https://blog.dnmfarrell.com/post/is-golangs-grammar-context-free/", "published_at": "2022-02-28T03:09:53+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea352e0b6", "title": "How Much Memory Is My Program Really Using?", "url": "https://blog.dnmfarrell.com/post/how-much-memory-is-my-program-really-using/", "published_at": "2022-02-11T03:34:09+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea355519d", "title": "Can Generics Rescue Golang's Clunky Error Handling?", "url": "https://blog.dnmfarrell.com/post/can-generics-rescue-golangs-clunky-error-handling/", "published_at": "2022-01-11T04:41:35+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea3e45a26", "title": "Replicating Bash Argument Splitting", "url": "https://blog.dnmfarrell.com/post/replicating-bash-argument-splitting/", "published_at": "2021-12-28T23:44:47+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea415a9c5", "title": "How to Copy a Vim Buffer to the Clipboard", "url": "https://blog.dnmfarrell.com/post/how-to-copy-a-vim-buffer-to-the-clipboard/", "published_at": "2021-11-23T16:50:45+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea4576654", "title": "How to Split a String in POSIX Shell", "url": "https://blog.dnmfarrell.com/post/how-to-split-a-string-in-posix-shell/", "published_at": "2021-11-12T14:03:41+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea4f0498e", "title": "The Inconvenient Convenience of Dynamic Languages", "url": "https://blog.dnmfarrell.com/post/the-inconvenient-convenience-of-dynamic-languages/", "published_at": "2021-11-03T10:08:38+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea5b4f477", "title": "Organize Your Work With tmux Sessions", "url": "https://blog.dnmfarrell.com/post/organize-your-work-with-tmux/", "published_at": "2021-10-28T00:03:25+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea5fd45ff", "title": "Is Linux Growing Out of All Proportion?", "url": "https://blog.dnmfarrell.com/post/is-linux-growing-out-of-all-proportion/", "published_at": "2021-10-13T16:49:58+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea620d2f2", "title": "Our Standard Stack Analogy Is Wrong", "url": "https://blog.dnmfarrell.com/post/our-standard-stack-analogy-is-wrong/", "published_at": "2021-10-07T20:09:50+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea63526ed", "title": "Is Code Review Always A Good Thing?", "url": "https://blog.dnmfarrell.com/post/is-code-review-always-a-good-thing/", "published_at": "2021-09-05T18:28:43+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea719c0b4", "title": "Unit Testing Shell Scripts", "url": "https://blog.dnmfarrell.com/post/unit-testing-shell-scripts/", "published_at": "2021-07-16T13:32:50+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea76c6279", "title": "Restoring The Missing B 5000 Manual", "url": "https://blog.dnmfarrell.com/post/restoring-the-missing-b5000-manual/", "published_at": "2021-07-05T01:00:35+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea771f431", "title": "Bash Function Names Can Be Almost Anything", "url": "https://blog.dnmfarrell.com/post/bash-function-names-can-be-almost-anything/", "published_at": "2021-06-21T00:19:32+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea7b12d20", "title": "Search Man Pages With Apropos", "url": "https://blog.dnmfarrell.com/post/search-man-pages-with-apropos/", "published_at": "2021-06-13T17:21:08+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea8399dec", "title": "Three Ways to Get a Unix Epoch in Bash", "url": "https://blog.dnmfarrell.com/post/three-ways-to-get-a-unix-epoch-in-bash/", "published_at": "2021-06-13T15:34:50+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea8778fb7", "title": "Modulinos In Bash", "url": "https://blog.dnmfarrell.com/post/modulinos-in-bash/", "published_at": "2021-06-12T00:00:00+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea8efcc43", "title": "The Trouble with Reference Counting", "url": "https://blog.dnmfarrell.com/post/the-trouble-with-reference-counting/", "published_at": "2021-01-25T12:05:23+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea917be8d", "title": "Perl Closures As Objects", "url": "https://blog.dnmfarrell.com/post/closures-as-objects/", "published_at": "2020-12-13T12:57:03+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbea9f8e155", "title": "Inspecting Catalyst", "url": "https://blog.dnmfarrell.com/post/inspecting-catalyst/", "published_at": "2019-11-11T10:34:07+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbeaa2665e5", "title": "Creating IP Address Tools From Scratch", "url": "https://blog.dnmfarrell.com/post/creating-ip-address-tools-from-scratch/", "published_at": "2019-09-19T11:00:07+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbeaaa448dd", "title": "Find Relationships Quickly In Data With Chart::Plot", "url": "https://blog.dnmfarrell.com/post/find-relationships-quickly-in-data-with-chart-plot/", "published_at": "2019-01-21T15:41:39+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbeab6a0a92", "title": "Spidering websites with Headless Chrome and Selenium", "url": "https://blog.dnmfarrell.com/post/spidering-websites-with-headless-chrome-and-selenium/", "published_at": "2019-01-13T20:31:37+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbeac436116", "title": "Validating Untrusted Input: Numbers", "url": "https://blog.dnmfarrell.com/post/validating-untrusted-input-numbers/", "published_at": "2018-12-03T09:10:38+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbeacd83a76", "title": "Patching Perl: Loading Modules That Return False", "url": "https://blog.dnmfarrell.com/post/patching-perl-loading-modules-that-return-false/", "published_at": "2018-07-23T09:01:37+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbead5d1f97", "title": "Writing New Testing Tools With Test2", "url": "https://blog.dnmfarrell.com/post/writing-new-testing-tools-with-test2/", "published_at": "2018-06-12T15:26:40+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbeae2a407b", "title": "How Does Traceroute Work?", "url": "https://blog.dnmfarrell.com/post/how-does-traceroute-work-/", "published_at": "2018-02-28T10:40:29+00:00" }, { "id": "01a08747-915e-7056-ba62-6fbeaf286db3", "title": "Git Bisect And Perl", "url": "https://blog.dnmfarrell.com/post/git-bisect-and-perl/", "published_at": "2017-08-08T20:27:16+00:00" } ] posts Claim your blog
Back to blog.dnmfarrell.com
Blog · corpus.blog/blogs/blog.dnmfarrell.com/posts

blog.dnmfarrell.com

blog.dnmfarrell.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017