Previously, on Just a Theory
2025
Sqitch 1.5.0
Sqitch v1.5.0: out now in all the usual places!
Should URI::mysql Switch to DBD::MariaDB?
Should Sqitch and URI::mysql use DBD::MariaDB instead of DBD::mysql? If so, what are the implications for Sqitch deployment and usage?
New JSONPath Feature: SelectLocated
New in the jsonpath Go package and Playground: “Located” results that pair selected values with normalized paths to their locations.
2024
SQL/JSON Path Playground Update
The Go SQL/JSON Playground has been updated with a fresh design and PostgreSQL 17 compatibility.
JSONTree Module and Playground
I’m happy to announce the release of the JSONTree Go module and Wasm-powered in-browser playground.
RFC: Extension Packaging & Lookup
A proposal to modify the PostgreSQL core so that all files required for an extension live in a directory named for the extension, along with a search path to find extension directories.
Bye Twitter
I finally deleted all my Twitter accounts, notably @theory. If you see that username, it’s not me.
Introducing RFC 9535 Go JSONPath and Playground
I’ve made a RFC 9535 JSONPath JSONPath Go package, and compiled it into Wasm to build an in-browser playground for it.
NYTimes Tech Guild on Strike
My former colleagues in the New York Times Tech Guild have gone on strike in response to a number of unfair labor practice violations and management’s inability to bargain in good faith.
PGConf & Extension Ecosystem Summit EU 2024
Notes and links from the Extension Ecosystem Summit EU 2024 and my first time at PGConf EU. Plus thoughts and photos from ancient sites and archeological museums I visited.
PGXN v2 Update
A lot has happened in he five months since the last PGXN v2 update. The time has been used for continuing community discussions, planning, designs, and the start of implementation. Read on for a full accounting.
PGXN Certifications RFC
A request for comments on a new PGXN RFC for signing releases, plus a link to an initial implementation.
⛰️ Postgres Ecosystem Summit EU
The sequel to the successful PGConf.dev event, the Extension Ecosystem Summit EU will showcases some exemplary extension use cases.
Release: pgxn_meta v0.1.0
Today I released pgxn_meta v0.1.0, a Rust crate and executable for validating
PGXN Meta v1 and v2 META.json
files.
To Preload, or Not to Preload
When should a Postgres extension be pre-loaded and when should it not? Should it be loaded in user sessions or at server startup? For the Tembo blog, I dug into this question and wrote up my findings.
RFC: PGXN Meta Spec v2
PGXN Meta Spec v2 represents a significant reworking of the original spec for PGXN distributions. It would very much benefit from feedback from Postgres extension and developers.
Introducing Go SQL/JSON Path and Playground
Introducing the SQL/JSON Path package, a PostgresSQL-compatible jsonpath parser and executor in Go. Also: a Wasm-based playground!
Patch: Postgres ABI and API Guidance
Dear Postgres extension developers: Please review and give feedback on the proposed patch adding ABI and API guidance to the C language documentation.
PGConf.dev 2024
At PGConf.dev, I attended some great talks, made one of my own, and enjoyed the commearderie of fellow PostgreSQL extension authors and core developers. A brief report.
POC: Distributing Trunk Binaries via OCI
Would it be possible to distribute Postgres extension binaries via Open Container Registries? Tune in to find out!
POC: PGXN Binary Distribution Format
A proof of concept for “trunk”, the proposed binary distribution format for Postgres extensions.
Compiling Postgres with LLVM
I decided to compile Postgres with LLVM this week but ran into failing tests due to server crashes. Here’s how to avoid the issue.
🏔 Extension Ecosystem Summit 2024
A brief report on the PostgreSQL Extension Ecosystem Summit at PGConf.dev 2024 in Vancouver, Canada.
POSETTE 2024
I attended and gave a presentation at POSETTE, an event for Postgres. This post highlights some talks and the slides for my own.
Mini Summit Six
A rough transcript of the sixth and final Extension Ecosystem Mini-Summit, in which we review potential topics for the in-person summit at PGConf.dev and discuss how to organize it.
Extension Summit Topic Review
Final Postgres Extension Mini-Summit! On Wednesday May 15 at noon Eastern / 16:00 UTC, we’ll review some of the topics that have come up in previous Mini-Summits with the goal to winnow down and select issues to address at PGConf.dev.
PGXN Language Poll Result
Results of the Postgres community poll for building PGXN v2 in Go, Rust, or both.
Mini Summit Five
Links, notes, and commentary from Yurii Rashkovskii’s presentation, “Universally Buildable Extensions: Dev to Prod,” at the fifth Postgres Extension Ecosystem Mini-Summit on May 1, 2024.
Mini Summit: Universally Buildable Extensions
Tomorrow, May 1 2024, Yurii Rashkovskii of Omnigres will give the Postgres Extension Mini-Summit talk, “Universally buildable extensions: dev to prod.” at noon Eastern / 16:00 UTC, followed by community discussion.
Mini Summit Four
Links, notes, and commentary from Jonathan Katz’s presentation at the fourth Postgres Extension Ecosystem Mini-Summit, “Trusted Language Extensions for PostgreSQL”.
Test and Release pgrx Extensions with pgxn-tools
The v1.6.0 release of the pgxn-tools Docker image adds a new command to efficiently build and test pgrx extensions on a wide variety of Postgres versions.
PGXN V2 Architecture
I’ve written and published a document outlining the vision and strategy for the next iteration of PGXN. It includes diagrams. Everybody loves diagrams.
🎙️ Hacking Postgres s02e03
I quite enjoyed the chat with Ry Walker on the “Hacking Postgres” podcast, posted last week.
Mini Summit: Jonathan Katz on TLEs
The topic of the Postgres Extension Mini-Summit this week is Trusted Language Extensions, a.k.a. TLEs. Jonathan Katz of AWS will be giving a brief presentation on the “TLE Vision and Specifics” at noon Eastern / 16:00 UTC on Wednesday April 17, followed by community discussion.
Mini Summit Three
A rough transcript of my Devrim Gündüz’s talk, “Overview of {yum,zypp}.postgresql.org, and the challenges around RPMifying extensions”, along with interspersed chat comments.
Talk: Postgres Yum Extensions
On Wednesday at noon US Eastern / 16:00 UTC., Devrim Gündüz will be giving a talk: “Overview of the yum.postgresql.org architecture, how new RPMs are added, and issues and challenges with distributing RPMed extensions.”
PGXN v2: Go or Rust?
What programming language(s) should we use to build new and revamp existing PGXN services and tools: Rust or Go? Vote your preference!
Mini Summit Two
A rough transcript my Ian Stanton’s talk, “Building Trunk: A Postgres Extension Registry and CLI”, along with interspersed chat comments.
RFC: PGXN Metadata Sketch
Request for comments on a sketch of a new metadata standard for Postgres extension packaging, distribution, and delivery, building on the PGXN Meta Spec to address its shortcomings and emerging use cases 12 years on.
Extension Registry Namespacing RFC
A proposal for an additional level of name uniqueness for Postgres extension packaging and distribution, based on URIs.
Talk: Building Trunk
Ian Stanton will be giving a talk, “Building Trunk: A Postgres Extension Registry and CLI” on Wednesday at noon US Eastern / 16:00 UTC.
Mini Summit One
A rough transcript of my talk “State of the Extension Ecosystem”, along with interspersed chat comments and appearances by Bagel.
Talk: State of the Extension Ecosystem
A quick reminder that I’ll be giving a brief talk on the “State of the Extension Ecosystem” on Wednesday at noon US Eastern / 17:00 UTC.
Extension Ecosystem Summit 2024
Some pals and I organized a summit at PGConf.dev on May 28 to work together as a community toward comprehensive indexing, discovery, and binary distribution, as well as a speaker series “mini summit” leading up to the event.
RFC: Extension Metadata Typology
Thinking through the PostgreSQL extension metadata use cases and recognizing the types of information they need.
The History and Future of Extension Versioning
What versioning standard should be used for Postgres extension distribution? Some context from PostgreSQL and PGXN, a survey of the version standard landscape today, and a recommendation.
Extension Ecosystem Jobs to be Done
The challenges of the current Postgres extension ecosystem and the interest and energy put into exploring new solutions make clear that the time has come to revisit the whole idea. We begin with a survey of the jobs to be done by extensions packaging and distribution.
Presentation: Introduction to the PGXN Architecture
I made a presentation on the PGXN architecture for the Tembo team.
Contemplating Decentralized Extension Publishing
The Go package ecosystem uses distributed publishing to release modules without authentication or uploads. Could we do something similar for Postgres extensions?
PGXN Tools v1.4
The pgxn-tools Docker image has seen some recent bug fixes and improvements.
PGXN Challenges
Some thoughts on the challenges for PGXN’s role in the ideal PostgreSQL extension ecosystem of the future.
I’m a Postgres Extensions Tembonaut
Near year, new job. I accepted a new position at Tembo to work on improving the PostgreSQL extension ecosystem full time.
2023
Times Up
December 22 was my last day at The New York Times. I will miss many colleagues and the Guild, but it’s time.
JSON Path Operator Confusion
The relationship between the Postgres SQL/JSON Path operators @@
and @?
confused me. Here’s how I figured out the difference.
CipherDoc: A Searchable, Encrypted JSON Document Service on Postgres
I gave a talk at PGCon this year on a privacy-first data storage service I designed and implemented. Perhaps the encryption and searching patterns will inspire others.
UK Architecture
We visited the UK for a couple weeks last month, saw some pretty amazing ancient architecture, a few photos of which I quite like.
2022
Collective Decision-Making with AHP
How the New York Times Identity team tried out the Analytic Hierarchy Process to select a user ID format.
RFC: Restful Secondary Key API
A RESTful API design conundrum and a proposed solution.
Bryce Canyon 1987
Back in 1987 I made a photo at the Bryce Canyon Park. And now I’m posting it, because it’s spectacular!
Feynman’s Genius
A while back I reviewed James Gleick’s “Genius” on Goodreads. It died along with my Goodreads account. Now it’s back!
How Goodreads Deleted My Account
Someone stole my Goodreads account; the company failed to recover it, then deleted it. It was all too preventable.
Every Day Is Jan 6 Now
The New York Times gets real about the January 6 coup attempt.
2021
Review: Project Hail Mary
A brief review of the new book by Andy Weir.
Accelerate Perl Github Workflows with Caching
A quick tip for speeding up Perl builds in GitHub workflows by caching dependencies.
Sign O’ The Times
I started a new gig last week, after ten rewarding years at the old job. Pretty stoked.
Assume Positive Intensifies
How “Assume positive intent” downplays impact, gaslights employees, and absolves leaders of responsibility.
2020
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.
Blockhouse
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.
BLM NYC
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”.
2019
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.
Impeach
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.
Borderline
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.
2018
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.
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.
pgenv
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.
Irredeemable
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.
Tony
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.
Sqitchers
The time has come for Sqitch to leave the nest and go out on its own.
Twenty-Three
An Anniversary.
Superfan
“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?
Evolutionary Theory
The relaunch of Just a Theory.
iovation Tokenization
First in a series for iovation of posts on tokenization and the GDPR.
Review: Genius
A brief review of the book, subtitled ““he Life and Science of Richard Feynman”, by James Gleick.
2016
2015
The Watch is You
Apple Watch and the future of identity.
2014
2013
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.
Misguided Delusion
A simple post. I followed the link and have hardly stopped thinking about it since.
2012
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.
2011
Less Tedium, More Transactions
2011 Perl Advent Calendar post on the use of the DBIx::Connector Perl module.
Cloudy Ideas
Apple’s not on in the cloud computing business and has no interest in it.
2010
Introducing MyTAP
After some prodding from the MySQL Community Manager, some OSCON hacking yields tangible results.
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?
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?
2009
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.
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.
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.
2008
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.
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.
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.
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.
2007
2006
2005
Bricolage 1.8.6 Released
The Bricolage development team is pleased to announce the release of Bricolage 1.8.6.
JavaScript TestSimple 0.03 Released
I’m pleased to announce the third alpha release of TestSimple, the port of Test::Builder, Test::Simple, and Test::More to JavaScript.
JavaScript TestSimple 0.02 Released
I’m pleased to announce the second alpha release of TestSimple, the port of Test::Builder, Test::Simple, and Test::More] to JavaScript
New JavaScript Testing Method: TestSimple
I’m pleased to announce the first alpha release of my port of Test::Simple/Test::Builder/Test::More to JavaScript.
Bricolage 1.8.5 Released
The Bricolage development team is pleased to announce the release of Bricolage 1.8.5.
2004
Bricolage 1.8.3 Released
The Bricolage development team is pleased to announce the release of Bricolage 1.8.3.
SVN::Notify 2.00 Hits CPAN
Announcing SVN::Notify, a port of my widely-used activitymail script from CVS to Subversion.
Bricolage 1.8.2 Released
The Bricolage development team is pleased to announce the release of Bricolage 1.8.2.
Bricolage 1.8.1 Released
The Bricolage development team is pleased to announce the release of Bricolage 1.8.1.
Internationalizing Numbers in Address Book
Anyone know how to automate this?
In Search of a Server
Can you help us out?
Bricolage 1.8.0 Arrives!
At long last, it’ here!
Bricolage 1.7.5 “Ashland” (1.8.0 RC2)
Expect 1.8.0 in two weeks.
Cross-Platform Conferencing Software?
What are the best options?
Bricolage-Devel 1.7.4
Alllmoooost therre…
activitymail 1.19
Now with file includes and excludes.
activitymail 1.18
Fixes bugs handling file names with spaces.
Bricolage-Devel 1.7.3
Next up, RC1.
Bricolage 1.6.10 "Jump"
Get ready to jump to 1.8.0!
Bricolage-Devel 1.7.2
Massive performance improvements abound.
Bricolage 1.6.9
Desirable bugfixes all around.
2003
Apple Mail Hack
Use multiple addresses without multiple accounts.
Bricolage-Devel 1.7.1
Getting closer to 1.8.0!
Bricolage 1.6.8
Includes support for PostgreSQL 7.4.
Bricolage-Devel 1.7.0
Well on our way to 1.8.0!
Bricolage 1.6.7
Gearing up for 1.7.0.
Bricolage 1.6.6 Released
Likely the last 1.6.x maintenance release.
Bricolage 1.6.5 Released
More goodness delivered!
Params::CallbackRequest 1.10
Modularization is good.
San Francisco Politics
Finally, they’re properly analyzed.
activitymail 1.10
I finally got around to a new release.
Pittsburgh.pm
Another day, another Bricolage presentation.
Bricolage at the Forge
Linux Journal is enthusiastic!
Bricolage 1.6.4
Now with fully operative preview capabilities!
Bricolage 1.6.3 Released
Important fixes make this upgrade a must.
CMSs in Asia
Punditry in Japan
Bricolage 1.6.2
The most solid and reliable release to date.
Synergy at OSCON
Bringing Perlers and PostgreSQLers together.
Mason Callbacks Module Released
Added support for httpd.conf directives and testing.
Bricolage 1.6.1
It’s the best performing, most reliable version of Bricolage to date.
Bricolage News
It’s all good.
Bricolage Stands Out
IT-Director.com sings its praises.
All RDMSes Suck
No, I’m not kidding.
Talking in London
With apologies to Concrete Blond.
Microsoft Acquires VirtualPC
And there was no rejoicing.
Radio Interview Posted
Listen to my appearance on Online Tonight.
eWeek Does it Again
Jim Rapoza names Bricolage “Most Impressive” of 2002.
2002
Tune in Tonight
A Radio Star is Born.
Punditry
InfoWorld gets the message.
Nightmares
Dreaming in C considered hazardous.
Build Apache/mod_perl on Mac OS X
An article on MacDevCenter.com.
Voting Irregularities
The city of San Francisco ought to be ashamed.
Bricolage at SV.pm
Come see the dog and pony show.
The eWeek Effect
Up, up, and away!
Bricolage in eWeek
A glowing review from the IT weekly.
OSXCon Slides
Now available for download.
Chimera Fonts
How to fix them in version 0.05.
Bricolage 1.4.0
It feels good to finally have it released.
DBI Exceptions
Features and issues with my Exception::Class::DBI module.
Bricolage Presentation
Come see what all the hubbub is about.
Apple Should Support TPF
Yes, this is a serious suggestion.
Tagmemics
Allison Randall gives us a peak inside Larry’s head.
T?iBooks
Revolution in action.
DV Uploading…
I got roped into helping to create a permanent record.
OSCON Bound
San Diego, here I come!
The Main Event
How I added event handling to App::Info.
More App::Info
Now with improved error handling.
All about App::Info
An API for Collecting Application Metadata.
My OS X Adventures
It’s all good.
Catch Up
So much to do, so little time to do it.
Whew!
The Bricolage section of the Mason book is done.
Release, Release, Release!
Bricolage is moving fast!
mod_perl Bug Confirmed!
And it appears to be worse than I thought!
You’re So Vain
My vanity page is finally up!
A mod_perl Bug?
The Location directive appears to be broken in <Perl>
sections.
Tuesday’s SF.pm Meeting
Larry, Randal, and Chip all in one room!
CVS Branching Philosophy
Is there no right way?