🦦 "Don't watch the clock; do what it does. Keep going." - Sam Levenson
Helllllooo!
I hope you had a good week! I celebrated my birthday with family and friends and it was a really great time. Let's learn!
Was this forwarded to you? You can subscribe here!
Web links of the week
Controlling dialogs and popovers with the Invoker Commands API
Beej's Guide to Learning Computer Science
voici.js: A Node.js library for pretty printing your data on the terminal
Using LLMs at Oxide
GSAP snow globe
Something that interested me this week
I'm doing Blogvent again this year, where I write a blog post every day in December. It's always a bit challenging to come up with ideas for posts (I'm always very optimistic when I start and then have regrets later), BUT we're doing it!
- Automatically mark pull requests and issues as stale with GitHub Actions
- Change commit timestamps in Git
- Fix your upgrades and migrations with Codemods
- The what, how, and why of CSS clamp()
- Goodbye to an 11-year-old Issue
- Lasagna and a root beer float
- The ABCD framework for feedback
Let me know what you think, or if you have any topic suggestions you'd like to hear from me!
Also, I had a really great conversation with Dalia Abo Sheasha about our jobs (me at GitHub, her at Microsoft, specifically for GitHub Copilot on Visual Studio) on our weekly livestream this past week. Check it out here!
Sponsor
What if your coding agents could manage themselves?
sudocode is what happens when your coding agents manage their own tickets. It's a lightweight orchestration layer that automates the logistics of managing coding agents, so you can direct the work instead of babysitting AI.
Equip yourself with tools to automate context handoff, run agents in parallel, and visualize outputs in real-time. Eliminate the chaos of AI-assisted development.
Fully local. Open source. Works with any coding agent and IDE.
Supercharge your coding agents →
Interview question of the week
Last week, I had you output HTML colors! Y'all did great Amine, John, Paul, Miguel, Stephen, Toni, Ten, George, and Ben!
This week's question:
Make a data structure for a deck of cards, and implement a shuffle() method, and a draw(n) method (where you draw n cards). Calling draw() when the deck is empty returns an empty array.
Example usage:
const deck = new Deck();
deck.shuffle();
console.log(deck.draw(5)); // Example: ['10♠', 'K♥', '3♣', 'J♦', '7♠']
console.log(deck.draw(5).length); // 5
console.log(deck.draw(2)); // Example: ['5♣', 'A♠']
(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
XKCD: Fifteen Years
A summary of things I learned from my time on Bear
What It Sounds Like | Synchronized Roller Coasters (video)
Keykobo Great Barrier Reef keycaps on the Cosmo Bauer Lite
Joke
I drove a long way in winter weather to get parts to fix my computer.
It was a hard drive!
That's all for now, folks! Have a great week. Be safe, make good choices, and read more!
Special thanks to Ezell, Ben, Kinetic Labs, Marta, and Flora for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | twitter | patreon | twitch | codepen | mastodon