I'm going to share with you what's new and cool in the world of web development, with content for everyone, from beginners to pros.
The RSS's url is : https://buttondown.email/cassidoo/rss
2024-11-18 14:43:05
Hey friends!
It feels like this month is going by both super quickly, and very slowly. I hope you're having a good one! Time to read.
Was this forwarded to you? You can subscribe here!
Overflow Clip
Center the bottom row when using grid auto-fit (video)
Adding Bluesky Comments to Your Astro Blog
How a BBC navigation bar component broke depending on which external monitor it was on
This week I'll be speaking at Microsoft Ignite (which you can watch for free online!) and I'm excited to meet some more coworkers in person and show them the joys of Chicago food!
Besides that... I mentioned it before, but I have really been having fun with Bluesky as a social network. It's been really lovely having a simple feed of just people that I follow, and other lists of feeds I can follow (for example, the Good Lunch feed), and not have the algorithm decide how I browse (which makes me want to update my human curation blog post I wrote a little while back). Outside of the network itself, I recommend reading about the AT Protocol, which is how Bluesky works under the hood. It's really interesting!
Last thing, I streamed Open Source Friday with Rizel Scarlett this past week! Check it out!
Working with auth shouldn’t feel like coding with 🧤oven mitts. You really need to try Stytch.
They’re Auth0 on steroids. Beyond hosted widgets, Stytch gives you full control with options for pre-built UI, headless SDKs and comprehensive backend SDKs and APIs for authentication and authorization. Plus, it comes with the latest in fraud and risk prevention—without relying on CAPTCHA and simple network-based protections.
Stytch also supports dedicated data models for consumer and multi-tenant B2B applications, so you aren’t forced to code around the “black box” of Universal Login. All the acronyms — MFA, SSO, RBAC, SCIM – are just an API call away.
Try it free and see why Mintlify, Groq, Hex, Orb, Zapier, and Replit have switched to Stytch.
Last week, I had you look at visible buildings in a line! I loved seeing so many good answers! Great work Andreas, David, Ender, Mac, Muhammad, Miguel, Ashish, Kyle, Neil, Arban, David, Mudi, Danny, Jess, Sean, Ricardo, Amine, Jess, Sean, Ricardo, Amine, Prashant, Ten, Kriszti, and Daniel!
This week's question:
Given an array of integers representing the stock prices of a company in chronological order, write a function that determines the maximum profit you can achieve by buying and selling the stock once. If no profit can be made, return 0.
Example:
> maxTheStock([7, 1, 5, 3, 6, 4])
> 5 // (buy at 1, sell at 6)
> maxTheStock([7, 6, 4, 3, 1])
> 0 // (no profit possible)
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
This question is brought to you by PixelPalooza! PixelPalooza is a completely free virtual conference all about using media on the web – things like images, video, audio, streaming. It's happening this coming Thursday from 12-4pm ET (UTC -5). Grab your free ticket here.
Cabel Sasser, Panic - XOXO Festival (2024) (video)
Balance is boring (video)
IMG_0416
Wind Studio Hola Mini with lubed Cherry MX Clears
Why did the coffee file a police report?
It got mugged!
That's all for now, folks! Have a great week. Be safe, make good choices, and read something!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | twitter | patreon | twitch | codepen | mastodon
2024-11-11 14:23:15
Howdy y'all,
I hope you're staying safe and healthy with folks you care about this season. This was a really intense week for a lot of people, including myself, and it's times like these where I'm grateful for the little things that make us happy. Let's learn!
Was this forwarded to you? You can subscribe here!
Generating Random Mazes with JavaScript
JavaScript's ??=
Operator: Default Values Made Simple
Debugging Microservices & Distributed Systems
A Friendly Introduction to Container Queries
Sooo, elephant in the room, the U.S. Presidential election happened this week. The results were not what I wanted, and I don't really want to talk about how sad I am about it. I hope that if the results are also not what you wanted either, you're doing okay. "Okay" is such a... flimsy word to use, and it's really hard to come up with another one. But I genuinely, really hope that you are doing okay, and have a community that you can lean on for support, and you can be that support for others.
...besides that, I've now been at GitHub for two months, I reflected on falling asleep in a driverless car, I've been really enjoying Bluesky as a social network, and I've been cuddling my 18-month-old who has recently learned how to count to five in English, Spanish, and Korean, which is very exciting.
Curious about which authorization model is best for your app? The answer is probably "all of them."
Join our webinar, How Google Handles Authorization at Scale, for a deep dive into Google Zanzibar, and why its Relationship-based approach to authorization has become so popular. Plus, a technical comparison of Google's approach with Oso's Authorization as a Service, highlighting the similarities and key differences. Walk away with the tools you need to make an informed decision about which approach meets your app's permissions needs!
Last week, I had you group anagrams! This one was really fun. Awesome work Alisa, Andreas, Muhammad, Yacine, Ten, Leyan, Mac, Yacine, Anton, Kyle, Miguel, Andrew, Ashish, Alison, Jeremias, Ricardo, Charles, Amine, Chase, John, and Jess!
This week's question:
Given a list of integers representing the heights of buildings, return the maximum number of buildings that can be seen when looking from the left. A building can see another building if it is taller than all the buildings to its left. The height of the tallest building is included in the count.
Examples:
seeBuildingsLeft([1,2,3,4,5])
5
seeBuildingsLeft([5,4,3,2,1])
1
seeBuildingsLeft([3,7,8,3,6,1])
3
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
1 Dataset. 100 Visualizations.
Massive ocean discovered beneath the Earth's crust containing more water than on the surface
Tiili-46 hand-built keyboard
Wikimedia Pictures of the Year
I tried taking some high resolution photos of local farmland, but they all turned out a bit grainy!
That's all for now, folks! Have a great week. Be safe, make good choices, and support your local news!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | twitter | patreon | twitch | codepen | mastodon
2024-11-04 22:46:33
Hey friends!
Happy November! I hope you had a fun Halloween or Diwali if you celebrated either of them, and you're ready for Mariah Carey season to enter your ears. Onwards!
Was this forwarded to you? You can subscribe here!
Making content-aware components using CSS :has(), grid, and quantity queries
How on Earth does ^.?$|^(..+?)\1+$
produce primes? (video)
Tooltip Best Practices
Building My Resume in HTML using Eleventy
I was at GitHub Universe this week! It was WILDLY busy (I was in the keynote and helped host the livestream), and so fun. My team was involved in pretty much every part of it, from the videos to the streams to the tech demos to the scheduling to the booths to the onsite podcasts to the hackable badges... phew, it was such a production! We're all really tired, but proud of what we were able to accomplish. There were some great talks, you should check them out!
Level Up Your Dev Environment with Zero-Trust Access 🚀
Ever wished you could ditch the VPN hassle while keeping your services secure? Twingate's zero-trust access solution is changing how we handle secure connectivity in modern dev environments.
Why it’s worth your time:
What I love most? The seamless integration with existing workflows. Whether you're managing a complex microservices architecture or need secure remote access to dev environments, it just works™.
Check out how it fits into your stack →
Last week, I had you implement a round of Yahtzee! It was fun learning how many folks had never played the game before. It's a good one! These folks are also good ones, with good answers: Muhammad, Max, Ricardo, and Ten!
This week's question:
Given an array of strings, group the anagrams together.
Example:
groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"])
[["eat","tea","ate"],["tan","nat"],["bat"]]
groupAnagrams(["vote", "please"])
[["vote"],["please"]]
groupAnagrams(["debitcard", "badcredit"])
[["debitcard", "badcredit"]]
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Bluesky, Twitter, or Mastodon)
This question is brought to you by Writer!
Tired of battling AI complexity? Writer has got just the thing for you.
Introducing Palmyra X 004 by Writer! It’s the AI model with function calling and built-in RAG, making it easier than ever to build powerful apps with just a few lines of code.
With Writer’s full-stack AI platform, you’ll get:
Whether it’s automating workflows or building custom apps fast, Palmyra X 004 has your back.
🚀 Ready to level up your AI game? Start building on Writer AI Studio now!
Womier SK65 (video)
Touchscreens Are Out, and Tactile Controls Are Back
Turing Machine - Working LEGO Computer
How Vinyl Records Are Made (video)
Why can't your nose be 12 inches long?
Because then it'd be a foot!
That's all for now, folks! Have a great week. Be safe, make good choices, and eat a proper meal!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | twitter | patreon | twitch | codepen | mastodon
2024-10-28 14:46:45
Hello from San Francisco!
I'm in town prepping for GitHub Universe, which has been SO busy, but also fun to meet coworkers in person!
Onwards!
Was this forwarded to you? You can subscribe here!
Where web components shine
What docs as code really means
Smarter than 'Ctrl+F': Linking Directly to Web Page Content
Angular's Approach to Partial Hydration
Y'all, getting ready for GitHub Universe has been wildly busy and chaotic, but there's some really cool stuff coming that I can't wait for you to see! You can watch the event for free online if you register. I'll be in the opening keynote if you wanna watch me try out a live demo in front of thousands of people... wish me luck!
Also, I've been much more into Bluesky this week than Twitter. It feels like the tides are turning. Give me a shout there if you have an account!
The sponsor this week has an exciting new AI product launching on Halloween, and... I can't tell you anything more about it. But I'll be tweeting then, so keep an eye out! 👀 🎃
Last week, I had you parse an RSS feed! Y'all did an awesome job with some clever solutions, great work Ashish, Ten, Amine, Muhammad, Kostas, John, Cheyenne, and Ricardo
This week's question:
Implement a round of the game Yahtzee, where 5 dice are randomly rolled, and the function returns what options the user has to score more than 0 points. Extra credit: implement all 13 rounds!
Example:
yahtzeeRound()
> { dice: [2,2,3,3,3],
options: ["twos","threes","full house","three of a kind","chance"]
}
yahtzeeRound()
> { dice: [2,3,4,2,2],
options: ["twos","threes","fours","three of a kind","chance"]
}
yahtzeeRound()
> { dice: [4,3,6,3,5],
options: ["threes","fours","fives","sixes","small straight","chance"]
}
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
This question is brought to you by Writer! Introducing Palmyra X 400 by Writer! It’s the AI model with function calling and built-in RAG, making it easier than ever to build powerful apps with just a few lines of code.
With Writer’s full-stack AI platform, you’ll get:
Whether it’s automating workflows or building custom apps fast, Palmyra X 400 has your back.
🚀 Ready to level up your AI game? Start building on Writer AI Studio now!
We’re in the Golden Age of Garbage Clothing
Can we space elevator? (video)
Math Is Still Catching Up to the Mysterious Genius of Srinivasa Ramanujan
Madeline 30% with DSS All Hallows Eve
The rotation of earth really makes my day!
That's all for now, folks! Have a great week. Be safe, make good choices, and take a long nap!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-10-21 16:16:39
Hey friends!
I'm back in the USA, woo! Jet lag is... bad, BUT I'm very happy to be back in my own bed and getting cozy for Fall.
Was this forwarded to you? You can subscribe here!
CSS Music Video
How the heck does it work? Phoenix LiveView
Drag to Select
CSS min() All The Things
USA USA USA! I'm so glad to be home from my two week stint in Singapore and Korea. It's been a fairly rough whirlwind being back at work prepping for GitHub Universe while also being jet lagged (especially with a toddler, gosh), but it's really nice to be in the comfort of my own home, able to do my own laundry and chores, and see friends I hadn't seen in a while.
Unrelated, I have been listening to the new ROSÉ + Bruno Mars song APT. non-stop, if you want something stuck in your head! "Ah-pah-teu" (or APT) is Korean slang for "apartment" and it's also a drinking game, which might help you understand some of the lyrics. DANCE WITH ME!
Tired of battling AI complexity? Writer has got just the thing for you.
Introducing Palmyra X-4 by Writer! It’s the AI model with function calling and structured outputs, making it easier than ever to build powerful apps with just a few lines of code.
With Writer’s full-stack AI platform, you’ll get:
Whether it’s automating workflows or building custom apps fast, Palmyra X-4 has your back.
🚀 Ready to level up your AI game? Start building on Writer AI Studio now!
Last week, I had you generate SVG circles! It was fun seeing messages from some of you having not used SVGs before. Great job Mike, Kostas, Austin, Ten, Alison, John, Josh, Muhammad, and Ricardo!
This week's question:
Write a function that takes in an RSS feed URL, and returns the title of and link to the the original feed source. You can get other things too, if you'd like!
Example:
getRSS('https://cassidoo.co/rss.xml')
"Cassidy Williams, https://cassidoo.co/"
getRSS("https://feed.syntax.fm/")
"Syntax - Tasty Web Development Treats, https://syntax.fm"
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Webb Images/Science 2024 by James Webb Space Telescope
Chess or Go? Exploring the Most Complex Board Games (video)
KBDFans Tofu with EnjoyPBT Sushi keycaps
'How I bootstrapped The StoryGraph to nearly 3M users' with Nadia Odunayo (video)
Why was the T-Rex limping after its workout?
Because it was dino-sore!
That's all for now, folks! Have a great week. Be safe, make good choices, and do something that makes you feel nostalgic!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-10-14 08:59:03
Hello from Korea!!
I've been on quite the trip with family and it's been great, but I'm excited to head home. Until then, let's gooo!
Onwards!
Was this forwarded to you? You can subscribe here!
Best Headless CMS: Should You Choose SaaS or Open Source?
The Static Site Paradox
The Disappearance of an Internet Domain
Build A Static RSS Reader To Fight Your Inner FOMO
I have been on the most busy trip this week, visiting my in-laws on a farm in the mountains in South Korea (with incredibly limited Wi-Fi, which has been a blessing and a curse), and introducing them to my toddler and my parents! We're in Seoul now, and whew, it's been a blast... and also one of the more exhausting trips I've ever been on! Packing in family dynamics, tourism, various modes of transportation, a language barrier, and so much food, all while managing a baby, is a lot, but I'll certainly never forget this week!
Enterprise Ready Conf is bringing together product and engineering leaders shaping the future of enterprise SaaS.
It's October 30th in San Francisco! It's got a fantastic speaker lineup that will help you:
Request your invite today to attend!
Last week, I had you find the missing ingredients in recipes! Great work Mike, Kyle, Kostas, Alison, Ricardo, Muhammad, Connor, Amine, Schalk, Nick, Jeremias, Josh, nichoth, Ten, and Ashish!
This week's question:
Write a function that generates a valid SVG string for a circle given its radius, center position, and color.
Examples:
generateCircle(radius = 50, center = (100, 100), color = "blue")
"<svg width='200' height='200'><circle cx='100' cy='100' r='50' fill='blue'/>svg>"
generateCircle(radius = 30, center = (75, 50), color = "red")
"<svg width='150' height='100'><circle cx='75' cy='50' r='30' fill='red'/>svg>"
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Even a Single Bacterial Cell Can Sense the Seasons Changing
TKD PT. 1/75 with KKB Violet Alert
2024 Comedy Wildlife Photography Award Finalists
Forwards, not back
If Americans smile... do other countries skilometer?
That's all for now, folks! Have a great week. Be safe, make good choices, and hug your family!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-10-08 00:30:50
Wassaaap!
Hello from Singapore! I was here for the first time this week for a family wedding and it's been awesome. Anyway, the internet awaits!
Was this forwarded to you? You can subscribe here!
Action Web Components Which Span the Server-Client Divide
Terminal colours are tricky
ESLint now officially supports linting of JSON and Markdown
Bundling Past, Present, and Future (video)
It's been really cool being in Singapore for the first time this week! I tried out hawker markets (I really loved chili crab and the chicken and rice), exploring various malls to navigate the city via air conditioning, and saw amazing views. It's been a fast trip (I'm writing this from the airport), but really wonderful.
Outside of traveling, I wrote about the future of my game, Jumblie!
Also: a lot of you got my newsletter in spam last week! Sorry about that, I'm not sure what happened. To prevent that in the future, add this email to your contacts with your email provider!
MongoDB 8.0 launched this week, and it's better, faster, more secure, and more durable than ever!
It's got:
MongoDB is a document database, and MongoDB 8.0 meets the needs of modern apps that have things like unstructured data and AI components. AI is integrated through vector search, with a fully managed platform.
Last week, I had you write your own split()
function. Great job David, Amine, Claude, Ashish, Chase, Ricardo, John, Kyle, and Ten!
This week's question:
Given a list of ingredients needed for a recipe, represented as strings, and a list of ingredients you have in your pantry, write a function to return the minimum number of additional ingredients you need to buy to make the recipe. If you want to do some extra credit, add expiration dates to the pantry items, and only account for food that isn't expired.
Example:
Input:
recipe = ["eggs", "flour", "sugar", "butter"]
pantry = ["sugar", "butter", "milk"]
Output:
2
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Locus with GMK CYL ZX
Is the World Really Running Out of Sand?
NASA: Capillary Cup
The more sophisticated AI models get, the more likely they are to lie
Why was Pavlov's beard so soft?
Because he conditioned it!
That's all for now, folks! Have a great week. Be safe, make good choices, and travel when you can!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-09-30 13:52:27
Hello!
September is ending, time to wake up and get ready for spooky season! Let's learn.
Was this forwarded to you? You can subscribe here!
A guide to destructuring in JavaScript
CSS Masonry Layouts (video)
Improving rendering performance with CSS content-visibility
What I tell people new to on-call
This week, I was on the Open Source Friday stream with one of my new teammates, Kedasha! It was really fun to explain how prompt engineering works, how we used it at my previous startup, and how I built a tool with it for GitHub Copilot.
Outside of the stream, I admit I'm still floating around in sleep regression land over here with my baby. We had one glorious day where she+we slept through the night, but it's still been rough. Hopefully she gets through it soon!
Auth0 has launched new, developer-friendly, free pricing tiers with built-in security against AI bot attacks.
With these new free options, it’s easier than ever for developers to defend against increasingly sophisticated attacks on their customers' identities, and build the next generation of applications securely and reliably. The free plan now includes:
25,000 MAUs so you can scale.
Unlimited Okta and social connections so users can easily access your app.
A custom domain so you can fully brand your authentication.
Sign up and build more for free, today!
Last week, I had you manage laundry loads. Y'all are so clean! Awesome job Nate, Leyan, Ashish, Tianon, Claude, Ten, Kostas, Alison, John, Daniela, Lucien, Jeremias, Ricardo, Amine, and Muhammad!
This week's question:
Implement your own String split()
function in your preferred programming language.
Example usage:
const str = 'This is so, so silly!';
> str.split(' ');
> ["This", "is", "so,", "so", "silly!"]
> str.split('');
> ["T", "h", "i", "s", " ", "i", "s", " ", "s", "o", ",", " ", "s", "o", " ", "s", "i", "l", "l", "y", "!"]
> str.split(',');
> ["This is so", " so silly!"]
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Year in Progress
I am tired of AI
'World-first' indoor vertical farm to produce 4M pounds of berries a year
Mode Tempo keyboard with GMK CYL Modern Materials
I've started telling everyone about the benefits of eating dried grapes.
It's all about raisin awareness!
That's all for now, folks! Have a great week. Be safe, make good choices, and make art!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-09-23 12:22:24
Hey friends!
I don't know about you and your area of the world, but I am very excited for sweata weatha season to be upon us here in Chicago. I hope your week was a good one, let's boogie!
Was this forwarded to you? You can subscribe here!
First look at Astro 5 beta (video)
GitHub trick to find the commit that deleted a file
The “Other” C in CSS (video)
The continuing tragedy of emoji on the web
This week I admit was kind of rough for me because my 17-month-old has been going through a sleep regression and that means... I don't get to sleep well. But, we're hanging in there!
That being said, at work GitHub released in public beta Copilot Extensions and it's been SUPER cool to play with them. I admit building them is a little confusing since they're pretty new and they don't have a lot of examples yet (I wrote a blog about how to build one that should be published Soon™, and these repos are very helpful). I made a voice-powered code extension in less than an hour that was so fun to play with, I literally squealed watching it work. I know I sound like such a shill for my new workplace, but I love working on something that feels like it's changing the game!
Content is one of the most critical parts of the web. CodeWord Conf is a free virtual conference all about the combination of code and content. Things like:
It features amazing speakers from companies like Microsoft, Cloudflare, Netlify, LaunchDarkly, Contentful, Storyblok, Strapi and more. It's happening this Thursday, September 26th from 11am-5pm ET.
Get full details and register at CodeWordConf.com.
Last week, I had you find ways to score in American football! Many Europeans shouted at me and I simply saluted the eagle flying past my window screeching "freedom." Anyway, awesome work Claude, Kyle, Ashish, Max, Ten, Alison, Amine, Ricardo, Varenya, and Muhammad!
This week's question:
You're designing a smart laundry sorting system. You have a list of clothing items, each with a color and a fabric type. Sort these items into the minimum number of loads n
and return n
, where items of the same color can be washed together, and some different fabric types cannot be mixed together. "Normal" fabric types can be mixed with "heavy", but "delicate" cannot be mixed with anything.
Example:
let load1 = [
["red", "normal"],
["blue", "normal"],
["red", "delicate"],
["blue", "heavy"]
]
let load2 = [
["white", "normal"],
["white", "delicate"],
["white", "normal"],
["white", "heavy"]
]
> minLaundryLoads(load1)
> 3 // one delicate red, one normal red, and one with the blues
> minLaundryLoads(load2)
> 2 // one delicate white, one with everything else
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Apple Rankings
Stop learning to give feedback. Learn to receive it.
JJW Derivative with GMK CYL Olivia Nº3
How to do mental time travel
What happens to an illegally parked frog?
It gets toad away!
That's all for now, folks! Have a great week. Be safe, make good choices, and eat something that makes you happy!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-09-16 10:57:07
Hey friends!
I hope you had a good week! I started my new job at GitHub, which made for a very chaotic week of onboarding, but it's been really cool so far!
Was this forwarded to you? You can subscribe here!
We use too many modals
Your company needs Junior devs
Replacing React code with CSS :has selector
CSS Features in last 5 years
This week was my first week working at GitHub! Y'all, it was a WHIRLWIND. My schedule was packed with hours of meetings and onboarding each day, meeting a ton of people and slowly (but surely!) learning the ropes (plus I fixed a typo on the website on Day 1, an engineer's dream!).
I'm specifically working on the developer advocacy team, focusing on community and open source! It's chaotic figuring out all the people I have to meet and the things we want to ship and support, BUT I love that I can focus on the non-enterprise side of things and just make things better for open source developers. What all that means specifically... we'll find out!
Also, my AMA I did with DiscoLink came out, if you wanna see it!
Agent.ai is the go-to marketplace and network for AI enthusiasts and experts. Hire AI agents to automate tedious tasks, gain deep insights, and drive better results. You can find agents (and soon build your own) that do all sorts of things, from competitive research to meme generation.
I've already tried out "Search Keyword Research, Web Page Copy Editor, and Ideogram Image Generator". So far "Search Keyword Research" is my favorite but I'm most excited to start building my own when the team releases the WYSIWYG editor 🔜!
Last week, I had you determine the rows people would take up in a theater. This one snuck up on you! A few folks said it was really fun to solve and I'm glad. Great job Nathael, Andy, Amine, Muhammad, Ricardo, Tawseef, Ten, Kyle, Sujeet, Kriszti, Jeremias, and David!
This week's question:
You are given an integer n
representing the total points a team wants to score in an American football game. You need to determine the number of unique ways the team can achieve exactly n
points using any combination of touchdowns (6 points), field goals (3 points), or safeties (2 points).
Example:
> waysToScore(5)
> 1
> waysToScore(12)
> 6
> waysToScore(6)
> 3
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
life in haiku
Zoom 75 with GMK Dualshot 2 keycaps
This life-size Lego McLaren P1 can hit almost 40mph
Casio Wrist Camera photos
What kind of key opens a banana?
A mon-key!
That's all for now, folks! Have a great week. Be safe, make good choices, and stretch your back!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-09-09 12:02:01
Hola hola!
I hope your week was a good one! Mine was a bit stressful, but I'm excited to officially start my new job at GitHub this week! Let's boogie.
Was this forwarded to you? You can subscribe here!
Scroll-Enhanced Experiences
Redwood v8.0.0
Dungeons & Dragons taught me how to write alt text
How to quickly (and weightlessly) convert Chrome extensions to Safari
This week went by quickly! I think because it was my last week pre-full time job, it felt like I was just scrambling to finish some last-minute things. That being said, there's a few things I forgot to share last week, and more to share this week!
Anyway, I'm excited to get into the weeds at GitHub and I'll be sure to share what it's like next week!
This issue is sponsored by Scalar: The modern open-source developer experience platform for your APIs. ✨
Create world-class API Docs with a built-in interactive playground, which seamlessly turns to a full featured API Client.
Integrate with React, Vue, Fastify, Next.js, Docusaurus, and more, alongside thousands of awesome developers and companies.
Wanna get started? Try out the Swagger editor, the API client, or smash that Star button on GitHub!
Last week, I had you pair shoes together! This one had some fun answers, awesome work Amine, Charles, John, Leyan, Nathael, Tawseef, Mazen, David, Sujeet, Alison, Kriszti, Ricardo, Kyle, Ten, and Daniel!
This week's question:
You are given an array of people represented by integers, where each number corresponds to the number of people in a group. Determine the minimum number of rows required to seat everyone such that no group is split across different rows. You can assume no group will be larger than a given row size!
Example:
let rowSize = 10
> minRows([4, 8, 3, 5, 6], rowSize)
> 3
> minRows([4, 5, 4, 3, 3], rowSize)
> 2
> minRows([7, 7, 8, 9, 6], rowSize)
> 5
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Class 1800 with KKB Machinist
Web Design Museum: Unlock your Digital Memories
What happens when you touch a Pickle to an AM radio tower?
Ocean Photographers of the Year Winners Gallery
Did you hear about the archeologist who got fired?
Their life was in ruins!
That's all for now, folks! Have a great week. Be safe, make good choices, and eat a meal that makes you happy!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-09-02 13:30:05
Hey friends!
It's a new month! Time to sleep, you can wake me up when September ends.
Was this forwarded to you? You can subscribe here!
Building a breakout element with container units
JS Dates Are About to Be Fixed
The secret inside One Million Checkboxes
Making a simple React microphone component
This was such a busy week for me!
Indie devs and small teams: You should probably be using Fly.io!
With Fly.io, you can do a LOT without a dedicated platform team. It's secure and has really, really cool features.
Fly.io has machines that let you scale up infinitely (and cost-effectively), scale to zero, and can do responsive job queues and Step Functions-style orchestration!
It also has replay, which is awesome for testing patterns and replaying requests!
Here’s $50 in Fly.io credits. Start shipping today!
Last week, I had you find substrings! There was actually a typo in the example and I fixed it in the archive. Some of y'all have eagle eyes and the typo didn't faze you, awesome job Tawseef, Ricardo, Adrianna, Muhammad, John, Cheyenne, and Ten!
This week's question:
You are given an array of strings representing a collection of shoes. Each shoe is labeled with its type ("L" for left or "R" for right) and its size. Determine the maximum number of matching pairs of shoes that can be formed.
Example:
> maxPairs(["L-10", "R-10", "L-11", "R-10", "L-10", "R-11"])
> 3
> maxPairs(["L-10", "L-11", "L-12", "L-13"])
> 0
> maxPairs(["L-8", "L-8", "L-8", "R-8"])
> 1
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
This question is brought to you by Nike! Step up your game with Nike's special sale – epic deals await! Snag up to an extra 20% off on select styles for athletes of all ages. Whether you're getting outside, working from home, or headed back to school, do it with Nike! Don't miss your chance to dress like a pro without breaking the bank. Fresh kicks, performance gear, and cool apparel for the whole family.
Ultra high-resolution image of The Night Watch
Screen apnea: What happens to our breath when we type, tap, scroll
How Our Longest Nerve Orchestrates the Mind-Body Connection
Waves 60 Keyboard
What is a witch's favorite subject in school?
Spelling!
That's all for now, folks! Have a great week. Be safe, make good choices, and rest your eyes!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-08-26 14:24:56
Howdy y'all!
I hope you had a good week! Mine was awesome: I got a job! I'll tell you more about it below!
Was this forwarded to you? You can subscribe here!
ASMR Programming - Weather App With JavaScript - No Talking (video)
How to make your web page faster before it even loads
Why JavaScript variables don't always update
I got a job!! I am joining the Developer Advocacy team at GitHub as a Senior Director! I'm really, really excited about it. I've written about what I was looking for in a job in the past, and I'm happy to check off a lot of my boxes with this one! I'll be focusing on the open source + community side of the company (not the enterprise side) and I can't wait to help people build more, better, out in the open. I wanted to be a part of something that would help others get to the next level in their work, and this role is just what I was hoping for. I'll be sure to write more about it as soon as I get acquainted more with the team and the role!
Also, this week, I'll be teaching a productivity workshop, if you'd like to join in on Tuesday! Use that work education budget! If you can't make it live, attendees will get recordings.
And finally, don't forget to play Jumblie!
As DevOps teams adopt continuous deployment models, ensuring that software updates roll out smoothly as well as deliver new value to end users is crucial. Progressive deployment strategies provide a framework that helps ensure overall release stability and mitigates the risks often associated with large-scale deployments. In this Amazon Web Services (AWS) webinar, AWS and DevOps Institute review some of the most efficient strategies for AWS environments with popular development lifecycle management tools from LaunchDarkly and CircleCI. See how they work with Amazon Q and Amazon Bedrock to maintain progressive deployments that meet high quality and operational standards and learn how to apply modern left-shift principles and generative AI-driven solutions to enhance application quality and security.
Last week, I had you determine execution times for functions. I loved these answers!! Awesome work Lucie, Leyan, Tawseef, Ross, Matt, Monica, Ashish, Alison, Jonathan, Muhammad, Fortune, Amine, Prakash, Sujeet, Varenya, David, Mitchell, Ricardo, Chase, Jeremias, Ten, and Kriszti!
This week's question:
Given a string s
containing letters and digits, return the longest substring of s
where the number of distinct letters is equal to the number of distinct digits. If there are multiple substrings with the same length, return the one that appears first.
Example:
> equalLettersAndDigits("abc12345")
> "abc123"
> equalLettersAndDigits("a1")
> "a1"
> equalLettersAndDigits("a12bc34")
> "a12bc3"
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
You can only visit this website once
How I consistently create content and make side money with Scott Hanselman (video)
how fahrenheit fails you (video)
Why are fish easy to weigh?
Because they have their own scales!
That's all for now, folks! Have a great week. Be safe, make good choices, and give someone a hug!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-08-19 12:41:56
Hey friends!
Whew, what a week. I hope yours was a good one, let's boogie!
Was this forwarded to you? You can subscribe here!
You should make a new programming language
Reckoning: How JavaScript broke U.S. Public Services
How I won $2,750 using JavaScript, AI, and a can of WD-40
The Nonvisual Website
This week I took my first Korean language class! For those that don't know, my husband is Korean and I've been wanting to learn the language (...beyond watching k-dramas) so I can speak more with my in-laws and teach our baby!
What's cool about this class is that the Korean Consulate here in Chicago offers it (and other courses) for a very low price, both online and in-person! They do this around the world (a friend of mine is taking one of their courses in Budapest as we speak) and it's such a neat way to share culture and educate the masses.
So far I'm still a bit of a noobie, but between overhearing conversations with family, watching shows, and now this class, hopefully I'll be up-to-speed in no time! 화이팅!
As DevOps teams adopt continuous deployment models, ensuring that software updates roll out smoothly as well as deliver new value to end users is crucial. Progressive deployment strategies provide a framework that helps ensure overall release stability and mitigates the risks often associated with large-scale deployments.
In this Amazon Web Services (AWS) webinar, AWS and DevOps Institute review some of the most efficient strategies for AWS environments with popular development lifecycle management tools from LaunchDarkly and CircleCI. See how they work with Amazon Q and Amazon Bedrock to maintain progressive deployments that meet high quality and operational standards and learn how to apply modern left-shift principles and generative AI-driven solutions to enhance application quality and security.
Last week, I had you return a list of unused variables! Awesome work Usman, Muhammad, Ricardo, Amine, Vasanth, Ashish, Tawseef, Sujeet, Neil, Ten, and Kriszti!
This week's question:
Given an array of function logs, where each log consists of a function name, a timestamp, and an event (either start
or end
), return the total execution time for each function. The timestamp is an integer representing milliseconds since the start of the program.
Example:
> calculateExecutionTimes([
{ name: "main", time: 0, event: "start" },
{ name: "subTask1", time: 5, event: "start" },
{ name: "subTask1", time: 10, event: "end" },
{ name: "subTask2", time: 15, event: "start" },
{ name: "subTask2", time: 20, event: "end" },
{ name: "main", time: 25, event: "end" }
])
> { main: 25, subTask1: 5, subTask2: 5 }
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Nintendo completely sat out the video game graphics wars. It’s winning anyway.
X-Ray Bauer Lite with PBTFans X-Ray
When Is “Recyclable” Not Really Recyclable? When the Plastics Industry Gets to Define What the Word Means.
What Adults Lost When Kids Stopped Playing in the Street
A Möbius strip is sobbing, and its friend asks, "what's wrong?"
It says, "where do I even begin??"
That's all for now, folks! Have a great week. Be safe, make good choices, and get your summer bucket list items crossed off!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-08-12 13:09:19
Hey friends!
I hope you had a good week! Mine was wildly busy and I'm excited to have some heads-down time this week on some projects. Let's go!
Was this forwarded to you? You can subscribe here!
Should Your Website Work Without JavaScript? (video)
Oops.js: Add powerful undo/redo capabilities to your app
3D Scene → Object → Chicken. Complete 3D CSS Guide (video)
Whirl
This week was a busy one!
Outside of this I went to a fun masterclass with BCM and recorded some podcasts that'll be live soon. Phew!
Enhance the developer experience on AWS
Internal developer platforms (IDPs) are a preferred method for managing complex DevOps tooling and infrastructure, but where to begin? This Amazon Web Services (AWS) webinar describes optimal IDP configurations for a more agile and productive development environment.
Last week, I had you return the sum of positive squares! Y'all had some OPTIMIZED and clever solutions! Awesome job Mike, Andy, Muhammad, Usman, Ashish, Amine, Joe, Mitchell, Josh, Sathyesh, Chase, Sean, Ricardo, Kriszti, Brenda, Caleb, John, Neil, Arban, Ten, Alison, and Clov!
This week's question:
Given an array of logs and variable assignments, return a list of all unused variables.
Examples:
> findUnused(["a = 1", "b = a", "c = 2", "log(b)"]);
> ["c"]
> findUnused(["a = 1", "b = a", "c = 2", "log(c)"]);
> ["a", "b"]
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
This question is brought to you by ⚡ SquiggleConf: a conference for excellent web dev tooling! Unused variable detection is one of the many awesome things web dev tooling can do for you. If you want to learn more about how to supercharge your projects, join us in Boston's New England Aquarium on October 3rd. Use code CASSIDOO
for 10% off.
J-O2 with GMK Coniferous
Server Mono font
U.S. Independent Bookstores map
Butterflies accumulate enough static electricity to attract pollen without contact
My balloon elephant wouldn't fit into the back of the car... so I popped the trunk!
That's all for now, folks! Have a great week. Be safe, make good choices, and eat a tasty treat!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, Faisal, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-08-05 14:07:17
Wassssaaap!
We made it to August! The Olympics have been fun to watch, and though the world has its ups and downs, we still can bond over watching really strong, hard-working people do their thing. Let's learn!
Was this forwarded to you? You can subscribe here!
Third-party cookies have got to go
How the Paris 2024 Summer Olympics has impacted Internet traffic
You’ll Write Less Code With Svelte 5.0
Astro 4.13
This week I was fairly bogged down with projects, interviews, calls, and other shenanigans, so it feels like I both got a lot done and not much done at all! That being said, a podcast episode I did a few weeks ago is out, on the Secret Sauce podcast! Check it out if you wanna learn about work, startups, open source... and memes, of course!
Also, in case you haven't played it yet, check out my daily word game Jumblie. It's been really fun seeing folks play it out in the wild, and I hope you enjoy it!
Enhance the developer experience on AWS
Self-service cloud technology has enhanced the way IT departments collaborate and take ownership of DevOps processes. However, it has also added more complexity as diverse systems and tools are adopted by different teams. Cloud-native internal developer platforms (IDPs) have emerged as best-practice solutions for streamlining development environments amid this complexity. In this Amazon Web Services (AWS) webinar, AWS and DevOps Institute showcase some of the most effective IDP architectures available to optimize development productivity. See how to automate infrastructure and developer self-service options while managing access and guardrails at scale.
Last week, I had you convert between metric and imperial units. Awesome work Muhammad, Ashish, Alison, Ten, John, Kriszti, Amine, Nick, Ricardo, Tawseef, and Jasper!
This week's question:
Create a function that should take one argument n
, which is a positive integer. The function should return the sum of all squared positive integers between 1 and n
, inclusive.
Example:
> squares(5)
> 55
> squares(10)
> 385
> squares(25)
> 5525
> squares(100)
> 338350
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
'The ick' and 'boop' newest entries in dictionary
Death of the Follower & the Future of Creativity on the Web (video)
The Effect of CRTs on Pixel Art
Amstrad CPC 464 keyboard
I have a horse, his name is Mayo.
And Mayo neighs!
That's all for now, folks! Have a great week. Be safe, make good choices, and doodle in the margins of your notebook!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Faisal for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-07-29 14:37:28
Hey friends!
I can't believe how fast July flew by! It was both the shortest and longest month ever. Let's go!
Was this forwarded to you? You can subscribe here!
So you think you know box shadows?
Build and Deploy a Full Stack AI Todoist Clone: Next.js, Convex & TypeScript (video)
Last week I said I would show you some things I worked on, and it's time to DELIVER: This week I finished building myself a Micro Journal, which is a digital typewriter! I wrote more about it and shared photos on my blog (and I wrote that with the typewriter which was a really cool and meta experience)! I've been wanting a more "distraction-free" writing device but all of the options out there were so dang expensive, so naturally I did the engineer thing and thought spending hours building one myself would be waaay better. And speaking of things being expensive, and money, and time, and all that jazz, I wrote another blog about my feelings around making money and how weird it is!
The fastest way to build AI apps
Writer is the full-stack generative AI platform for enterprises. Quickly build and deploy AI apps with Writer AI Studio, a suite of developer tools fully integrated with our LLMs, graph-based RAG, and AI guardrails.
Use Writer Framework to build Python AI apps with drag-and-drop UI creation. Our API and SDKs allow you to integrate AI into your existing codebase.
Last week, I had you segment words based on a dictionary! It was a funky one and y'all did great! Awesome job Muhammad, Ben, Pozorvlak, Sean, Philip John, Mazen, Ricardo, Mikayla, Amine, Vincent, Gu, John, and Ten!
This week's question:
Write a function that converts between metric and imperial units. Break up the units into millimeters, centimeters, and meters for metric, and into inches and feet for imperial, up to 2 decimal places.
Example:
> convertUnits(7, "ft")
> "2m 13cm 3.6mm"
> convertUnits(44, "cm")
> "1ft 5.32in"
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Copying is the way design works
How I give the right amount of context (in any situation)
Meet 101 year old Concettina | Pasta Grannies (video)
Building the Micro Journal (yes I'm sharing this again, I love it too much)
I was addicted to the hokey pokey, but I turned myself around!
That's all for now, folks! Have a great week. Be safe, make good choices, and floss regularly!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Faisal for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-07-22 14:11:51
Hey friends!
I hope your week was a good one. I spent a lot of time working on some fun personal projects and seeing friends and family. Anyway, onwards!
Was this forwarded to you? You can subscribe here!
Get The Screen Width & Height Without JavaScript
Utility First CSS Isn’t Inline Styles (video)
How I fell in love with Astro
Build a retro gaming app — Web Dev Challenge S1E2 (video)
I'm gonna not talk about the wild political landscape in the U.S. right now because everyone is. But ya know, make sure you're registered to vote.
Anyway, I went to my first Code & Coffee meetup this week, and it was delightful! It's rare to have the opportunity to meet up with fellow tech folks that aren't already in your circles, and it was really nice to get to know some new people.
I have about 4 or 5 side projects in the works right now, coding-related, keyboard-related, just-for-fun, and I'm definitely trying to focus and actually finish one this week. We'll see if I have anything to share in the next issue, ha!
Join Amazon Web Services (AWS) and DevOps Institute for this webinar on strategies, services, and generative AI-powered AWS Marketplace tools that enable developers to build faster, deploy continuously, and use cloud resources at scale.
Last week, I had you find an increasing subsequence. There were some clever answers, awesome work Miguel, Muhammad, Gu, Josh, Etienne, Amine, Kriszti, Charles, Claude, Ricardo, Saad, Ten, Mazen, Sreetam, John, and
epochDVKHN!
This week's question:
Given a string s
and a dictionary of words dict
, determine if s
can be segmented into a space-separated sequence of one or more dictionary words.
Example:
> wordBreak("leetcode", ["leet", "code"])
> true
> wordBreak("catsandog", ["cat", "cats", "and", "sand", "dog"])
> false
// Although "cat", "cats", "and", and "dog" are in the dictionary, the string does not have a valid segmentation where all parts are in the dictionary.
> wordBreak("aaaaaaaa", ["aa", "aaa"])
> true
// "aaaaaaaa" can be segmented in multiple ways such as "aa aa aa aa" or "aaa aa aaa" where "aa" and "aaa" are in the dictionary.
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Public toilets are vanishing and that’s a civic catastrophe
Friendship and Social Fitness
Green Ergo with GMK Blot
Type in Morse code by repeatedly slamming your laptop shut
What do you call a biscuit that is more intelligent than you?
A smart cookie!
That's all for now, folks! Have a great week. Be safe, make good choices, and speak your mind!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Faisal for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-07-15 13:28:18
Hola!
I hope you had a good week! Mine started slow and then got wildly busy, which sounds like I procrastinated... but I promise I didn't!! I was good!!
Anyway, let's read.
Was this forwarded to you? You can subscribe here!
The Magic of Clip Path
WebAuthn: Enhancing Security with Minimal Effort
Entering text in the terminal is complicated
How Keyboard Navigation Works in a CSS Game
It was absolutely LOVELY seeing your responses last week in the "getting to know you" form! There were so many and I did read all of them, but replying to all of them (I think around a thousand of you responded, as of today) is... a challenge. But just know that I loved it, ha! I wrote down a bunch of your book recommendations and I appreciate you so much for being here.
Also, a podcast I recorded a few weeks ago just came out, if you'd like to take a listen to the episode! It's a casual "fireside chat"-style interview where we talk about AI, the job market, web development, and mooore.
Join Amazon Web Services (AWS) and DevOps Institute for this webinar on strategies, services, and generative AI-powered AWS Marketplace tools that enable developers to build faster, deploy continuously, and use cloud resources at scale.
Last week, I had you determine if you could plant some flowers. Your answers were blooming Claude, Amine, Miguel, Saad, Muhammad, Max, Gu, Nayeem, Ricardo, Ten, Theresa, Mazen, epochDVKHN, Charles, and John!
This week's question:
Given an integer array nums
, return the length of the longest increasing subsequence.
Example:
> increasingSubsequence([10, 9, 2, 3, 7, 101, 18])
> 4
> increasingSubsequence([4, 4, 4, 4, 3])
> 1
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Why do some languages have more words than others?
littol Keyboard with DSA Milkshake
Why Bridges Don't Sink
Beat Basics
My spouse is super upset when I tell him to put his clothes in the closet.
He has hanger management issues!
That's all for now, folks! Have a great week. Be safe, make good choices, and enjoy yourself, it's later than you think!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Faisal for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-07-08 11:52:45
Hello friends!
I hope you Americans had a good long weekend, and the rest of y'all had a great week overall! I got to hang out with family and friends, and it was so nice. Let's boogie.
Was this forwarded to you? You can subscribe here!
Working with Pasted Content in JavaScript
Your bad LCP score might be a backend issue
How to Annul Promises in JavaScript
Tech Conference Talks: My Preparation Strategy
This week was a catch-up week for me after a long string of conferences! I recorded a podcast, took some calls, and also blogged about the productivity apps I use and how you should approach job applications.
In unrelated activities, I finished the book Two Nights in Lisbon (which I bought in Lisbon last Fall)! It was good, I rated it 3 out of 5 stars because I liked the story and its twists, but I wasn't a huge fan of the writing style. It was entertaining though!
In lieu of a sponsor, I would absolutely love if you could tell me a bit more about yourself!
Please fill out this form when you get a chance, if you have time. I have been asking new subscribers questions about themselves in their confirmation emails, and it's been a genuine pleasure getting to know them. So, naturally, I'd like to get to know everyone here as well! Especially you.
Last week, I had you make a fruit stand! Awesome job Nicolas, Chase, Gu, Ricardo, Charles, Amine, Josh, Miguel, Ten, Ross, Muhammad, Theresa, Angelo, John, Krisztina, and Mazen!
This week's question:
Write a function that takes an array of integers representing the number of flowers planted in a line, and an integer k
representing the number of additional flowers you want to plant. Return whether it's possible to plant all k
flowers without planting any two flowers adjacent to each other.
Example:
> canPlantFlowers([1, 0, 0, 0, 1], 1)
> true // you can plant 1 flower between the others
> canPlantFlowers([1, 0, 0, 0, 1], 2)
> false
> canPlantFlowers([0, 0, 0, 0, 0], 3)
> true
> canPlantFlowers([1, 0, 1, 0, 1], 1)
> false
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Class 60 with EC Kit
Will We Ever Get Fusion Power?
How to run a small social network site for your friends
The Logistics of German Reunification
What creature is smarter than a talking parrot?
A spelling bee.
That's all for now, folks! Have a great week. Be safe, make good choices, and stretch your back!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Faisal for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-07-01 15:22:58
Hey friends!
I hope your week was a good one! I traveled to San Francisco for Figma Config, and I'm happy to be back home!
Was this forwarded to you? You can subscribe here!
New JavaScript Set methods
Inline conditionals in CSS, now?
How I Learned To Stop Worrying And Love Multimedia Writing
Sticky/Stretching cursor
Primitive Obsession
This week was SUPER busy for me at Figma Config. I was MCing the developer track, which had some really awesome talks around design and development. Here's a playlist of all of the talks if you'd like to watch them (you can see how they were organized in the agenda here if you want to find a specific one)! It's hard to pick a favorite, but I did particularly enjoy hearing Josh Wardle speak about how he made Wordle (also, he played my game Jumblie backstage, which was very fun for me)!
WorkOS: start selling to enterprises with just a few lines of code.
🔐 WorkOS is a modern identity platform for B2B SaaS. It supports User Management along with enterprise features like SSO, SCIM, & RBAC.
🏗️ Unlike other auth providers that rely on user-centric models, WorkOS is optimized for B2B SaaS with an org modeling approach.
🕝 The APIs are flexible and easy-to-use, helping companies like Perplexity, Vercel, and Webflow quickly become Enterprise Ready.
✨ User Management is free up to 1 million MAUs and includes bot protection, impersonation, MFA, & more.
Future-proof your auth stack with WorkOS 🚀
Last week, I had you write a function around waiting for warmer temperatures. Awesome work Josh, Muhammad, Amine, Sid, Kriszti, Ricardo, Gu, Leyan, Ten, Patrick, Theresa, John, Mazen, Mahak, and Luis!
This week's question:
Define a FruitStand
class that allows you to add different types of fruits with their quantities and prices, update them, and calculate the total value of all the fruits in the stand. Implement the following methods: addFruit(name, quantity, price)
, updateQuantity(name, quantity)
, and totalValue()
!
Example usage:
// Create a new fruit stand
let stand = FruitStand()
// Add fruits to the stand
stand.addFruit("apple", 10, 0.5)
stand.addFruit("banana", 5, 0.2)
stand.addFruit("cherry", 20, 0.1)
// Update the quantity of an existing fruit
stand.updateQuantity("banana", 10)
// Calculate the total value of all fruits in the stand
console.log(stand.totalValue())
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Mapping the Red Planet With the Power of Open Science
A Buried Ancient Egyptian Port Reveals the Hidden Connections Between Distant Civilizations
Bolero (Bartolomé Calatayud) played by Axelle Bernard
Mode Encore keyboard with WOB keycaps
I went to the zoo yesterday and saw a baguette in a cage.
It was bread in captivity!
That's all for now, folks! Have a great week. Be safe, make good choices, and have fun!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Faisal for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-06-24 12:30:38
Heyo!
Welcome to the last week of June! Can you believe it? It's been particularly hot here in Chicago, but also beautiful by Lake Michigan. Let's read!
Was this forwarded to you? You can subscribe here!
The interfaces with which we think
The Interactive Guide to Rendering in React
JS KID PIX
The State of JavaScript 2023
This week I blogged about future billionaires and being funemployed! I also wrote up the conclusion for the State of JS 2023 Survey, and recorded a couple podcast episodes, as well. Whew!
It's a weird week because I was in Berlin last week for a conference, and I'm off to San Francisco this week for Figma Config, so it felt like both limbo and also "extreme productivity time." By the way, if you want to tune into Config, you can watch it for free online! I'm MCing the developer track! I'll try to be funny, I promise.
And one last fun thing, my game Jumblie was featured on the Gamedev.js website! I'm so hyped!
This week's issue is sponsored by Gitea Cloud, by CommitGo!
Gitea Cloud is a managed git hosting platform with CICD that is GitHub Actions compatible
Save time, improve productivity, and let us handle the maintenance of your code hosting and CI runners while you focus on building your next big thing.
Gitea Cloud provides:
For instances with 20 or fewer users, we have a 30-day free trial and a 50% lifetime discount.
Last week, I had you sort names by vowels. I had a typo in one of the examples, thanks y'all for catching it! Fixed it in the archive. Anyway, awesome job Josh, Ashish, Miguel, Mazen, Ben, Leyan, Sid, Muhammad, Amine, Andrea, Shreyans, Ricardo, Dan, Patrick, Ten, John, and Theresa!
This week's question:
Write a function that takes an array of daily temperatures and returns an array where each element is the number of days you would have to wait until a warmer temperature. If there is no future day for which this is possible, put 0 instead.
Example:
> dailyTemperatures([70, 70, 70, 75])
> [3, 2, 1, 0]
> dailyTemperatures([90, 80, 70, 60])
> [0, 0, 0, 0]
> dailyTemperatures([73, 74, 75, 71, 69, 72, 76, 73])
> [1, 1, 4, 2, 1, 1, 0, 0]
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
How One Small Change Broke Wikipedia's First Link Rule
Delving into ChatGPT usage in academic writing through excess vocabulary
Le Chiffre keyboard with DSA Milkshake
I am using AI to automatically drop hats outside my window onto New Yorkers
What did the shy pebble wish for?
That she was a little boulder!
That's all for now, folks! Have a great week. Be safe, make good choices, and make time for a nap this week!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Faisal for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-06-17 14:46:32
Hallo!
I hope your week was a good one! I myself just got back from Berlin and am jet lagged, but happy. Let's go!
Was this forwarded to you? You can subscribe here!
Using the Page Visibility API
Generating ZIP Files With JavaScript
I tried React Compiler today
10 Years of A Single Div
I spoke at The Merge in Berlin this past week! It was a really great time and I blogged about it here. I also spoke on The Last Tech Podcast!
In other news, my company has decided to open source Brainstory and we will be shutting it down (and thus our team is moving on, too, including me). I'm really bummed about this being an ending, but I'm happy about being able to open source it for people to mess with! I think it's still a great product, but it simply didn't make enough money to keep us around. It's bittersweet, but onwards and upwards!
Happy Father's Day, play Jumblie, share this with your friends, also you can subscribe to my blog via email now!
Last week, I had you find a sum of four numbers in an array. Awesome job Muhammad, Sean, Amine, Ricardo, Nikhil, Ten, John, and Vyaas!
This week's question:
Write a function that takes a list of names and returns the names sorted by the number of vowels in each name in descending order. If two names have the same number of vowels, sort them alphabetically.
Example:
> sortNames(["Goku", "Vegeta", "Piccolo", "Gohan"])
> ["Piccolo", "Vegeta", "Gohan", "Goku"]
> sortNames(["Edward", "Alphonse", "Roy", "Winry"])
> ["Alphonse", "Edward", "Roy", "Winry"]
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Scenius: why creatives are stronger together
Lazydesigners Duo 40% with Osume keycaps
Listen to the Universe
Chaka Khan: Tiny Desk Concert
Why is your nose in the middle of your face?
Because it's the scenter!
That's all for now, folks! Have a great week. Be safe, make good choices, and get outside!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Faisal for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-06-10 12:37:24
Wassaaaap!
I hope you had a good week! I started watching the k-drama Queen of Tears and it's pretty much all I can think about. Onwards!
Was this forwarded to you? You can subscribe here!
Data Fetching Patterns in Single-Page Applications
Let's hang! An intro to CSS Anchor Positioning with basic examples
How Deep is Your DOM?
The Last Tech Podcast: Rizèl Scarlett
I asked last week about time zones and had so many responses from y'all, which can be summed up as: run away! So... I'm not sure what I'm going to do there. But I greatly appreciate the help, heh.
On an entirely different note, but an exciting + random one... I met Joan Cusack?? For some context, she owns a store in Chicago! I went in to browse, and she was just stocking shelves and she struck up a conversation asking me about my baby (who was with me and was a great little wingwoman)! I fully geeked out and tried to play it cool as I told her I loved her movies. She was so kind and it made my weekend!
Also, last thing, Jumblie just hit its 250th puzzle!! Thanks y'all for playing!
This week's issue is sponsored by Typesense!
Typesense is the open-source alternative to Algolia with a smaller learning curve than Elasticsearch!
With Typesense, you get:
Star the Typesense GitHub repo and give it a try!
Last week, I had you return sorted, even numbers! Y'all did this one in some funky ways and languages, I loved it. Awesome job Patrick, Clifford, Miguel, Muhammad, Altamish, Andy, Dayo, John, Danny, Alison, Dale, Sean, Azeez, Ross, Simon, Ricardo, Warren, Amine, Mazen, Stefan, Ten, and Dan!
This week's question:
Write a function that takes an array of integers and a target sum, and returns all unique quadruplets [a, b, c, d]
in the array such that a + b + c + d = target
. If it's impossible, return an empty array.
Example:
> fourSum([1, 0, -1, 0, -2, 2], 0)
> [[-2, -1, 1, 2], [-2, 0, 0, 2], [-1, 0, 0, 1]]
> fourSum([], 0)
> []
> fourSum([1, -2, -5, -4, -3, 3, 3, 5], -11)
> [[-5, -4, -3, 1]]
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Zoom75 with PBTfans Retro 100
Kaizen
Designing a Lego orrery
What we do — and don’t — know about how misinformation spreads online
How does a scientist freshen their breath?
With experi-mints!
That's all for now, folks! Have a great week. Be safe, make good choices, and get rid of things that don't spark joy!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Faisal for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-06-03 15:14:31
Hey friends!
Can you believe it's June already? I can't. I've barely registered that it's 2024. Anyway, let's learn!
Was this forwarded to you? You can subscribe here!
Test clocks: How we made it easier to test Stripe Billing integrations
Old Dogs, new CSS Tricks
Ryan Dahl introduces JSR at DevWorld 2024
How does AI impact my job as a programmer?
This week I got really deep into how time zones are found and used and stored. There's really... limited resources on the "right" way to do this. Which is surprising, for something that affects everyone. I was thinking about including some time zone checkers in a little side project of mine, and it was such a rabbit hole!
So, I guess that being said, if you know of a relatively simple way for a user to type in a city and programmatically get its time zone, I am all ears. There's a lot of very specific APIs you can buy access to, or you can geocode the city and then get the time zone, or you could just straight up download the Time Zone database, but... there has to be a better way, right??
No sponsor this week, play Jumblie and share if your company is hiring!
Last week, I had you implement a delayed task executor! Awesome work Ten, Amine, Mazen, and John!
This week's question:
Write a function that takes an array of integers and returns a new array containing only the even numbers, and sorted.
Example:
> onlyEvens([1, 2, 3, 4, 5, 2])
> [2, 2, 4]
> onlyEvens([7, 8, 1, 0, 2, 5])
> [0, 2, 8]
> onlyEvens([11, 13, 15])
> []
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
How Actors Remember Their Lines
Close.city - Find walkable neighborhoods
Engineering for Slow Internet
The Great Wave - Black Kohaku R2 with custom weight, GMK Shashin + GMK Sumi
What do you call an alligator in a vest?
An in-vest-igator!
That's all for now, folks! Have a great week. Be safe, make good choices, and go to a museum!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Faisal for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-05-27 14:20:15
Hello friends!
I've been told that me saying "friends" in my greeting is "cringe" by a youth, and that I should say "what's up chat?" instead. I wonder how long it'll be until these darn kids realize that they, indeed, are also cringe. Anyway chat, let's boogie. I will never address you as "chat" again.
Was this forwarded to you? You can subscribe here!
Coding my Handwriting
The latest in Web UI (Google I/O ‘24)
Incremental Path to React 19: React Conf Follow-Up
Pluck: A math-based string simulator
I went to a family wedding this weekend! It was so, so fun. I think I've been stressed about a lot of things lately, and it was wonderful to just get my mind off of things, be with family, and dance a ton.
As I sit in this brief peaceful time, I'll share a fun fact I learned this week: Teddy bears were named after Teddy Roosevelt! Someone I spoke with this week taught me about Steiff stuffed animals, and it was interesting to read about some of their history.
WorkOS: enterprise-grade auth trusted by Perplexity, Vercel, & Webflow.
🔐 WorkOS supports a complete User Management solution along with SSO, SCIM, RBAC, & FGA.
🏗️ Unlike other auth providers that rely on user-centric models, WorkOS is designed for B2B SaaS with an org modeling approach.
🕝 The APIs are flexible, easy-to-use, and modular. Pick and choose what you need and integrate in minutes.
✨ User Management is free up to 1 million MAUs and includes bot protection, impersonation, MFA, & more.
Future-proof your auth stack with WorkOS 🚀
Last week, I had you make an inverted punctuation checker. Great work Ten, Muhammad, Paul, Amine, Saad, Chase, Nikhil, Evan, Tawseef, Ryan, John, and Cristina!
This week's question:
Write a program that implements the DelayedTaskExecutor
interface defined below. Think about how it would work if you ran the exec
function multiple times in a row, before the task is run!
Interfaces:
interface Task {
// a blocking run
void run();
// when the task should be executed
long timeStamp();
}
interface DelayedTaskExecutor {
// executes task.run() at the given timestamp
void exec(Task task);
}
// usage
executor.exec(new Task(10:00am));
executor.exec(new Task(10:10am));
executor.exec(new Task(10:05am));
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Manifesto for a Humane Web
3D printed keyboard with GMK Space Cadet II
Why Were Older Pokemon Games More Memorable?
Windows 10 Desktop photography setup
(thanks Tom for this one)
What do you call a moose with no name?
Anonimoose!
That's all for now, folks! Have a great week. Be safe, make good choices, and sleep in this week!
Special thanks to IceSloth, Ezell, Sebastián, Ben, Kinetic Labs, and Faisal for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-05-20 13:46:37
Hey friends!
I hope your week was great! Mine was kind of hectic, but productive. Let's gooo!
Was this forwarded to you? You can subscribe here!
React Compiler docs
alphaTab: Build modern music notation apps for web, desktop and mobile
Build Your Own React.js in 400 Lines of Code
Why Patching Globals Is Harmful
I had a ton of meetings this week and felt kind of underwater, I admit. But, I had a good time seeing a bunch of folks I haven't seen in a while! In the time between meetings, I wrote about combining my blog and website! In case you missed it last week, I open sourced it all for your cloning pleasure. Go forth and write!
Moar Serverless is a free conference on May 23rd, running from 11am ET (GMT -4) until 5pm ET!
The tools and technologies under the serveless umbrella keep evolving and expanding with new offerings around AI and new capabilities at the edge. Moar Serverless will give you all the information you need to take advantage of serverless in your application development!
Join in to learn about rendering on the web, content moderation, AI, and moar with serverless technologies. Sign up for free at moarserverless.com!
Last week, I had you find a maximum product! Awesome job Louis, Altamish, Muhammad, Ankit, Pozorvlak, Sean, Ryan, Miguel, Gu, Amine, Mazen, Leyan, Kyle, Chase, John, Nikhil, John, and Ten!
This week's question:
The Spanish language uses inverted punctuation marks (¿ and ¡) in interrogative and exclamatory sentences. Write a function that takes in a string str
, and adds ¿ and ¡ if they're needed. You can ignore exclamations in the middle of a sentence for this problem.
Example:
> fixInvertedPunc("Feliz cumpleaños!")
> "¡Feliz cumpleaños!"
> fixInvertedPunc("Ella ya se graduó de la universidad? ¡No!")
> "¿Ella ya se graduó de la universidad? ¡No!"
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Duo keyboard with GMK Modern Materials
A Brief History of the World’s First Planetarium
Faking William Morris, Generative Forgery, and the Erosion of Art History
Computer Scientists Invent an Efficient New Way to Count
Have you heard about the radical new broom selling out in stores?
It's sweeping the nation!
That's all for now, folks! Have a great week. Be safe, make good choices, and do your laundry!
Special thanks to IceSloth, Ezell, Sebastián, Ben, and Kinetic Labs for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-05-13 14:28:37
Heyo!
I hope you had a good week! Happy Mother's Day to all the moms and mom-figures out there. Let's get started!
Was this forwarded to you? You can subscribe here!
Building a Geocities website in 1998
A React Developer's Guide to Learning SolidJS
A Brief Note on Highlighted Text
Why don’t we talk about minifying CSS anymore?
This week I updated my website and blog setup! I have to write up how I did it, but long story short: I merged them into one big website + repository! It took more time than I expected (and oh my word, I loathe DNS things), but I'm really happy to have finally gotten it mostly done. I'll be sure to post about it soon enough, but until then, I made my blog repository a template that you can clone, deploy, and use for yourself!
This week's newsletter is sponsored by Betty Junod, who likes to hang out at the intersection of open source and enterprise and developer tools and infrastructure -- helping companies tell great stories and optimize their go-to-market!
Read more on her blog and reach out to her for help, consulting, advisory work, and more.
Last week, I had you write a "word wrapping" function! Awesome work Ryan, Louis, Leyan, Ten, Amine, Mazen, Sam, and John!
This week's question:
Write a function that takes in a list (of length >= 3
) of numbers, and returns the maximum product that can be obtained by multiplying any three integers from the list.
Example:
> maxProduct([2, 4, 1, 3, -5, 6])
> 72 // 4*3*6
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
The Styles of Furniture
Don't Give Every Minute a Job
The Analog Web
Vault35 keyboard with GMK Pixel
What do you call a grizzly bear with no teeth?
A gummy bear!
That's all for now, folks! Have a great week. Be safe, make good choices, and enjoy the night skies!
Special thanks to IceSloth, Ezell, Sebastián, Ben, and Kinetic Labs for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-05-06 14:32:17
Hey friends!
I hope you had a good Star Wars Day and Cinco de Mayo! The start of May has been a busy one for me, but also a good one. Let's go!
Was this forwarded to you? You can subscribe here!
Printing music with CSS Grid
React 19 Beta Release: A Quick Guide
MistCSS
Securing client-side JavaScript
Ever had one of those weeks where you were so busy, that when you sit down and try to write down what happened, you remember absolutely nothing?
...same. I know I did some Jumblie maintenance this week, and I cleaned a lot... but that's all I got. Anyway, I'm hoping to work on some personal projects this week, so with any luck I'll have a much more fun status update in the next issue!
Figma Config is happening on June 26-27 in San Francisco!
Config is more than just a conference—it’s a gathering of ideas, a space for learning, and a celebration of craft for anyone who builds products.
Join us (I, Cassidy, will be hosting the Development and Code track!) to connect with other builders and leaders, learn through hands-on workshops, hear about Figma's latest releases, and have a great time! Over 75 speakers will be diving into topics like design systems, AI, development, and more.
Check out the agenda, and register to attend in person or online! #Config2024
Last week, I had you build a keyboard for users who typed slightly wrong. Awesome work Louis, Altamish, Ten, Maciej, Ashish, Ryan, Omri, Mazen, Kyle, Tawseef, John, and Sam!
This week's question:
Write a "word wrapping" function that takes in a string and the maximum width of a line of text, and return the text "wrapped" to that line length. Include dashes for broken words (which is included in the length of that line), and don't let a line start with a non-alphanumeric character.
Example:
let string = "Hello, world! I am hungry."
let length = 10
> wrap(string, length)
`Hello, wo-
rld! I am
hungry.`
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Satisfaction and progress in open-ended work
Teranoptia "creature" typeface
Saag65 with Linworks Green
Woodworking as an escape from the absurdity of software
What do dinosaurs listen to music on?
Fossil records!
That's all for now, folks! Have a great week. Be safe, make good choices, and rest your eyes!
Special thanks to IceSloth, Ezell, Sebastián, Ben, and Kinetic Labs for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky
2024-04-29 14:46:13
Hi ho hi ho!
I hope your week was a good one! I spoke at a conference and on a podcast, whew. Let's go!
Was this forwarded to you? You can subscribe here!
Are Web-Safe Fonts still relevant in 2024?
isBooleanTooLongAndComplex
HTML attributes vs DOM properties
Help us invent CSS Grid Level 3, aka “Masonry” layout
I spoke at Front-end Design Conference this week! It was really, really fun. I haven't spoken at an in-person conference in a long time (I've done meetups, in-person recordings, and virtual events, but this was my first fully in-person conference since the pandemic!). It was absolutely lovely to get to know so many cool people and meet some internet friends I hadn't met in person before!
Also, earlier in the week, I spoke on the Chicago Camps Tent Talks podcast! It was fun to talk about side projects, startup pivoting, and figuring out what you want to work on next.
WorkOS acquires Warrant, the Fine Grained Authorization (FGA) service for developers
WorkOS is bolstering its vision to become the world's best identity platform with the acquisition of Warrant - an open source authorization service.
Fine grained authorization (FGA) determines who has access to what and what they can do within an app. At scale this becomes a significant engineering lift due to the need to implement complicated, permutation-heavy logic.
Warrant’s product is based on Zanzibar, the open source authorization system originally designed by Google to power Google Docs and YouTube. This enables fast authorization checks at enormous scale while maintaining a flexible model that can be adapted to even the most complex use cases.
Read more on the WorkOS blog!
Last week, I had you print arrows in different directions. So many loops, so little time! Awesome job Gu, Ryan, Amine, John, Ten, Altamish, Kyle, Ricardo, Mazen, Tom, and Omri!
This week's question:
Imagine the users on your app are all typing slightly incorrectly, in that they shifted their hands one key to the right. Write a function that translates what they mean to say. The examples below assume an ANSI keyboard layout, you can choose how you want to do that!
Example:
> translateRightShift(';p; epeor')
"lol wowie"
> translateRightShift('ejp s, o')
"who am i"
(you can submit your answers by replying to this email with a link to your solution, or share on LinkedIn, Twitter, Mastodon, or Bluesky)
Airlines required to refund passengers for canceled, delayed flights
Lazydesigners Duo keyboard with Yuzu Custom Dyesub Keycaps
FTC Announces Rule Banning Noncompetes
The Flipbook Experiment
Why did the feline fail the lie detector test?
Because they were lion!
That's all for now, folks! Have a great week. Be safe, make good choices, and water your plants!
Special thanks to IceSloth, Ezell, Sebastián, Ben, and Kinetic Labs for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | twitter | patreon | twitch | codepen | mastodon | bluesky