Manni's scratch pad of technical things.

Counting 1-bits

The book Hacker's Delight has a pretty neat way of counting the 1-bits in an integer. But my exploration shows that modern Intel CPUs have an instruction that do that for you, and that Go's math/bits library takes advantage of that instruction. Nonetheless, I leave notes that spell out the Hacker's Delight solution as obvoiusly as I can.

Details here.

Reusing SQL Prepared Statements in Go

How much time is saved by re-using prepared statements in Go?

Enough to make it worth your while.

Details here.

PostgreSQL 11.2 Compile/Install HOWTO

Another year, another fun version of PostgreSQL to build and install. Details here.

Go Channels/Select

I've been reading parts of Katherine Cox-Buday's Concurrency in Go, and I think this incomplete list of facts about channels and select statements is useful. A full table of channel operation/state/result is on page 75; these notes are just for me and whoever else may find them useful


  • a write to a full channel blocks until the channel is read from
  • a read from an empty channel blocks until the channel is writen to
  • a closed channel can be read from an infinite number of times
  • a write to a closed channel panics

Select Statements

  • all reads/writes are considered simultaneously for readiness
  • when no channels are ready, the entire select statement blocks
  • when more than one channel is ready, one will be chosen at random
  • defualt, if present, is run when all channels are blocked

Cassandra compaction tuning

I finally got around to making a few notes about how to aggressively tune Cassandra compaction for heavily updated tables!

Redis 4.0.2 Compile/Install

I banged out a few notes from my most recent compilation and installation of Redis.

PostgreSQL autovacuum tuning

I have completely re-worked my writeup on tuning PostgreSQL for heavily-updated tables to take into account the usefulness of autovacuum_vacuum_cost_limit.

Latest vim 8 setup

Many minor updates have happened around this site in a year, but the update I decided to put on the front page? My latest vim 8 setup, of course...