Profile Picture

Postgres 13 Row-Level Security Performance

I’ve recently been looking into various row-level security schemas for Postgres, and came across this excellent article benchmarking a few different architectures for row-level security. That post shows benchmarks for Postgres 10—three major versions ago.

I forked the repo (GitHub), upgraded to Postgres 13, and added a new architecture based on Carl Sverre’s comment to see what’s changed.

I ran each benchmark on a maxed 2019 16” MacBook Pro (2.4 8-core/64GB RAM), with 100 users and 10,000 total items. Notably, all of my results are significantly slower than what the original post achieved—I suspect this comes from running Postgres in Docker on MacOS, which has known disk performance issues.

RLS + ACL column

In this schema, ACLs are stored directly in columns on the secured table. Public items are handled as just another role.

Read More →

Get a Hobby

I think one of the most predictive features for personal happiness is whether you have high-quality hobbies. My friends and acquaintances with hobbies seem consistently happier and more fulfilled than those without, independent of other factors like job satisfaction, financial success, and physical health.

Read More →

August 2021 Review

My time in Montana is coming to an end—I’ll be spending the next few days camping in Glacier National Park, then heading back down to Atlanta. This past summer really was something special—Livingston and the whole state just have great vibes.

Goal Tracking

  • 🟢 Get 1% faster. Not much to say here—I hit this goal and it’s the offseason! Since preseason is coming up again, I’ll probably change this goal next month.
  • 🔴 50% less discretionary spending. I spent just 1.8% less this month than my 2020 average. In retrospect, expecting to hit this goal while in Montana was probably foolish—I’ve been way more lax about eating out and paying for experiences than normal.
  • 🔴 One hour of solitary free time a day. Still not tracking this—clearly I’m not prioritizing this goal. A good lesson for next time.
  • 🟡 Twice-weekly live conversations with friends. Managed this all but one week this month.
Read More →

A Taxonomy of Software Engineering Taxonomies


Engineering ability can be boiled down into a single “level”. Levels are often based on both current ability and track record, and build on each other—a L4 engineer is expected to fulfill not only L4 expectations, but also those of L1-3. Levels are often used by management for titling and compensation bands. Levels can be either discrete or continuous, though in either case, despite the window dressing, they are often somewhat arbitrary.

Read More →
Next →