Hey there!
Summary of this email:
- Tailwind course 100% published on the Standard plan
- 🆕 New section: Spot the bug
- 🆕 New section: Top tech and programming news of the week
- We're giving away 1 ticket for JSConf and 1 for SOSZ26!
⏱️ Estimated reading time: 1 minute... or 2.
⛵ Tailwind course 100% published on the Standard plan
Tailwind CSS is the most popular CSS framework. Before the AI era it was already popular due to how easy it is to write its code, but thanks to AI its popularity has grown more than ever.
But with all of this come new problems: styles that don't scale.
And the solution might seem complex, but it's pretty simple: You need good foundations, and therefore, good architecture.
In the course we focus on how to build a scalable architecture and how to apply best practices for:
- 📐 Layouts
- 💫 Animations
- 📱 Responsive
- 🎨 Themes
All of this applying BEM and considering whether Atomic makes sense. Now 100% published on Codely Pro Standard.
🐛 Spot the bug
Today we're launching this new section. Whenever we hit a bug at Codely, we'll bring it here to see if you can spot it.
This week we wanted to add a git pre-push hook, but it kept hanging.
Look at the code and try to figure out what's going on. See if you can spot it without using AI. We'll give you the solution at the end of the newsletter.
# .husky/pre-push
echo "👌 Running pre-push hooks from `.husky/pre-push`"
branch="$(git rev-parse --abbrev-ref HEAD)"
if [ "$branch" = "main" ]; then
echo "You can't commit directly to main branch"
exit 1
fi
yarn prep
🎟️ We're giving away 1 ticket for JSConf and 1 for SOSZ26!
One of the things we love about what we do is being able to share with the community. 😊
Today we're giving away 2 tickets:
- JSConf: A TOP frontend event where tickets are long sold out. You can enter here.
- SOSZ26: An event where we've always brought back interesting takeaways. You can enter here.
Good luck!
🗞️ Top tech and programming news of the week
The pace at which technology is advancing lately is insane! That's why we've decided to add this new section to the newsletter, to give you the most significant headlines of the week.
The most relevant thing that happened is the migration of users from ChatGPT (OpenAI) to Claude (Anthropic) due to all the controversy with the US Department of War.
In short, Anthropic said they weren't going to remove protections from their models to spy on their own country's citizens, something Sam Altman (CEO of OpenAI) supported. Shortly after, the US government called Anthropic left-wing radicals and cancelled any collaboration.
Up to this point, everything was "normal" (within the new normal). What changed everything is that just hours after announcing the break of the Department of War's agreement with Anthropic, OpenAI announced a new deal with them. This led many people to cancel their OpenAI subscription and switch to Claude.
Anthropic didn't expect this and it pushed their servers to the max. So much so that in Claude Code, the recommendation changed from using Opus with thinking set to maximum, to using it with thinking set to medium.
On top of that, this week Apple released new products, Cursor integrated into IntelliJ, voice mode for Claude Code came out... Crazy times!
All these news and more, we'll be covering them live tomorrow at 9 CET on Café con Codely. See you on our YouTube or Twitch!
🦋 Bug solution
This bug happened to Javi. Once he realized what was going on, he shared his screen with me so I could spot it, and I had a really hard time seeing it.
I couldn't see it to the point that every time I said where the bug might be, he would delete the line of code I mentioned. He deleted so much that in the end only one line was left, and that's when I finally noticed what was happening. 😅
The bug was... in the first line!
echo "👌 Running pre-push hooks from `.husky/pre-push`"
What's happening is that inside double quotes, anything with backticks (`) is interpreted as a command to execute (command substitution). Basically, we had created an infinite recursion with no escape condition, so it hung forever and beyond.
The fix was to escape those backticks so the text would be printed without re-executing itself. ✨ Were you able to spot it? Or did the same thing happen to you as it did to me?
And since you've made it to this part of the newsletter (which you reached very quickly today), here's the joke of the week, which I know you were waiting for:
When does an API stop eating? When it's state·ful 😂 😂 😂 // Sent by @soy_capo 🙌
Cheers!