2,647 tweets, and 5,139 including replies.
- Has anyone ever wanted to copy and paste text _with_ formatting on purpose?The Mac OS built-in shortcut of ⌥+⇧+⌘+V for paste without formatting is so awkward. The only workaround I know is to spot fix specific apps with overrides, but what an awful default.
- Strong fog game this morning.
- Finally got around to seeing the Demon Slayer movie. Beautiful art (anime, but one with a unique style), incredible soundtrack.Love that it's the highest grossing movie _ever_ in Japan, even if it's not the masterpieces that were Spirited Away (no. 2) or Your Name (no. 5).
- Postgres' `text` type, which lets you interleave unbounded data in with any database row, is a marvelous feat of technical accomplishment.Published a piece on why you might want to consider using `varchar` anyway, inspired by lessons learned at Stripe.brandur.org/text
- I guess the enthusiastic uptake of these new cookie options is good (Stack Overflow is so enthusiastic that I've filled theirs out 27 times already), but when I get a modal with "do not sell my personal information", it's just like ... can't you just not ask and then not do it.
- After trying a lot of database options in the Go world, we ended up moving everything over to sqlc — lets us use the excellent pgx driver everywhere, while also getting us high-level constructs with minimal boilerplate.Longer writeup:brandur.org/sqlc
- Gods, now that I'm off JIRA, GitHub Enterprise, managed endpoint with < 2 hours battery life, mandatory multi-layer code reviews, 15 minute CI turnarounds, and 30 second test start up, I'm running out of things to complain about.May need to look into picking up Java as a hobby.
- A partial list of K-sorted ID algorithms and prior art. We ended up going with ULIDs on new sequences for the time being. So far: upside (ergonomics + insert perf) with very little cost compared to V4 UUIDs.brandur.org/fragments/k-so…
- Shipping Nanoglyph 027 today (FINALLY). On Colorado, elaboration on 15 minute/15 week upgrades, and more on K-sorted IDs.nanoglyph-signup.brandur.org
- Chat 2002: Trillian.Chat 2022: Slack + iMessage + Chrome (for Google Chat) + Signal + WhatsApp + Discord + Twitter DM.And Google's new Chat product is exactly the same as the old except now it doesn't even let you disable auto-emoticon conversion. What's happening to us.
- Time to upgrade production to Go 1.17 — 15 minutes.For comparison, time to upgrade Ruby at old major payments processing job — closer to 15 weeks.There is something to this static binary / shallow stack thing.
- RT @craigkerstiens: In a similar vein to the last thread... we've got some really solid engineers working on really solid code bases, @brandur breaks down some of it with a bit of behind the scenes detail here - brandur.org/nanoglyphs/025…
- Go in production: we switched to use the xerrors package to get stack traces, because stack traces are kind of important for debugging problems. If you've got a better way, would love to know about it.brandur.org/fragments/go-x…
- WaniKani accountability update ~1 year in: level 23 / 60, 737 kanji learned (+ ~2.5k words vocabulary). Still making progress, but more slowly.
- Been listening to songs from Initial D soundtracks literally all day and work is so much faster at 154 BPM. RECOMMENDED.
- AWS pay in advance —I like the applicability for long-running autonomous projects. Pay a runway into an account and it'll run without having to swap out a credit card every few years. Keep to core services where APIs are stable and deprecation is rare.aws.amazon.com/about-aws/what…
- Absolutely gorgeous illustrations of metropolis Tokyo. There's nothing better than the combination of rain + neon colors.behance.net/gallery/124056…
- "Pig" (2021) with Nic Cage is so weird/incredible. First movie I've seen in ten years where I had no idea what was going to happen at any point.Hard not see the John Wick inspiration, but still very much its own movie.
- Whoah, don't know when this was added, but GitHub pull requests automatically retarget their base branch when that base branch is merged. GREAT feature — makes chaining PRs that much easier.
- Programming is terrible, and we should be appropriately forgiving to our forbearers, but once in a while I come across a design choice that is absolutely baffling in that at some point, someone really thought that this was a good idea.How to pass arguments to Rake tasks:
- RT @craigkerstiens: Not my words, but a good reinforcement we are building towards some pretty exciting things @crunchydata. And we're hiring (https://t.co/YusRZ2DFMa) /cc @brandur
- Was grepping our code today and became unreasonably happy at seeing this level of `FOREIGN KEY` hygiene. For reference, the project is less than a year old.There are many ways to make software that works, at least for a time. This is a way to make software that _stays_ working.
- Wrote this one a few months back, but forgot to post it here.Stay optimistic about companies and technologies, but apply healthy skepticism as well — in almost every case, people (very unsurprisingly) leave out the bad stuff.twitter.com/komlasapaty/st…
- Inspired move by Patagonia — no more customized products with corporate logos because products with logos are more likely to end up in landfills.Companies should embrace this and keep going Patagonia for swag. Brand T-shirts if you have to.patagonia.com/transitioning-…
- Just wanted to drop a blanket "thank you" for all the nice comments/messages/likes about my note yesterday. I expected a trickle of encouraging responses, and got a tsunami instead. You people are incredible.
- Recently I had the hard realization that I've spent more years as a Mongo user than as a Postgres one, so I'm changing that this month. Excited to be joining the engineering team at @crunchydata.A few more words on that: brandur.org/fragments/crun…
- Sent 023 this morning on downward assignment, the evolution of properties in C#, and Japanese city pop.brandur.org/nanoglyphs/023…
- TIL: The “Re” we use in subject lines for email replies is a latin phrase abbreviated from “in re” (“in the matter of”). Hah, I always thought it was short for “reply”.There’s an RFC of course:tools.ietf.org/html/rfc5322#s…
- Every time I wake up early enough to go see the sun rise, then walk around to listen to the early morning sounds of nature, I realize that it's completely unreasonable that I don't do this every single morning.
- Reminder that it's worth glancing at the AWS bill every once in a while, even if it's not enormous.The s-m-r-t idea of always invalidating all index pages in CloudFront on every build cost $8 of a total ~$13 bill last month.github.com/brandur/sorg/c…
- Luckily a joke, but it got me. Right in line with Ruby's design principles (succinctly: "include _everything_").
- Complained to @keiko713 about the kanji for the word "carrot" — 人参, which makes it "person" + "participate" (?!?!). Was sent this image as a memory aid.(Source: twitter.com/buromasa0423/s…)
- I like the abstract romantic idea of a monorepo as much as the next person, but once one is so big that Git (one of the fastest and best-optimized programs every written) doesn’t really work anymore, the monorepo is too mono.
- Stats from Canadian real estate.Turns out, super inflationary policy has ramifications. $X,000 in free money today, but $X00,000 more needed to own a home tomorrow. Most Canadians are homeowners and profiting, but think of the children, seriously.creastats.crea.ca/en-CA/
- Last Nanoglyph — wrote about how, unsurprisingly, IDEs are a good idea, and how they make writing **even Java** (!!) pretty fun.Title for next week: "Time and Entropy".brandur.org/nanoglyphs/021…
- Impressive video on electric buses in Shenzhen. Imagine buses going from the loudest vehicles on the street to the quietest.We’ve all internalized that big infrastructure upgrades are impossible, but remember some places in the world still make them.
- Can’t believe I agree with Facebook on anything, but this is the right move. Big tech isn't good, but legislative overreach and insider graft is worse.Good for society too. Given the quality of today’s news, we’d all do well to consume less of it.about.fb.com/news/2021/02/c…
- Excellent: Go 1.16 finally supports slurping up static files into binaries. 3rd party packages and extra build steps no longer required.(Like Go, and this is good, but can’t give them _too_ much credit because it should’ve happened >5 years ago.)golang.org/pkg/embed/
- Wrote a piece on ditching Google Analytics to run analytics over logs, like it’s 1999 (except now with hosted Presto, etc. bootable in seconds from the cloud ;).I also estimate how inaccurate hosted analytics are due to adblocked scripts. Answer: very.brandur.org/minimal-analyt…
- And worth noting it'll deduplicate too!twitter.com/starsandrobots…
- Periodic reminder that Vim has a built-in `:sort` command that works for an entire file and all the usual selections. Not something you need every day, but the days when you do, it's a _huge_ time saver.thoughtbot.com/blog/sort-line…
- RT @jkspn: As @NotionHQ had a meltdown earlier today, I am reminded of this wonderful read by @brandur on local-first softwareThe convenience of online apps like Notion, @Figma, @Webflow, etc. can’t be overstated. But ultimately they depen on your connection.brandur.org/nanoglyphs/014…
- Some nice people have bumped me on Twitter recently, so I'll take the opportunity for some self promotion —You might enjoy my newsletter, _Nanoglyph_. It's like a Substack, but from the old school. I'll be shipping a new edition in the next day or two.nanoglyph-signup.brandur.org
- RT @thesephist: Since I found it 3 years, ago, @brandur's blog has stayed the best designed blog I've ever seen (obviously, a subjective take). So clean, minimal, without being generic. And lots of attention to detail everywhere.It was a big inspiration for t.co/K3osrFdbV4's design.
- As much as I dislike trading firms and financial institutions, for the sake of my own sanity, I for one am glad that GME didn’t become another Bitcoin — expensive because people say it’s expensive, not because it can it can be used for anything or has any inherent worth.
- A little architectural inspiration: amazing house built underground, into the side of of a hill. Concrete and steel everything.Come on billionaires, more Bond villain lairs like this please. Someone needs to do the volcano thing ("You Only Live twice").design-milk.com/a-cave-like-ho…
- RT @adamludwin: An average GameStop by this summer
- Excellent take on social media.Twitter leaders—with politicians and reporters being the worst offenders—tweet what plays best, and what plays best are divisive semi-truths and reductive caricatures of opponents. We just can’t help ourselves.twitter.com/micsolana/stat…
- Programming in Java for a few hours sure makes you appreciate C#.Java's like an alternate reality where all the nice quality of life features (properties, property init from constructor, option parameters, tuples, etc.) just never happened.At least it finally got closures.
- This is pretty niche, but I wrote Go API bindings for WaniKani.github.com/brandur/wanika…Integrated the good parts of stripe-go, and left out the bad (global state, Java-esque iterators).WaniKani is a microcosm of good API design. More details: brandur.org/fragments/wani…
- For fun and (not so much) profit, cross-posting to Mastodon. Get in touch if you use it: mastodon.social/@brandurNot super optimistic that federation will be the answer, but will try anything that might put a dent in Twitter.Implementation detail: brandur.org/fragments/mast…
- Sent Nanoglyph 018 about Ractors in Ruby 3.A more faithful implementation of the actor model than something Goroutines/channels. Two styles of message passing to get whatever blocking/non-blocking semantics you want to have.brandur.org/nanoglyphs/018…
- Yet another Gmail HTML/web oddity: it won’t display an SVG.To this day the only reliable way of discovering what quirky subset of HTML Gmail supports is trial and error. I’m afraid to even look how my emails render on other even-quirkier web clients like Outlook or AOL.
- Played around with Ractors last weekend. Very happy there’s finally parallelism in Ruby.Worth noting that they’re currently not much use because so much Ruby relies on ambient global state. e.g. Can’t parse TOML in a Ractor, can’t render Markdown. Mostly stdlib-only right now.
- RT @gertjanwilde: What's good about offset pagination; designing parallel cursor-based web APIs — by @brandur buff.ly/3ovE4Nl #API
- A few romantic shots of Banff to help get your week started. Can't believe I'm still hiking in January.
- Update on Homebrew on M1: Works great now, and I was able to get rid of the second x86 Homebrew install that ran some programs under Rosetta. For my money, there are no blockers left in these being great machines for development.More detail: brandur.org/fragments/home…
- Nice thinking around easing Ractors into the Ruby ecosystem from @kirshatrov.Ruby relies heavily on global state so bringing them in at the "top" will be difficult initially, but they're more amenable at the "bottom" where less state needs to be shared.kirshatrov.com/2021/01/06/rub…
- RE WhatsApp Facebook-itzation: Baffled by the number of claims of “I left WhatsApp by “just” switching me and every person I know over to Signal!”Very hard to believe, but they seem to believe what they’re saying. Not sure where the disconnect is, but installed Signal anyway.
- RT @petervgeoghegan: Over 5 years ago my then-colleague @brandur wrote about problems with Postgres queues and the accumulation of garbage MVCC versions (see brandur.org/postgres-queues). Expect significant improvements in this area for Postgres 14: postgr.es/m/CAGnEbogATZS…
- After a lengthy battle, my SEO’s been usurped by an IKEA hangar rail for the garage. (Looks pretty nice actually, might get one.)Do I have any chance of taking it back, or is this the end.
- Finally finishing S4 Mr. Robot. Felt less anxiety from the culminating plot than from the idea of hacking via smartphone.Between autocorrect, no tab button, and half your shell symbols buried in keyboard menus two layers deep, this is the show’s most dystopian concept, by far.
- Happy 2021!A few pretty photos of the Rockies from the other day. Just gorgeous — lots of green, but now with a light layer of snow.
- Big Sur a few weeks in: Some things are worse (contrast, Finder), many things are different (fonts, menus), but nothing is _better_.Imagine if a big new macOS version introduced new keyboard shortcuts, better multi-tasking, or the like. Innovation in desktop OSes isn’t done.
- Go 1.16 beta1 for ARM-based Macs is a life saver so far. Ran into all kinds of problems with failures and zombie processes with 1.15 under Rosetta.golang.org/dl/
- My closet is indexed on `(season, apparel_type, style, color) WHERE defunct IS FALSE`.(And given half of those are `(summer, t-shirt, v-neck, black)`, de-duped on the backend ... ;) twitter.com/craigkerstiens…
- Going through old tweets, found this 10yo ad for The Camera Store in Calgary. One minute long, no spoken words, pure inspiration. Best enjoyed by photography nerds.(The ease/art of videography has advanced since then, but this is da Vinci for its time.)youtube.com/watch?v=awq90A…
- Life on WaniKani: wake up, underwater, to inbox(hundreds) every morning.270 kanji in. Last week, from first principles, found that "ichiban" (一番) literally means "number one". Learned that word when I was five, and for the last 30 years thought it meant “noodles”.
- After local businesses spent $10,000s they didn't have on outdoor infrastructure, city and state will now force a new, indefinite closure.It’s been a long time coming, but that’s it — the death knell. Ten years from now, I’ll be able to describe the final days of San Francisco.
- On the reasons why RDMSes trend toward glorified key/value stores at scale, and ideas to stop it — twitter.com/planetpostgres…
- A living GitHub issue, and the best project management I've ever seen, in or out of industry.(Note the 500+ hidden comments too so that it's easier to focus on recent events.)
- Finally, a blank slate.(Allowing me to start on one part of the surface and work inwards without breaking everything. Wayyyyy too many hours spent refactoring to get here.)
- Trying a site redesign and man, a combination of poor CSS hygiene and CSS defaulting to a mess have caught up to me.Now building "firebreaks" so changes in one place don't cascade into everything.Lesson: Keep stylesheets highly encapsulated, even where sharing is convenient.
- Apple's pulled an Rdio with Big Sur. As much as blown out, low-contrast interfaces with big white space gutters look great in portfolios, they are strictly worse for usability. Modern designers need the equivalent of editorial boards, or something.
- Important development in web technology that'd be easy to miss: Very soon there will be no performance advantage to cross-site resource sharing via CDN.Privacy aside, I like the idea of sites hosting their own assets — just seems simpler.
- Trying a site redesign and man, a combination of poor CSS hygiene and CSS defaulting to a mess have caught up to me.
- Go 1.16 beta1 for ARM-based Macs is a life saver so far. Ran into all kinds of problems with failures and zombie processes with 1.15 under Rosetta.
- Excellent: Go 1.16 finally supports slurping up static files into binaries. 3rd party packages and extra build steps no longer required.
- Wrote this one a few months back, but forgot to post it here.
- Absolutely gorgeous illustrations of metropolis Tokyo. There's nothing better than the combination of rain + neon colors.