Code

Perplexity Online LLMs Are a Useful Evolution

Combining search with compute introduces new capabilities

April 10, 2024

Making a Difference

How to have impact when the way forward is unclear

March 26, 2024

The Best Way to Improve Software Quality

And it doesn't involve technology

February 4, 2024

Your Code Review Policy Doesn't Matter

We are not Full Time Equivalents on a spreadsheet

November 15, 2023

Consider Right-Page-Only Note-Taking

A functional writing experience

November 11, 2023

A ChatGPT Shell Script

Use ChatGPT from the command line

October 24, 2023

Check Out *My* Linkedin

How to clone modern webpages

August 8, 2023

Escaping HTML in Hugo posts

Or how to indirectly call the safeHTML function

July 6, 2023

Monads Can Simplify Go's Error Handling

A solution for Go's biggest issue, but at what cost?

February 24, 2023

Displaying Athena Spend in AWS Console

"I spent HOW much"? 🙈

February 21, 2023

Parallel Processing with POSIX Shell

How named pipes enable a general-purpose forking worker model

February 12, 2023

Silencing Spark's Most Annoying Warning

Stop Spark warning that it truncated the query plan

November 14, 2022

Understanding Delta Lake's Change Data Feed

What it's good for, how it tracks changes, and how to view them

November 1, 2022

Is Golang's Grammar Context Free?

Perhaps it comes down to semantics

February 27, 2022

How Much Memory Is My Program Really Using?

Modern Linux kernel memory measurements can help

February 10, 2022

Can Generics Rescue Golang's Clunky Error Handling?

Expressions can only do so much in an imperative language

January 10, 2022

Replicating Bash Argument Splitting

Sometimes it really is just a Small Matter of Programming

December 28, 2021

How to Copy a Vim Buffer to the Clipboard

On hard mode (compiled without clipboard support)

November 23, 2021

How to Split a String in POSIX Shell

Handling multibyte characters gets tricky

November 12, 2021

The Inconvenient Convenience of Dynamic Languages

Truthiness probably isn't worth it anymore

November 3, 2021

Organize Your Work With tmux Sessions

Tips to keep your pseudo terminals in order

October 27, 2021

Is Linux Growing Out of All Proportion?

The kernel source code isn't as big as you might think

October 13, 2021

Our Standard Stack Analogy Is Wrong

In search of a better stack metaphor

October 7, 2021

Is Code Review Always A Good Thing?

Not all changes are equally risky

September 5, 2021

Unit Testing Shell Scripts

(With the Test Anything Protocol)

July 16, 2021

Restoring The Missing B 5000 Manual

Shell programming to the rescue

July 4, 2021

Bash Function Names Can Be Almost Anything

Freedom > portability?

June 20, 2021

Search Man Pages With Apropos

How to find the docs you are looking for

June 13, 2021

Three Ways to Get a Unix Epoch in Bash

And the pros & cons of each

June 13, 2021

Modulinos In Bash

How to make a shell script behave like a library

June 12, 2021

The Trouble with Reference Counting

Is tracing garbage collection a realistic alternative for Perl?

January 25, 2021

Perl Closures As Objects

How lexical scope and anonymous functions can create powerful object systems

December 13, 2020

Inspecting Catalyst

What Routes Does Your Catalyst App Respond To?

November 11, 2019

Creating IP Address Tools From Scratch

Playing with IP addresses for fun

September 19, 2019

Find Relationships Quickly In Data With Chart::Plot

This lightweight module powers through data

January 21, 2019

Spidering websites with Headless Chrome and Selenium

How I Setup And Controlled Headless Chrome With Perl

January 13, 2019

Validating Untrusted Input: Numbers

Common techniques and edge cases

December 3, 2018

Patching Perl: Loading Modules That Return False

Removing a misfeature from the Perl interpreter

July 23, 2018

Writing New Testing Tools With Test2

Extending Perl's powerful new test framework

June 12, 2018

How Does Traceroute Work?

Identifying which routers process an IP request

February 28, 2018

Git Bisect And Perl

Bisecting Perl commits doesn't always work by itself

August 8, 2017