🌒 "Don't let anyone rob you of your imagination, your creativity, or your curiosity." - Dr. Mae Jemison
Hey friends!
Happy International Women's Day, and good new week! I hope you had a good one. This past week felt like a blur, so let's get into it.
Was this forwarded to you? You can subscribe here!
Web links of the week
Finding an accessibility-first culture in npmx
What AI Exposed About Iterative Development
Image Asset Optimizations: Performance Optimizations in React (video)
How to make your first contribution to an open source project
Something that interested me this week
I was on a video kick this week!
- The latest episode of The Download
- Building vs. Buying in the AI era
- Making art with CSS gradients and corner-shape and skew, oh my (which is a blog and a demo and a video)
- Speedrunning CSS on CSS Daily
- And mooore that'll be on the GitHub channels soon!
I also cut a new minor version of FancyGist. It feels weird to version a side project "properly" but it's a nice way to group new features together, so I'm rolling with it!
Sponsor
You know that split brain where your app code lives in Git, but your API specs and collections are just... floating somewhere else? The new Postman fixes that.
Your specs, collections, tests, and mocks now live directly in your Git repo. They go through branches. They go through PRs. They get versioned. API assets are finally treated like the code they've always been.
On top of that, Postman shipped Agent Mode. With Agent Mode, you can add your favorite AI tools and your model of choice directly within your workspace. Agent Mode has full workflow context across your specs, tests, and mocks. When your API changes, it coordinates the multi-step updates and keeps everything in sync. And the same tests you run locally? Those are the exact ones that run in CI. You can go and create whatever you need.
Interview question of the week
Last week, I had you implement the Boyer-Moore Voting algorithm! Good work Micah, Ten, Miguel, Pranshu, Noumisyifa, Paul, Donato, AJ, Matt, Christian, Varenya, Toni, and the lovely people in the Ruby Users Forum!
This week's question:
Given a string s consisting only of 'a' and 'b', you may swap adjacent characters any number of times. Return the minimum number of adjacent swaps needed to transform s into an alternating string, either "ababab..." or "bababa...", or return -1 if it's impossible.
Example:
minSwapsToAlternate('aabb')
1
minSwapsToAlternate('aaab')
-1
minSwapsToAlternate('aaaabbbb')
6
(you can submit your answers by replying to this email with a link to your solution, or share on Bluesky, Twitter, LinkedIn, or Mastodon)
Cool things from around the internet
Neologism: Nerd osmosis
Ground Control 40
Professional Trumpet player tries the 5 cheapest trumpets on Amazon (video)
The Veronicas "Untouched" (live) (video)
Joke
Why did the cow go to space?
To see the mooooon!
That's all for now, folks! Have a great week. Be safe, make good choices, and go for a walk!
Special thanks to Ben, Kinetic Labs, and Marta for supporting my Patreon and this newsletter!
cassidoo
website | blog | github | bluesky | youtube | twitch | twitter | patreon | codepen | mastodon