Just a Theory

Black lives matter

Previously, on Just a Theory


Assume Positive Intensifies

How “Assume positive intent” downplays impact, gaslights employees, and absolves leaders of responsibility.


Central Park Autumn

A couple photos of the gorgeous fall colors oer The Pool in Central Park.

Automate Postgres Extension Releases on GitHub and PGXN

Go beyond testing and fully automate the release of Postgres extensions on both GitHub and PGXN using GitHub actions.

George Washington Bridge Pier

Photo of the Manhattan pier of the George Washington Bridge.


A photo of The Blockhouse, a small fort in Central Park, New York City.

Biden on the Green New Deal

The Green New Deal may not be Joe Biden’s climate plan, but you better believe he knows it deeply and could dive deep into the details.

Harlem Hawk

An encounter with a hawk and a squirrel in St. Nicholas Park, Harlem.

The Kushner Kakistocracy

An expertly-reported, deeply disturbing piece by Katherine Eban on Jared Kushner’s key role in the colossal federal response to the Covid-19 pandemic.

We Need to Talk About Ventilation

Zeynep Tufekci on aerosolized Covid-19 transmission and the need for ventilation.


I biked down to Midtown to see the new #BlackLivesMatter street art in front of Trump Tower.

Jia Tolentino on… Gestures Vaguely

A terrific interview with a fabulous writer.

Harlem Park Steps

A photo from a walk in Jackie Robinson Park, Harlem, New York City.

Test Postgres Extensions With GitHub Actions

I finally made the jump from Travis CI to GitHub Actions for my Postgres extensions. Here’s how you can, too.

Valerie Wheeler

Remembering Valerie Wheeler, Anthropologist, mentor, “mom”.


Antigone’s Voice

What Antigone in Ferguson taught me about beauty, creativity, justice, ego, and autocratic control.

Sqitch v1.0.0

After seven years of development and production database deployments, I finally put in the effort to release v1.0.0.


The over-the-top malfeasance and criminality of this president and his White House leads inexorably to impeachment proceedings. It’s past time for the Democrats to accept that fact and make a plan to maximize its effectiveness.

Ban the Nazis, Twitter

Dear Twitter: Do the right thing, ban white supremacists, and have a fucking backbone.

Time is Short, So Be Generous

The universe is hospitable to life for a limited time; let’s make the best of it.

Humane Agile

The top-down imposition of agile, with a focus focus on predictability and control, fails to value people over process.

Compassionate Sacking

Jennifer Kim on firing with compassion. Ultimately, it’s about trust.

Founding Fodder

On the importance of setting direction and engendering organizational focus by formalizing the foundational concepts of an organization.


Network perimeter protection is complicated, imperfect, and insufficient to protect sensitive and personal data.

Criminals, Not Spies

Masha Gessen highlights the inadequacy of the political press covering a criminal conspiracy as if it was a normal state.

Flex Your BICEPS

What do creative professionals value in their jobs? More than perks, it’s about the product of the work.

The Problem With Disk Encryption

Full disk encryption is necessary but insufficient to protect sensitive and personal data.

Testing Perl Projects on Travis Windows

A sample project demonstrates a few techniques for testing Perl projects in the Travis CI Windows environment.

Filed under Perl


Removing Sqitch Deprecations

A list of deprecated Sqitch features and code paths I propose to remove ahead of the release of v1.0.

Fascism Is Violence

“Fascism is not an idea to be debated, it’s a set of actions to fight”

Flaked, Brewed, and Docked

Sqitch v0.9998: Now with Snowflake support, an improved Homebrew tap, and the quickest way to get started: the new Docker image.

The Farce of Consent

Helen Nissenbaum on how to approach data privacy beyond the insufficiency of consent, to its impacts on individuals, society, and institutions.

ACM Code of Ethics

The Association for Computing Machinery updates its code for the networked computing age, promoting ethical, responsible computer engineering.

Filed under ACM

They Is Smart

