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!
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 https://www.sharesies.nz/jobs
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.
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.
Recently someone signed up to https://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).
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.
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.
It might seem obvious that if you value something, you'll make an effort to get better at it. What's less intuitive is that if you make an effort to get better at something you're not good at, you'll learn its value.
A paid, early access, strongly moderated Mastodon instance hosted entirely in New Zealand.