2025-04-14 11:45:51
Hola hola!
We made it to mid-April, where does the time go?? I hope you had a good week. Let's get learnin'!
Was this forwarded to you? You can subscribe here!
Tauri vs. Electron: performance, bundle size, and the real trade-offs
Mastering default values in JavaScript with the nullish coalescing (??) operator
CSS Bursts with Conic Gradients
Better typography with text-wrap pretty
A steam locomotive from 1993 broke my yarn test
I pumped out a bunch of content this past week!
For work, I morphed a post about MCP that I wrote for my own blog last week into something a bit more business-y, and shipped the latest episode of The Download!
I also blogged a bunch of other stuff:
Anyway, for the 8th (!) newsletter anniversary raffle last week, winners will be pinged this week! Thanks for entering, y'all!
Unlock Your Career Potential with Keenesse
Feeling stuck, or ready for your next big move?
Keenesse offers personalized career coaching to help you gain crystal-clear career goals, pinpoint exciting advancement opportunities, and master crucial skills like resume optimization, interview mastery, and confident negotiation – all to land your dream role in a competitive market.
Our expert team of seasoned tech industry coaches provides tailored support at every career stage, from ambitious students to accomplished executives.
Ready? Schedule your free, no-obligation consultation today at keenesse.com.
Last week, I had you generate Leyland numbers. Ya did great David, Muhammad, Elke, Ten, Austin, Jeremias, Patrycja, Nick, Levi, and Neha!
This week's question:
Given a 2D grid of integers, find the largest sum of any connected path of cells. A path consists of horizontally or vertically adjacent cells (no diagonals) and cannot reuse cells. Return the largest sum.
Examples:
const grid1 = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
const grid2 = [
[5, 3],
[2, 8]
];
largestPathSum(grid1)
> 45 // (1 → 2 → 3 → 6 → 9 → 8 → 7 → 4 → 5)
largestPathSum(grid2)
> 18 // (5 → 3 → 8 → 2)
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
Custom Gochu60 keyboard
What is manga lettering?
Avoid these 5 tape measure mistakes (video)
Leaf Color and Shape Enhance Cooling Effect
What kind of tree fits in your hand?
A palm tree!
That's all for now, folks! Have a great week. Be safe, make good choices, and get the rest you need!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | twitter | patreon | twitch | codepen | mastodon
2025-04-07 13:49:25
Hey friends!
I'm so excited to be in your inbox today! It is this newsletter's EIGHTH year anniversary!! I'm so grateful for all of you here. Let's keep it going (also there are free things and coupons below, keep scrolling)!
Was this forwarded to you? You can subscribe here!
The Death of the Browser - Rachel-Lee Nabors (video)
Minimal CSS-only blurry image placeholders
Exploring Art with TypeScript, Jupyter, Polars, and Observable Plot
Automatically create social card images for your Astro blog
I don't know what MCP is and at this point I'm too afraid to ask
Gosh, it's so unfathomable to me that it's been 8 years since starting this newsletter, and I am so grateful to you for being here and reading along with me each week. It's a genuine pleasure to know that it's giving you some value in some way, even if it's just a light occasional chuckle.
For those who've been here before, you may know that I love doing raffle giveaways and coupons every year! We have some lovely folks offering free things for ya!
freakingnerds
!CASSIDOO
at checkout! Take your CSS skills to the next level.CASSIDOO15
!CASSIDOO20
for 20% off your first year of blogging with Pika!If you'd like to enter in the raffle for all the great prizes here (huge thanks to all the folks who are offering them!), please fill out this form by Thursday at noon, U.S. Central Time to get an entry!
And just once again: Thank you so much for being here. It makes my day to see replies and messages and posts and toots and skeets and carrier pigeons from people that enjoy reading this, and seeing you share it with others.
Also as a quick (mic drop ICYMI?) side note: I'm super pregnant, and due this month! If you see some repeated interview questions or links over the next few weeks... that's why. Woo hoo!
Some APIs just hit different—clean docs, solid DX, and they actually listen.
Vote for your faves in the Postman Developers’ Choice Award now through April 17.
Just hit the vote icon on their Postman API Network workspace—you can even track a live leaderboard on the API Network homepage.
Winners drop at POST/CON 25.
Let’s give props to the APIs that make our lives easier.
👉 Cast your vote
P.S. Want to go to POST/CON and celebrate with the winners?
Here’s a special 40% off discount code just for you — expires April 17, so don’t wait!
👉 Register now with code PMN40CAM1
Last week, I had you find gaps in timestamps! Tick tock, you rock John, Taylor, Andy, Ben, Mike, Mazen, Nick, David, Muhammad, Roodz, Andrea, Ten, Huyixi, Elke, Austin, Miguel, Ben, Neha, Murtala, Levi, Saleh, Saravana, and Ross!
This week's question:
Write a function that returns the first n
Leyland numbers in ascending order. A Leyland number is defined as x^y + y^x
for integers x > 1
and y > 1
.
Examples:
getLeylandNumbers(1)
[8]
getLeylandNumbers(5)
[8, 17, 32, 54, 57]
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
What If We Made Advertising Illegal?
Stoop Coffee: How a Simple Idea Transformed My Neighborhood
Medieval Tavern in Blender - 3D Modeling Process (video)
Keykobo Soju on the Mode Encore
My laziness is like the number 8.
Once it lies down, it becomes infinite.
That's all for now, folks! Have a great week. Be safe, make good choices, and thank you for being here!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | twitter | patreon | twitch | codepen | mastodon
2025-03-31 15:04:50
Hey friends!
It's the last issue of March AND next week is the 8th anniversary issue! How about that? Make sure you're ready for some goodies that I can rustle up for ya. Until then, time to read!
Was this forwarded to you? You can subscribe here!
Meet Declarative Web Push
UI Algorithms: A Tiny Undo Stack
You should know this before choosing Next.js
Hot sauce if you're wrong · web dev trivia for staff engineers (video)
This week was a slower one for me, so much so that this section of the newsletter took the longest for me to write, heh. Did a whole lot of staring off into space.
I did some reflecting on my blog about how I'm trying to be more efficient and say no to more things, while also finishing as much as I can before baby #2 comes. It's a tough balance! But, I think it's good to have this... forcing function (for lack of a better phrase) to slow down and reset a bit. While also keeping humans alive. No pressure.
Parents have been asking, “Where can my kid access engaging, educational content without running into ads or random, nasty surprises?”
That's why we created Lingokids.
Lingokids is the fun, safe, educational app that parents trust and kids love. It's packed with thousands of hours of shows, songs, interactive games and more, all created by educators so your kid can play and learn on their own.
5 reasons the Lingokids app is guilt-free:
Oh, and did we mention it’s free?
Last week, I had you find streaks in an array! Great job Debopam, Tom, Marco, Ten, Miguel, Amine, Jeremias, John, Saleh, Max, Chase, Mazen, Andrea, Tim, Muhammad, Sreetam, Jesper, Leo, Kyle, Levi, Joe, Neha, Elke, Sean, Murtala, Jan-Magnus!
This week's question:
Write a function that takes an array of timestamps (HH:MM
) from the same day and returns the longest gap in minutes between consecutive timestamps.
Examples:
findLongestTimeGap(['12:00'])
0
findLongestTimeGap(['09:00', '11:00'])
120
findLongestTimeGap(['14:00', '09:00', '15:00', '10:30'])
210
findLongestTimeGap(['08:00', '10:00', '10:00', '14:00'])
240
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
I Am Obsessed With this Tomb Raider Pen
Twilight Memeboard
E. Svetlanov's "Prelude 10" played by V. Aretinskaya & S. Gudelev (video)
You Can Still Read NASA’s Deleted "First Woman" Graphic Novels
What has ears but can't hear?
A field of corn!
That's all for now, folks! Have a great week. Be safe, make good choices, and scroll less!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | twitter | patreon | twitch | codepen | mastodon
2025-03-24 13:13:25
Hey friends!
I hope your week was a good one! Mine was productive and I did not sleep enough, but I had some good meals, so those make up for it... right? Onwards!
Was this forwarded to you? You can subscribe here!
Grid First, Flex Third
A Deep Dive into the Inline Background Overlap Problem
Self Gap
Open Source Friday with Astro Docs (video)
I had a productive week! At work, I shipped a short Markdown checklists tutorial as well as an episode of The Download, and a short video about how GitHub Copilot works!
Outside of work, I wrote about making an HTML dialog on image click (which I made for my blog), and dabbled with some Clash of Clans-style buttons on CodePen! I'm trying to make more time in the day to do more fun, small projects, and it's slowly but surely working.
Sometimes for a major project, you’ve got to bring in the experts. Amazon Q Developer is built to handle your most ambitious efforts, so that you can go on being your visionary self. It’s an AI code assistant that writes, tests and reviews code fast, freeing you to focus on world domination or whatever it is you’re working on these days.
Amazon Q Developer will:
/dev
agent to put in new features, document code or refactor your projects. Cute!Last week, I had you score a cribbage hand! This one was sneakily challenging. Good job pushing through Jesper, Ten, A.D., Neha, and Levi!
This week's question:
Write a function that finds the longest streak of consecutive true
values in a boolean array that meets or exceeds a given streak goal. Return 0 if no such streak exists.
Examples:
findLongestStreak([true, true, false, true, true, true], 3)
3
findLongestStreak([true, true, true, false, true], 4)
0
findLongestStreak([true, true, true, true], 2)
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)
Lazydesigners Duo with SW Foundation keycaps
Pushing side projects forward with almost no free time
Buy the Overpriced Tourist Photos
Research project Ambsheets: Spreadsheets for exploring scenarios
Did you hear about the cow with weird hearing organs?
Sound goes in one ear, and out the udder!
That's all for now, folks! Have a great week. Be safe, make good choices, and hone your craft!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | twitter | patreon | twitch | codepen | mastodon
2025-03-17 13:38:33
Hey friends!
I hope you had a good week! It was a fun Pi Day and river dyeing weekend over here in Chicago.
Let's learn!
Was this forwarded to you? You can subscribe here!
Let the stagger experiments begin
The URL is a great place to store state in React
Make a ski game with LittleJS
Learn Zod So You Can Trust Your Data and Your Types
This was a long week for me, y'all. I had a ton to do at work (got some videos and blogs publishing soon, keep an eye out on GitHub's channels!) and I admit I was fighting off "pregnancy brain" with a lot of ups and downs. I'm at that point where I'm nervous about having a second kiddo, but also VERY ready to not be pregnant anymore. I wrote about that in more detail, and also about how I think we should be introducing more friction into our lives, rather than trying to smooth out everything forever.
Sometimes for a major project, you’ve got to bring in the experts. Amazon Q Developer is built to handle your most ambitious efforts, so that you can go on being your visionary self. It’s an AI code assistant that writes, tests and reviews code fast, freeing you to focus on world domination or whatever it is you’re working on these days.
Amazon Q Developer will:
/dev
agent to put in new features, document code or refactor your projects. Cute!Last week, I had you get piano key intervals! Awesome job Jesper, Ten, Muhammad, Neha, Ian, Murtala, and Ricardo!
This week's question:
Write a function scoreHand(cards)
that calculates the total score of a Cribbage hand. The input is an array of 5 card strings (including the starter card), where each card is represented as rank+suit (e.g., "AH", "10D", "KS"). Here are the scoring rules:
Example:
> scoreHand(["7H", "8C", "9D", "JH", "KS"])
> 5
> scoreHand(["AH", "2C", "3D", "4S", "5H"])
> 7
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
“Wait, not like that”: Free and open access in the age of generative AI
Protagonist 60 Copper-PC with GMK Dandy Green keycaps
The teacher lies sometimes
A New Sudoku Layout With 81 Uniquely Shaped Cells
What do you call a gorilla wearing headphones?
Anything you'd like, it can't hear you.
That's all for now, folks! Have a great week. Be safe, make good choices, and think about new perspectives!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | twitter | patreon | twitch | codepen | mastodon
2025-03-10 17:59:17
Hola hola!
I hope you had a wonderful week! I had a good one seeing friends and family, which is always refreshing. Let's boogie!
Was this forwarded to you? You can subscribe here!
Styling the HTML details and summary elements
Node just added TypeScript support. What does that mean for Deno?
Tips on extensible and maintainable components
Why we ditched Next.js and never looked back
I gotta say, Daylight Savings Time in the US this weekend fully messed up my brain, especially with a toddler in tow. Whew, whew!
But besides that (literal) rude awakening, it was a good and busy week. I worked a bunch on side projects (which I'm hoping I can share with you/release relatively soon), and played in a whole lot of forts at home with our new Nugget couch (not an ad, but honestly it's been so great with the family, I would totally advertise for them).
💻📲 Let’s go web to native with React
Expo is sponsoring this week, but I’m taking over the ad cause I’m actually building a mobile app with Expo right now, and I genuinely love it. (More on that soon.)
Expo is a React Native framework for building cross platform apps (Bluesky, for example, is built with Expo). Here’s why it’s clicking for me:
If you’ve been thinking about building for mobile, try it with me: expo.dev
Last week, I had you determine prices based on store closing discounts! Ca-ching Ricardo, Jesper, Muhammad, Cat, Amine, Stephen, Sreetam, Tim, Neha, Shreya, Ten, Murtala, Saravana, Saleh, and Abhishek!
This week's question:
Write a function that takes a list of piano keys played in sequence and returns the largest interval (in semitones) between any two consecutive keys. Assume the lowest note is A0, and the highest is C8.
Examples:
> findLargestInterval(['A0', 'C1', 'G1', 'C2'])
> 7
> findLargestInterval(['C4', 'G4', 'C5', 'G3'])
> 17
> findLargestInterval(['E2', 'C3', 'G3', 'C8'])
> 53
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
Growth at all costs is destroying the internet
We broke the coast to coast record (video)
Revenge Font
Moeetech Glitter R2 with Ducky Boba Dye-Sub PBT
Never, ever shout into a colander.
You'll strain your voice!
That's all for now, folks! Have a great week. Be safe, make good choices, and be a weirdo with your weirdo friends!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | twitter | patreon | twitch | codepen | mastodon