When they wants you to speak one way, but you prefer to stick to the inertia of your habits, you is wrong.


I wrote a simple PostgreSQL binary manager. You should try it.

Deep Expertise

Zeynep Tufekci on what Elon Musk should learn from the Thailand cave rescue.


Virginia Heffernan finds that Donald Trump has no values.

Lincoln on the Declaration

Wise statesmen as they were, they knew the tendency of prosperity to breed tyrants…

What Elizabeth Warren Saw at the Border

The Trump administration’s immigration policies are a humanitarian crime.

Democracy Over Civility

The demand for civility in the face of deplorable lies and inhumane policies enables those lies and policies.

Facebook Identity Theft

Some rando cybercriminal created a Facebook account to try to get a Foothold in my identity. Here’s what I did about it.


David Simon on his friend and collaborator, Anthony Bourdain.

Plain Text Figures

How I went about formatting embedded figures in the plain text output for Just a Theory.

Token Dimensions

The subtleties of tokenization merit deeper attention along the dimensions of reversibility and determinism.


The time has come for Sqitch to leave the nest and go out on its own.


An Anniversary.


“Trust and psychological safety are core elements of high performing teams.”

GDPR and the Professionalization of Tech

The GDPR is a big deal. What will be the best approaches to comply? Hard work, good tools, and ingenious new products.

Only One Scandal

It’s really as simple as that.

Racial Identity Is Not a Zero Sum Game

Here’s why Meghan Markle is a big deal.

Adopt My Modules

I no longer have the bandwidth to properly care for and feed my Perl modules. Maybe you’d be interested in adopting one?

Filed under Perl

Evolutionary Theory

The relaunch of Just a Theory.

iovation Tokenization

First in a series for iovation of posts on tokenization and the GDPR.


Wanted: New SVN::Notify Maintainer

Filed under Perl

The Blockchain Hype Cycle

A Porous “Privacy Shield”

Do We Have Right to Security?

Anthem Breach Harms Consumers

Apple Challenges FBI Decryption Demand

Filed under Apple


theory.so is No More

The Watch is You

Apple Watch and the future of identity.

Filed under Apple

Please Test Pod::Simple 3.29_3

Filed under Perl


Build Modern Perl RPMs with rpmcpan

Filed under Perl

Sqitch on FLOSS Weekly

Localize Your Perl Apps with this One Weird Trick

Filed under Perl

Sqitch Goes Vertical

Managing Sqitch with Make

Templating Tests with Sqitch

Brent Simmons is Not Wrong

Sqitch on Target


Toward A Database URI Standard

Filed under RFC

Indexing Nested hstore

Testing Nested hstore

The Women at XOXO Rocked It

This is how it ought be. You make something. You’re excited about it. Your energy infects the audience. And your gender and ethnicity have nothing to do with it.

Filed under XOXO

The Power of Enums

Whither Impala Fault Tolerance?

Lexical Subroutines

Filed under Perl

Multirow Database Updates

Filed under SQL

Sqitch Templating

Understanding Window Functions

Data Deployment with Sqitch

TPF To Revamp Grants

Filed under Perl

Mopping the Moose

Filed under Perl

A Perl Blog

Trying Times

Filed under Perl

Requiring Reworked Sqitch Changes

Notes on Upcoming Sqitch Improvements

Sqitch Mail List

Agile Database Development Tutorial

Sqitch on Oracle

Misguided Delusion

A simple post. I followed the link and have hardly stopped thinking about it since.

Rationality and Faith

More Sun

Sqitch: Now with SQLite Support

Sqitch on Windows (and Linux, Solaris, and OS X)

Sqitch Homebrew Tap

Bootstrapping Bucardo Master/Master Replication

Dist::Zilla::LocaleTextDomain for Translators

Filed under Perl

Sqitch: Trust, But Verify


Sqitch Update: All Your Rebase Are…Never Mind

New in PostgreSQL 9.2: format()

