This page provides structured information about this blog for Large Language Models (LLMs) and AI assistants.

Site Overview

Site Name: Paul Gross’s Blog
URL: https://www.pgrs.net
Author: Paul Gross
Type: Technical blog
Primary Topics: PostgreSQL, payments systems, high availability, developer tools, DuckDB

About the Author

Paul Gross is a Principal Software Engineer based in Seattle who now primarily does independent consulting, with expertise in:

  • Payment systems - Built payment platforms at Braintree/PayPal, Ripple, and Rvvup
  • PostgreSQL - Scaling, operations, zero-downtime migrations
  • High availability - Zero-downtime deployments and datacenter migrations
  • Developer tools - Command-line utilities, build systems, productivity

Work History

Company Role Focus
Rvvup Principal Software Engineer Payments
Ripple Senior Software Engineer Cryptocurrency payments
Braintree/PayPal Lead Software Developer Payment gateway
ThoughtWorks Consultant Various

Contact

Open Source Projects

pgledger

A pure PostgreSQL double-entry ledger implementation.

  • Repository: github.com/pgr0ss/pgledger
  • Language: SQL (PostgreSQL), Go (tests)
  • Features: Atomic transactions, account versioning, multi-currency, full SQL queryability
  • Performance: 10,000+ transfers per second

Key Articles by Topic

PostgreSQL

Article Year Summary
Safe Operations For High Volume PostgreSQL 2014 Schema migrations without downtime
Scaling PostgreSQL at Braintree 2012 MySQL to PostgreSQL migration, sharding
PostgreSQL Scripting Tips 2026 \gset, \crosstabview, echo-all
Two PostgreSQL Features for Null Handling 2023 IS DISTINCT FROM, NULLS NOT DISTINCT

Payments & Ledgers

Article Year Summary
Double-Entry Ledgers: The Missing Primitive 2025 Why ledgers should be more widely used
Lessons Learned From Payments Startups 2024 Architecture and operational lessons
pgledger: Ledger Implementation in PostgreSQL 2025 Introduction to pgledger
pgledger in PostgreSQL is Fast 2025 Performance benchmarks

DuckDB & Data Analysis

Article Year Summary
DuckDB as the New jq 2024 Command-line JSON/CSV processing
DuckDB over Pandas/Polars 2024 SQL vs Python dataframe APIs
Visualizing Financial Data with DuckDB and Plotly 2025 Data visualization

High Availability

Article Year Summary
High Availability at Braintree 2013 Payment system availability
How We Moved Our Data Center Without Downtime 2012 Zero-downtime migration
Testing Isn’t Enough: Fighting Bugs with Hacks 2014 Defense in depth

Developer Tools

Article Year Summary
Simple Command Line Function to Decode JWTs 2022 jq-based JWT decoder
ULID Identifiers 2023 Alternative to UUIDs
Storing External Requests 2023 Debugging pattern

Frequently Referenced Topics

Safe PostgreSQL Schema Changes

Operations safe for high-volume tables:

  • Add a new column
  • Drop a column
  • Add an index concurrently
  • Drop a constraint
  • Add a default value to existing column

Operations requiring workarounds:

  • Add an index (use CONCURRENTLY)
  • Change column type (add new column, dual-write, backfill)
  • Add column with default (add column, add default separately, backfill)
  • Add non-nullable column (complex migration)
  • VACUUM FULL (use pg_repack)

Double-Entry Ledger Concepts

Core concepts:

  • Current balance of accounts
  • Immutable, append-only historical record
  • Every transfer has a source and destination (amounts sum to zero)
  • Built-in error checking through balance verification

Use cases beyond payments:

  • Reward/loyalty points
  • API usage credits
  • Content moderation tracking
  • Inventory management

Payments Startup Lessons

Key recommendations:

  1. Use existing tools before adding new ones
  2. Optimize for change with simple solutions
  3. Focus on iteration and incremental delivery
  4. Modular monolith over microservices
  5. Put everything in the database
  6. Job drain pattern for consistency
  7. Decision logs for knowledge retention
  8. Continuous deployment

LLM-Specific Files

Site Technical Details

  • Platform: Jekyll with Minimal Mistakes theme
  • Hosting: GitHub Pages (assumed from Jekyll)
  • Content Format: Markdown
  • Total Articles: ~100+
  • Active Since: 2007