I'm ten days in to Dry July! Last night was our big office party and celebration with an open bar with delicious craft beers.

I had lemon, lime and bitters. I'm happy to make the sacrifice but I do wish for more interesting alternatives!

I'm raising money for several New Zealand cancer charities, please support me and throw in a donation! It's to a damned good cause and I have 21 days to go!


Tom boosted

Hey everyone, Sharesies is hiring a few intermediate / senior devs. I would LOVE IT if you applied. If you're thinking about it but you're not sure for any reason, don't hesitate to reach out with questions! Apply here sharesies.nz/jobs

Tom boosted

When you type ./configure, the GNU Build System automatically spends the next ten minutes reminiscing about every major and minor unix variant created since 1971

I had two million profiles taking up about 2gb.

Copying all the interesting fields out of the profile object into regular database columns straight in to the 'account' table will mean a ton less IOPS (which is the real constraint I've got), and only takes 300mb or so.

Show thread

Now that I've committed to a reserved instance for a while, I have to make Secateur scale by making it smarter, not just throwing more cloudy money at it.

To that end, I just chopped off about 75% of its database size without losing any data.

Previously, I was saving the JSON object of every Twitter user's profile as a PostgreSQL JSONB field in its own table

JSONB is fantastic, and awesome when you need it, but it's grossly inefficient compared to normal tuples.

I wrote about trying to wrest some small part of my data back from Twitter.

What it took to delete my 'like' history.


So I found myself playing with -- and learning about -- the save-vs-unsafe ways you can decouple PostgreSQL transaction commits from fsync() on disk.

PostgreSQL gives you a lot of options, some of which are dangerous, and some of which aren't. It's interesting how much you can tune.

Show thread

Recently someone signed up to secateur.app and proceeded to try and block basically all of Twitter. My poor little server fell over and died twice as they blocked over 2.5 million Twitter accounts.

Interestingly, the constraint isn't CPU or even the Twitter API. It's the IOPS of an EBS storage volume being used for PostgreSQL commits.

Oh man, a CSS stylesheet that looks exactly like LaTeX. This is the closest I've come in years to wanting to throw away my blog and replace it with static-site generation (again).


graphic details of illness, body horror 

on my third day of severe diarrhea, moderate dehydration, frequent nosebleeds, and simultaneous kidney stone pain.

How's your week going?

that doesn't mean I haven't been *doing* stuff, it just means I've been doing it in the typcal haphazard cloud of anxiety and executive disfunction. working off of lists is a whole lot nicer to my brain.

Show thread

Actually resurrected my TODO lists and had a productive day sorting some shit out.

(note the last day I actually knocked stuff off the list, I was unemployed)

Right now, I'm in the process of deleting my entire "like" history on Twitter.

Twitter has gone to interesting lengths to make this onerous.

Older tweets can ONLY have their likes removed if you "like" them again *first*. That means a new notification is sent, for a years-old tweet.

I can remove "likes" I can't "like". Can't remove them for accounts that have been suspended or subsequently blocked me.

So when I'm done, the only "likes" left will be for tweets of people who loath me.


Cloud Island

A paid, early access, strongly moderated Mastodon instance hosted entirely in New Zealand.