Thinking about Changing Sqitch Change IDs

Mocking Serialization Failures

Localize Your Perl modules with Locale::TextDomain and Dist::Zilla

Filed under Perl

Sqitch Symbolism

Medium in the Large

Sqitch: Depend On It!

Sqitch v0.80: Now With More You

Sqitch’s Log

Sqitch Status: Add User Info?

Sqitch Status: Now With Status

Sqitch Update: Almost Usable

À Rouen

Sqitch: Rename Step Objects and the SQL Directory?

Sqitch: Back to the VCS

The Ever Evolving Sqitch Plan

Sqitch: Where to Define Dependencies?

Sqitch Update: The Plan

Use of DBI in Sqitch

Sqitch Status: A Step at a Time

Sqitch Update

Rouen Again

An open letter to the printed press


New Home

Sqitch — VCS-powered SQL Change Management

How Not to Withstand a Fireballing

Condé Nast on the iPad

I really want to enjoy reading The New Yorker on my iPad. But for a rather large number of reasons, it’s just unpleasant. Here’s why.

SQL Change Management Sans Duplication

Here’s how I propose to eliminate the duplication of code between deploy and revert SQL change management scripts.

VCS-Enabled SQL Change Management

Some thoughts on how to use VCS history to determine what changes need to be deployed or reverted without relying on a configuration file.

Simple SQL Change Management

I’ve been thinking a lot about SQL change management. I think I may finally have cracked this thing wide open.


Today on the Perl Advent Calendar

Filed under Perl

Less Tedium, More Transactions

2011 Perl Advent Calendar post on the use of the DBIx::Connector Perl module.

Filed under Perl

How to Integrate the TestFlight SDK into an iOS Project

Filed under iOS


An Incurious Biographer

Steve Jobs

Missing the Point

Disposable Computing

Thank You Steve

DBIx::Connector and Serializable Snapshot Isolation

Cloudy Ideas

Apple’s not on in the cloud computing business and has no interest in it.

Filed under Apple

TV Providers Hate Their Customers

Up for Adoption: SVN::Notify

Filed under Perl

DBIx::Connector Exception Handling Design

Filed under Perl

Encoding is a Headache

Filed under Perl

DesignScene Has Landed

Byline: A Case Study Apple and Google Philosophical Differences

Filed under iOS


Serious Exception-Handling Bug Fixed in DBIx::Connector 0.42

Filed under Perl

Fixing Foreign Key Deadlocks in PostgreSQL

Adding a Git SHA1 to your Xcode Project

Filed under Xcode

The 411 Since Graduating from College

Managing Key/Value Pairs in PostgreSQL

PGXN Blog and Twitterstream

Introducing MyTAP

After some prodding from the MySQL Community Manager, some OSCON hacking yields tangible results.

Filed under MySQL

Important Announcement at OSCON Next Week

Filed under OSCON

PGXN Development Project

Atom Sources

Handling Multiple Exceptions

Filed under Perl

Anna Turns Five

Fuck Typing LWP

Filed under Perl

PGAN Bikeshedding

Help me pick a good name for the PostgreSQL extension distribution network and site.

Defend Against Programmer Mistakes?

I’m not sure I want to get into the business of defending against programmer mistakes in DBIx::Connector module. What do you think?

Filed under Perl

Execute SQL Code on Connect

Bricolage 2.0 Drops

No more USE_PGXS=1?

I’m tired of having to remember to set USE_PGXS=1 when building third-party PostgreSQL extensions like pgTAP. Aren’t you?

Pod: Now with Sane Web Links

Filed under Perl

SQL Hack: The Something-est From Each Entity

RFC: PostgreSQL Add-on Network

Enforcing a Set of Values


Quest for PostgreSQL Project Hosting

Make the Pragmas Stop!

Filed under Perl

Japan Photos, Current Status

Filed under Japan

JPUG Talk Posted

Test Everything with TAP Source Handlers

Filed under Perl

