I'm Not Mutable, I'm Partially Instantiated
Incomplete data structures challenge our notion of mutability
November 6, 2024Simulating AWS IAM with Prolog
Prototyping a better developer tool for cloud security
September 23, 2024Perplexity Online LLMs Are a Useful Evolution
Combining search with compute introduces new capabilities
April 10, 2024Making a Difference
How to have impact when the way forward is unclear
March 26, 2024The Best Way to Improve Software Quality
And it doesn't involve technology
February 4, 2024Your Code Review Policy Doesn't Matter
We are not Full Time Equivalents on a spreadsheet
November 15, 2023Consider Right-Page-Only Note-Taking
A functional writing experience
November 11, 2023A ChatGPT Shell Script
Use ChatGPT from the command line
October 24, 2023Check Out *My* Linkedin
How to clone modern webpages
August 8, 2023Escaping HTML in Hugo posts
Or how to indirectly call the safeHTML function
July 6, 2023Monads Can Simplify Go's Error Handling
A solution for Go's biggest issue, but at what cost?
February 24, 2023Displaying Athena Spend in AWS Console
"I spent HOW much"? 🙈
February 21, 2023Parallel Processing with POSIX Shell
How named pipes enable a general-purpose forking worker model
February 12, 2023Silencing Spark's Most Annoying Warning
Stop Spark warning that it truncated the query plan
November 14, 2022Understanding Delta Lake's Change Data Feed
What it's good for, how it tracks changes, and how to view them
November 1, 2022Is Golang's Grammar Context Free?
Perhaps it comes down to semantics
February 27, 2022How Much Memory Is My Program Really Using?
Modern Linux kernel memory measurements can help
February 10, 2022Can Generics Rescue Golang's Clunky Error Handling?
Expressions can only do so much in an imperative language
January 10, 2022Replicating Bash Argument Splitting
Sometimes it really is just a Small Matter of Programming
December 28, 2021How to Copy a Vim Buffer to the Clipboard
On hard mode (compiled without clipboard support)
November 23, 2021How to Split a String in POSIX Shell
Handling multibyte characters gets tricky
November 12, 2021The Inconvenient Convenience of Dynamic Languages
Truthiness probably isn't worth it anymore
November 3, 2021Organize Your Work With tmux Sessions
Tips to keep your pseudo terminals in order
October 27, 2021Is Linux Growing Out of All Proportion?
The kernel source code isn't as big as you might think
October 13, 2021Our Standard Stack Analogy Is Wrong
In search of a better stack metaphor
October 7, 2021Is Code Review Always A Good Thing?
Not all changes are equally risky
September 5, 2021Unit Testing Shell Scripts
(With the Test Anything Protocol)
July 16, 2021Restoring The Missing B 5000 Manual
Shell programming to the rescue
July 4, 2021Bash Function Names Can Be Almost Anything
Freedom > portability?
June 20, 2021Search Man Pages With Apropos
How to find the docs you are looking for
June 13, 2021Three Ways to Get a Unix Epoch in Bash
And the pros & cons of each
June 13, 2021Modulinos In Bash
How to make a shell script behave like a library
June 12, 2021The Trouble with Reference Counting
Is tracing garbage collection a realistic alternative for Perl?
January 25, 2021Perl Closures As Objects
How lexical scope and anonymous functions can create powerful object systems
December 13, 2020Inspecting Catalyst
What Routes Does Your Catalyst App Respond To?
November 11, 2019Creating IP Address Tools From Scratch
Playing with IP addresses for fun
September 19, 2019Find Relationships Quickly In Data With Chart::Plot
This lightweight module powers through data
January 21, 2019Spidering websites with Headless Chrome and Selenium
How I Setup And Controlled Headless Chrome With Perl
January 13, 2019Validating Untrusted Input: Numbers
Common techniques and edge cases
December 3, 2018Patching Perl: Loading Modules That Return False
Removing a misfeature from the Perl interpreter
July 23, 2018Writing New Testing Tools With Test2
Extending Perl's powerful new test framework
June 12, 2018How Does Traceroute Work?
Identifying which routers process an IP request
February 28, 2018Git Bisect And Perl
Bisecting Perl commits doesn't always work by itself
August 8, 2017