rendezvous with cassidoo

a tech newsletter for you

Cassidy's face

Issue #482: "As for the future, your task is not to foresee it, but to enable it." - Antoine de Saint-Exupery

View on Buttondown

Hey friends!

I hope you had a great week! Mine was really refreshing. I actually got tasks done on my to-do list, which has been good for my brain. Let’s keep the good brain juices going!

Was this forwarded to you? You can subscribe here! Was it not? You should forward it instead.


How hard is it to check for whitespace?
Inside GitHub’s new Git storage architecture
Fixing Illustrations on a Dark Background with CSS
HTML-in-Canvas in Chrome 157: Interactive DOM inside 2D, WebGL, and WebGPU


Something that interested me this week

I was a 1337 h4x0r this week (when was the last time you saw THAT phrase?) and messed around with my TV’s home screen! I had seen a bunch of posts across social media about people doing that over the past few weeks with their AI tools, customizing their TVs to remove bloat and fit their preferences.

As much as I go back and forth about AI in our lives as a society… using it to make our devices faster and nicer is something I can get behind.

Anyway, if you’d like to check out how I got my TV to a very pretty and zippy state, I blogged about it here in a way that will hopefully be helpful to you if you want to try it yourself!!


Your API requests belong next to your code.

I moved my API client into Git. The migration took about two minutes: export my Postman collection as JSON, import it into Bruno, commit.

Bruno stores API requests as plain-text files, so endpoint changes and the requests that test them can ship in the same PR. Same branches. Same code review. Same repo.

It works offline, it’s open source, and there’s no account required to get started.

Got a Postman collection lying around? Give it five minutes.

Download Bruno free


Interview question of the week

Last week, I had you get time ranges for daylight savings time! Y’all kept me AWAKE with your awesome answers Ten, Omer, Rhett, Andrew, David, Omer, Paul, Greg, Christian, and the well-rested devs in the Ruby Users Forum!

This week’s question:
Given rounds in a board game, where rounds[r][p] is the points player p earned in round r, find the earliest round from which the eventual winner is the sole leader at the end of every remaining round. Return the round number (1-based), or -1 if the final score is tied.

Examples:

> comebackRound([
  [5, 3, 2],
  [0, 5, 2],
  [4, 2, 2],
  [1, 3, 0],
]);
> 2

> comebackRound([
  [4, 2],
  [1, 3],
  [2, 1],
]);
> 3

> comebackRound([
  [4, 2],
  [1, 3],
]);
> -1

(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)


Cool things from around the internet

What craft means when making gets easier
You have more influence over the future than you think
The web used to belong somewhere
Mode Encore keyboard with GMK MTNU Mictán keycaps


Joke

Why do we tell actors to break a leg?
Because every play has a cast!


That’s all for now, folks! Have a great week. Be safe, make good choices, and donate some of your unused stuff!

Special thanks to Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!

cassidoo

website | blog | github | youtube | twitch | bluesky | twitter | patreon | codepen | mastodon


Want this in your inbox every week? Subscribe here!