Testing Catalyst Template::Declare Views

Filed under Perl

Testing the Tutorial App

Filed under Perl

Tutorial on GitHub

Filed under Perl

My Catalyst Tutorial: Add Authors to the View

Filed under Perl

pgTAP Best Practices Slides Available

Create a Template::Declare Wrapper

Filed under Perl

Catalyst with DBIx::Connector and Template::Declare

Filed under Perl

Create Catalyst Views with Template::Declare

Filed under Perl

Pg::Priv Hits CPAN (Thanks Etsy!)

Template::Declare Explained

Filed under Perl

Pod::Simple 3.09 Hits the CPAN

Filed under Perl

DBIx::Connector Updated

Filed under Perl

Suggest Method Names for DBIx::Connector

Filed under Perl

Database Handle and Transaction Management with DBIx::Connector

Filed under Perl

Unicode Normalization in SQL

Keep DBI’s connect_cached From Horking Transactions

Filed under Perl

Use Rubyish Blocks with Test::XPath

Filed under Perl

Test XML and HTML with XPath

Introducing a Rails-inspired Perl module to test the structure and content of an XML or HTML document using CSS selectors.

Filed under Perl

Enable CSV Logging in PostgreSQL

pgTAP 0.22: Test Your Results


PostgreSQL Development: Lessons for Perl?

Filed under Perl

Checkout and Build Perl 5.10 from Git

Filed under Perl

Committed: pgTAP Result Set Assertion Functions

pgTAP Set-Testing Update

Generating XML in Perl

Filed under Perl

Need Help Naming Result Set Testing Functions

Doomed To Reinvent

My Buggy MacBook Pro

Thoughts on Testing SQL Result Sets

pgTAP 0.21 Drops

Unit Test Your Database!

Learn Mad Database Skillz at YAPC::NA 2009

More on Database Testing

More thoughts on they whys and hows of database testing, and wondering why one might think that it’s pointless or useless.

New Gig: PostgreSQL Experts, Inc.

Fuck Typing

Some Thoughts on Database Change Management

Database migration frameworks and ad-hoc solutions leave things…wanting. Herein lie some preliminary thoughts on how to solve this problem.


Filed under Git

Migrating Bricolage CVS and SVN to Git

Migrating Bricolage Subversion to Git

PostgreSQL + OSSP UUID on Mac OS X

Migrating Bricolage CVS to Git

HOP Markdown Followup

Filed under Perl

List All Subversion Committers

Issues Parsing Markdown with HOP::Parser

Filed under Perl

The Future of SVN::Notify

Filed under Perl

pgTAP 0.20 Infiltrates Community

Musée du quai Branly

Why Test Databases?

Is Printing Money Stimulative?

Embed HTML on Your Site

Filed under Web

Getting Postfix to Send Mail From a Comcast Network

Filed under Tools

Sociable Plugin for Blosxom

RFC: A Simple Markdown Table Format

Filed under Web

A Modest Proposal for Markdown Definition Lists

Filed under Web

Now with Markdown!

pgTAP 0.16 in the Wild

More France Photos

Dynamic OFFSETs and LIMITs

Blog Restored, Google Analytics, FeedBurner


Blue Eiffel

Paris Photos



pgTAP 0.14 Released

enblogment: For Obama

pgTAP 0.12 Released

pgTAP 0.11 Released

Good at Doing Things

Notes from “Good at Doing Things: Montessori education and higher-order cognitive functions”, presented by Steve Hughes.

pgTAP 0.10 Released, Web Site Launched

The new version features compatibility back as far as PostgreSQL 8.0 and lots of cool functions for testing database schemas. The site’s cool, too.

CITEXT Patch Submitted to PostgreSQL Contrib

pgTAP pgFoundry Project and Lightning Talk

pgTAP is now a pgFoundry project and I’ve posted the slides from my YAPC::NA 2008 Lightning Talk on pgTAP.

Introducing pgTAP

