2026-11-02 14:52:10
Hey friends!
Happy November! I hope you ended your October with a bang. Between GitHub Universe and Halloween, mine was particularly fun and busy this year.
Let's gooo!
Was this forwarded to you? You can subscribe here! Was it not? Maybe you should do the forwarding.
Spreading Liquid with three.js
Taking Back CSS-Tricks
A select should tell you something
Design Systems Should Be Fast by Default
Phew y'all, I was in San Francisco for a LONG time for GitHub Universe, and I'm so happy to be home! I did a little meta round-up vlog about it while also recapping my newsletter if you want to see some behind-the-scenes. It was a really good time podcasting and keynoting and building keyboards (which, btw, you can buy one of the exclusive kits if you want), and it was also so much work pulling everything together. I'm happy it happened. I'm happy it's over. Ha!
Halloween was a cute one, my three-year-old is finally old enough to trick-or-treat and understand what's going on, which was a blast! And, because Mariah Carey said so... I did indeed set up my Christmas tree today.
Also, if you're in the United States: make sure you vote this week!!
No sponsor this week! Insert an ad for your own brain here.
Please do share this with your friends, and check out my YouTube channel if you'd like video recaps of this newsletter!
Last week, I had you swap Halloween costumes! Y'all did a spooktacular job Ten, Paul, Kyle, Trey, Thulasi, Alison, Rhett, Amine, and the smarties in the Ruby Users Forum!
This week's question:
Given a chronological log of local "HH:MM" timestamps from the night daylight saving time ends, return the actual number of minutes between the first and last entries. The log contains a consecutive pair that reveals the clock’s one-hour rollback.
Examples:
elapsedMinutes(["00:50", "01:10", "01:50", "01:10", "02:10"]);
> 140
elapsedMinutes(["01:55", "01:05", "01:25", "01:40"]);
> 45
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
Cartographers of North Korea
Drone Photo Awards 2026 Gallery
Indirect Change
Doyspad by Deadline Studio w/ GMK Centinela
What type of shoe do frogs wear?
Open-toad sandals.
That's all for now, folks! Have a great week. Be safe, make good choices, and be a little cheesy!
Special thanks to Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | youtube | twitch | twitter | patreon | codepen | mastodon
2026-10-26 18:07:21
Howdy friends!
I hope you had a great week! Mine has been SUPER busy with final rehearsals and preparations for GitHub Universe this next week, and I'm excited to welcome devs to the big event online and in person in San Francisco. Until then... let's boogie.
Was this forwarded to you? You can subscribe here! Your friends would like this too, you should tell them about it.
The compiler was supposed to end programming too
The Future of CSS
Overgrown, when plants invade your abandoned tabs
Are We Actually Shipping Faster with AI?
This week, truly... I have done nothing but GitHub Universe work. I'm writing this from inside GitHub HQ in San Francisco, between rehearsals with execs and helping wrangle swag + exciting goodies for the event ahead. It's been SO much work. I'm really grateful to be on a team that is so hands-on and cares deeply about making this a great experience for developers! I'm obviously biased because I work here, but if you have the time, register free online on the GitHub Universe website! You'll see a familiar face (me) on the stream a few times!
No sponsor this week! I'll do a fun vlog of some behind-the-scenes at GitHub Universe though if you want to subscribe on YouTube! See ya there!
Last week, a ghost infected your keyboard and you had to parse how it messed up your typing! Spoooooky answers (that were quite clever!) were great from Stephen, Dani, Omer, Michael, Trey, David, Kyle, Greg, Rhett, Thulasi, Ricardo, Josh, Christian, Debopam, Ten, and the fine folks in the Ruby Users Forum!
This week's question:
Each person at a Halloween party has exactly one costume, but they’ve been shuffled: costumes[i] is the index of the person who owns the costume person i is wearing. Return the minimum number of swaps between any two people needed to give everyone their own costume.
Examples:
> halloweenSwap([0, 1, 2, 3])
> 0
> halloweenSwap([1, 2, 0])
> 2
> halloweenSwap([4, 3, 2, 1, 0])
> 2
> halloweenSwap([2, 3, 4, 0, 1])
> 4
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
Filippos Manoloudis 'Scherzo-Vals' by Miguel Lloget on a 1969 Daniel Friederich classical guitar (video)
Family Gaming Database
Minerva-LX Heritage with KKB Nichirin keycaps
Critiquing is the way to learn to write
It doesn't matter how much you push the envelope.
It will still be stationary.
That's all for now, folks! Have a great week. Be safe, make good choices, and sleep well!
Special thanks to Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | youtube | twitch | twitter | patreon | codepen | mastodon
2026-10-19 15:05:18
Hey friends!
I hope you had a good week! I finished a project I'd been procrastinating on and have been experimenting with some different tools. It's been really fun. Time to suuurf!
Do you like this newsletter? Prove it! Ha ha ha just kidding... but also please share it with your friends!
The people holding up the internet
2026 Stack Overflow Developer Survey
yet another way to invoke functions without parentheses
What 10,000 home pages put in their head
This week I rewrote my newsletter subscription page and built a static version of my issue archive!
I blogged about the process here, but if you don't want to read Yet Another Thing, long story short: It was complex but fun. I procrastinated a lot on doing it after trying and failing for years. AI tools helped me write some janky scripts. I have more plans. Wee!
Also, something that made me so happy is two of our readers here (who answer our interview question of the week all the time) met up in real life! Ten and David were both on a trip to Japan at the same time and it absolutely made my week to see them meet because of this lil mail in your inboxes.
Your code can be perfectly valid and still let one user read another user's invoices.
SonarQube Hunter Agent is an AI security agent that hunts the logic flaws like: broken access control, business logic abuse, and authentication, and session gaps.
It works like a security researcher, reasoning over your codebase using structured playbooks and validating each finding before it reaches you. Findings show up in your SonarQube issue list with a severity, a plain explanation, and the exact line you need to act on.
Last week, I had you maximize your candy while trick-or-treating! Tasty answers David, Ten, Kyle, Bushwazi, Amine, Christian, Madhav, Greg, Rhett, and the ghostly devs in the Ruby Users Forum!
This week's question:
There's a ghost in your keyboard! It keeps typing weird symbols in your words. Given a string you typed (with the ghost), # deletes the last character and ~ duplicates it, if one exists. Return the final text.
Examples:
ghostwriter("ghost")
> "ghost"
ghostwriter("a#~b")
> "b"
ghostwriter("ab~c#")
> "abb"
ghostwriter("BBB##O~")
> 'BOO'
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
Game Boy logo, console and packaging
Magician Dani DaOrtiz Fools Penn & Teller with Card Magic Trick (video)
Nuxroskb +84 Keyboard with KeyKobo CINQUE TERRE keycaps
Go Lives
They tried to make a diamond shaped like a duck.
It quacked under the pressure!
That's all for now, folks! Have a great week. Be safe, make good choices, and let yourself slow down!
Special thanks to Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | youtube | twitch | twitter | patreon | codepen | mastodon
2026-10-12 12:33:25
Hey friends!
I hope you had a good week! Mine was a nice one, I was able to build a new keyboard for myself (!) and get some house projects done. Let's learn!
Was this forwarded to you? You can subscribe here!
This Hue Shall Pass
Shipping JPEG XL in Chrome
CSS does your tooltip positioning now
IANA's email about why example.com changed
In case you didn't know, GitHub Universe is coming at the end of this month! It's GitHub's largest event of the year, a big in-person + virtual conference, and it has been alllll hands on deck getting everything ready. My team works across demos and talks and keynotes and booths and the makerspace and moooore and we are very busy, but it's also awesome to be able to work together on some cool stuff.
One thing I'm working on that I'm particularly excited about is a collaboration with Omnitype for some custom, blind box mechanical keyboards. Check out GitHub on socials (any of them) to see some preview pictures of the keyboard I'm typing on right now. It was really fun to test out the (somewhat randomized) build experience, and we'll have the keyboards available both onsite in the makerspace, and online later on!!
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.
Last week, I had you avoid zombie infections! Spooky work Ricardo, Dani, Ten, Ross, Micah, Paul, David, Amine, Greg, Christian, and the clever devs in the Ruby Users Forum!
This week's question:
You're trick-or-treating down a street, and you're given an array that shows how many pieces of candy each house gives out. You can't visit two houses that are next to each other. Return the maximum number of candy pieces you can collect.
Example:
> maxCandy([2, 7, 9, 3, 1])
> 12 // visit houses with 2, 9, and 1
>
> maxCandy([5, 1, 1, 5])
> 10 // it's worth it to skip the middle two
>
> maxCandy([4])
> 4
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
Margaret Hamilton, computing pioneer who led software development for the Apollo program, dies at 90
Why settled Vikings deserve our attention
Handwired QMK keyboard with blank MOA jelly keycaps
Building without predicting
What's in a ghost's nose?
Boo-gers!
That's all for now, folks! Have a great week. Be safe, make good choices, and upgrade something you've been cheaping out on!
Special thanks to Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | youtube | twitch | twitter | patreon | codepen | mastodon
2026-10-05 11:44:52
Happy October, friends!
I hope you had a good week! Mine was a nice one, I had fun with some coding experiments and seeing family and friends.
Onwards!
Was this forwarded to you? You can subscribe here!
The accidental history of 3000, 8080, and other port numbers
How Evil Martians moved from Gatsby to Astro in nine days without rewriting a single React component
New HTML and CSS features you should be using in your design system
AI is still in its terminal era
You Don’t Know Bidi (And Neither Does ChatGPT)
I wrote about accessibility and the internet this week. It's a post I've been sitting on for upwards of 2 or 3 months as I've been thinking about how much is being automated away in our work as software engineers, which things are still important (and more important than ever), and how we might think about the internet moving forward.
Honestly the post is kind of short and simplifies some things, but the summary is: I'm kind of sad that it took AI to make some people take accessibility more seriously, but I'm also glad that that work is happening more. And so much of the internet is bots now, it'll be interesting to see if like... there's a new "pricing model" for the internet for humans and bots to surf/work/buy separately. If you have thoughts on this, I'd love to hear them!
No sponsor this week! Insert an ad for your own brain here.
Please do share this with your friends, and check out my YouTube channel if you'd like video recaps of this newsletter!
Last week, I had you get days of temperature drops! Keepin' warm with great answers were Amine, Vasanth, Raymond, Dani, Kyle, Paul, Ten, Ross, Kriszti, Alex, Christian, Ricardo, Rhett, and the jazzy devs in the Ruby Users Forum!
This week's question:
On Halloween night, a town is represented by a grid where 0 is an empty lot, 1 is a living person, and 2 is an infected zombie. Every minute, infection spreads to any living person directly above, below, left, or right of an infected zombie. Return the minimum number of minutes until no living people remain, or -1 if some people can never be reached.
Examples:
> minutesUntilApocalypse([
[2, 1, 1],
[1, 1, 0],
[0, 1, 1]
])
> 4
> minutesUntilApocalypse([
[2, 1, 1],
[0, 1, 1],
[1, 0, 1]
])
> -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)
Busyness Is a Choice
Gboard Conveyor Belt Version (video) (repo)
More than words
Now Entering: The Era Of Bleh
What do ghosts use to wash their hair?
Sham-boo!
That's all for now, folks! Have a great week. Be safe, make good choices, and try a new food!
Special thanks to Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | youtube | twitch | twitter | patreon | codepen | mastodon
2026-09-28 14:05:53
Howdy y'all!
Alright, time to wake up, we made it to when September ends! I hope you had a good week. I was in San Jose, California this week for WeAreDevelopers World Congress, which was a really cool event! More on that later, let's boogie.
Was this forwarded to you? You can subscribe here!
"AI, make the website good"
Blurry before beautiful: image previews for the web
Props Are Not a Design System
My Development Setup in 2026
This week was so packed at WeAreDevelopers World Congress! My team at GitHub had a bunch of talks across topics from AI to open source (naturally), and it was really fun seeing so many folks in person that I hadn't seen in ages. The video of my talk should be up soon, but until then, I gave a very similar talk a few months ago at Codemotion Madrid!
What's wild about the changes in the talk from April to now is just... how much AI has exploded even more, exponentially. I updated the stats in this version (slides here!), and talked a bit more about how GitHub is updating its infrastructure to handle traffic and compute, and had some updated stories. The main thesis of the talk is the same (about how we need to steward the future and build+work responsibly), but man, the stats kind of blow my mind (for example, the amount of agent-generated PRs on GitHub has 4x-ed just since the Spring). I'll be sure to share the recording when it's up!
Hey all! SerpApi here.
We provide real-time, structured data from Google and 100+ other search engines through one simple API.
Developers use SerpApi to build:
Results are available in JSON or LLM-friendly Markdown, with support for different locations, languages, and devices. Try your first search for free in our Playground.
Last week, I had you get Sundays in a month! No Sunday scaries here (but a lot of fun Temporal use cases) for Paul, Ross, Ten, Arpit, Micah, Kriszti, Tatiana, Christian, Iain, Rhett, Lucien, Greg, Darryl, Stephen, Amine, Andrew, and the gemtastic devs in the Ruby Users Forum!
This week's question:
Given an array of daily temperatures and a number drop, return an array where each element is how many days you'd wait until it's at least drop degrees colder than that day. If that never happens, put 0.
Examples:
> firstFrost([70, 68, 72, 60, 65, 55], 5)
> [3, 2, 1, 2, 1, 0]
> firstFrost([50, 49, 48], 5)
> [0, 0, 0]
> firstFrost([40, 30, 45, 20], 10)
> [1, 2, 1, 0]
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
Attention is all you have
TGR x SingaKBD Unikorn Mechlovin' x GSK with GMK Red Alert R2
History of the Rubik's Cube
English: a vs an
Are you allowed to laugh loudly in Hawaii?
Or are you only allowed a low "ha"?
That's all for now, folks! Have a great week. Be safe, make good choices, and appreciate what you have!
Special thanks to Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | youtube | twitch | twitter | patreon | codepen | mastodon