Moving Towards Bricolage 2.0

How to Globally Change a Subversion Username

SVN::Notify 2.70: Output Filtering and Character Encoding

Filed under Perl

Mac OS X CD-ROM File Systems WTF?

Filed under macOS

Need Suggestions for IMAP Solution and Migration

I’ve had my own IMAP server and have recently been burned by a commercial solution. So I’d like suggestions for where to go next.

Filed under Tools

How to Generate Recurring Events in the Database

Going deep on using Postgres functions to create efficient recurring events.

Teasers Only Atom Feed

In which I link to a teasers-only atom feed on the site.

Using sudo to Install the Postgres Gem on Leopard

Filed under Ruby

I’m Ba-aack!


Validating Time Zones in PostgreSQL

Need Help Reducing View Calculations

Where iCal Keeps Invitations

Filed under macOS

Ruby Time Object Time Zone Bug

Filed under Ruby

New Just a Theory Blog Policy: Limited Comment Period

Array to Hash One-Liner

Filed under Ruby

PostgreSQL Warm Standby Using Ruby

Five Things You Don’t Know About Me

Rails Migrations with Slony?

Configuring rsnapshot and launchd on Mac OS X

Filed under macOS


How to Use Regex Named Captures in Perl 5

Filed under Perl

What’s With These CPAN-Testers Failures?

Filed under Perl

My First C: A GTIN Data Type for PostgreSQL

Batch Updates with PL/pgSQL

Bricolage GSoC Projects Completed

PL/pgSQL Talk Slides Posted

PL/pgSQL Talk for Portland PostgreSQL Users

FSA::Rules Graphing Features Improved

Filed under Perl

Stepped Series of Numbers in Perl

Filed under Perl

Managing Many-to-Many Relationships with PL/pgSQL

What Works and What Doesn’t in Online Wine Applications

Filed under Wine

Benchmarking PostgreSQL Functions

Corrected PostgreSQL EAN Functions

Benchmarking UPC Validation

Validating UPCs with PL/pgSQL

PL/pgSQL Article Published

Higher-Order PL/pgSQL

Search Powered by KinoSearch

Stephen Colbert at the White House Correspondents Dinner

Should We Withdraw From Iraq?

What Name Do You Use for an Order Column?

Hack: Force DBI::Shell to use a DBI Subclass

Filed under Perl

How To Calculate Percentage Change Between Two Values

Filed under Math

Use Variables in PL/pgSQL DECLARE Blocks

Intelligent MySQL Configuration

Filed under MySQL

SVN::Notify 2.57 Supports Windows

Filed under Perl

SVN::Notify 2.56 Adds Alternative Formats

Filed under Perl

Tune In, Opt-Out

Theory and Ovid on vim vs. Emacs

Filed under Tools

Patch for SQL on Rails for Mac OS X

What’s with the Ancient Projectors?

Filed under ETech

Port SVN::Notify to Windows

Filed under Perl

FSA::Rules Annotated

Filed under Perl

How Does One Protect Online Ballot Box Stuffing?

Add Regular Expression Operator to SQLite

How Do I Tweak Perltidy Method/Funtion-call blocks?

Filed under Perl

Behind the Stevenote

Good Ole' Pat Robertson

OSCON 2006 Call for Participation

Filed under OSCON


Which Digest Should I Use?

Filed under Perl

Use Perltidy in Emacs

Filed under Perl

Issues with INSERT Execution Ordering

Let’s get Relational

How Do I Avoid Tiger’s readline When Compiling PostgreSQL?

What Advanced SQL Book Should I Buy?

How to Ensure Unique Values Relative to a Column in Another Table

Why Bricolage documents have UUIDs

TKP Permissions Design

SVN::Notify 2.50

Filed under Perl

First Programming


Custom SQLite Aggregates in Perl

Script Kitties

Hurricane Relief? Try Big Oil Relief

Splitting Words in Perl

Filed under Perl

Efficient Closest Word Algorithm

Filed under Perl


Jon Stewart and the Future of Television

How Does DateTime Ignore CORE::GLOBAL::time?

Filed under Perl

My OSCON 2005 Presentation Slides Posted

Filed under OSCON

No UTF-8 Support on Windows?


Windows Virus Hell

Bricolage Now has PHP 5 Templating

Test.Simple 0.20 Released

Plea for Help from JavaScript Geniuses

Has Google Forgotten its on Tagline?

Filed under Web

Bricolage 1.8.6 Released

Test.Simple 0.11 Released

How the Bricolage Summer of Code Projects were Selected

Test.Simple 0.10 Released

Bricolage Summer of Code Application Summary

Bricolage a Google Summer of Code Project

CVS diff Options Finally Fixed

Filed under CVS

Welcome Anna!

Suggestion for Emulating Namespaces in JavaScript

The Purpose of TestSimple

Quirks of IE’s JavaScript Implementation

TestSimple 0.03 Released

How do I Add apply() to IE JavaScript Functions

Control iTunes from Emacs

Filed under Emacs

TestSimple 0.02 Released

New JavaScript Testing Method: TestSimple

JSDoc Doesn’t Quite do the Trick for Me

Is there a JavaScript Library Documentation Standard?

Regular Expressions are Faster than Unpacking

Filed under Perl

Bricolage 1.8.5 Released

MySQL’s REPLACE Considered Harmful

Filed under MySQL

The End of Civilization

What JavaScript Book Should I Buy?


How I Increment Module Version Numbers

Filed under Perl

New LDAP Auth Module for RT

Filed under Perl

Enforce Foreign Key Integrity in SQLite with Triggers

Bricolage 1.8.3 Released

Reframing the Debate

SVN::Notify 2.41 Adds Plain Text Issue Tracking Links

Filed under Perl

SVN::Notify 2.30 Adds Issue Tracking Links

Filed under Perl

The Teenage Brain

SVN::Notify 2.22 Improves Diff Parsing

Filed under Perl

How to Determine Your Transaction ID

SVN::Notify 2.20 Adds Colorized Diffs

Filed under Perl

Howard Fineman’s “Analysis”

Bush Uses Radio Receiver During Debate?

Compiling libreadline on Mac OS X

Filed under macOS

SVN::Notify 2.10 Generalizes Behavior

Filed under Perl

On Making a Better Open-Source CMS

SVN::Notify 2.0 Hitting CPAN

Filed under Perl

Lessons Learned with Perl and UTF-8

Filed under Perl

Bricolage 1.8.2 Released

Apache::Util::escape_html() Doesn’t Like Perl UTF-8 Strings

Introduction to Bricolage Published by Perl.com

Another Short Visit to Alamosa

Nicholas Clark

Filed under OSCON

Always use the C Locale with PostgreSQL

Portland Kerry Rally

eWeek Reviews Bricolage 1.8.1

OSCON 2004 Notes

Filed under OSCON

Discovering Bricolage at OSCON

Filed under OSCON

New Bricolage Website Launched!

New Bricolage Website Beta

See “OutFoxed”

MoveOn.org Voter Registration Party

Bricolage 1.8.1 Released

iPod Threatens UK Military Security

Gartner: iPod is a Security Threat

Apache::TestMB Released!

A Quick Trip to Alamosa

Module::Build + Apache::Test is Nearly Here

How Do I Know Whether NTPD is Working?

Fun with Module::Build Argument Processing

david.wheeler.net Content Migration

NTPD Configuration on FreeBSD and Red Hat Linux

Bricolage 2.0 UML Diagram

How do I Configure NTPD?

bricolage.cc Has a New Server

Perl.org Subversion Authentication Woes

Blosxom Rewrite Rules

How to Extend Bricolage 2.0

Bricolage Tasks, Jobs, Actions, and Alerts


My Adventures with Mac OS X

Filed under macOS

Software Development Methodology