End of July? Seriously? Feels like yesterday when I celebrated New Year’s Eve, and all of a sudden it is the end of July. Can we all slow down a little, please? Not a little. Slow down! You, time, the world. Pretty please! I’m in a good mood today, but not in a good one to write interesting intros, so let’s go straight to the album of the month (it is a good one), and of course links. I have plenty of good resources for you that I liked over the past month. Enjoy!
Content Preview
End of July? Seriously? Feels like yesterday when I celebrated New Year’s Eve, and all of a sudden it is the end of July. Can we all slow down a little, please? Not a little. Slow down! You, time, the world. Pretty please! I’m in a good mood today, but not in a good one to write interesting intros, so let’s go straight to the album of the month (it is a good one), and of course links. I have plenty of good resources for you that I liked over the past month. Enjoy!
Album of the month
Time for a classic! I have two reasons why
“The Score” by Fugees
was spinning quite a lot on our turntable in the past month. Firstly, this is an incredible album full of bangers, one after the other. Another reason is that my wife and I are going to see Lauryn Hill and Wyclef Jean live in a few weeks’ time at the
Diaspora Calling
festival and we are expecting to hear quite a few songs by refugees. I’m well pumped about it. If you don’t know this album, you have homework to do, because this is one of the greatest pieces of music ever released.
I like posts about modern parts of CSS, but posts like this one are even better. Jake presents a tonnes of modern CSS to solve a particular UI challenge — adding margins and restricting block size of customizable selects. Along the way he also bumps into number of browsers incompatibilities. Again, it is packed with modern CSS like
position-try-fallbacks: flip-block
and other nuggets you probably never heard of. This is the best kind of blog posts!
Really good primer to the
go fix
CLI and the concept of modernizers in the Go language. The command line tool has been totally revamped in the recent major version 1.26 and it is an incredibly useful tool for projects managed by a team of multiple devs. Surprisingly, it is also very useful for codebases written using AI, even though modern LLMs are pretty good at writing Go.
I was so excited when the Microsoft team announced the TypeScript rewrite to Go over a year ago. For many months, I have been using
tsgo
, and the difference in the experience of working with this language is night and day. The part that I’m most excited about, other than the speed, of course, is the native LSP integration that fully follows the protocol spec. If you have ever complained about the TS compilation speed, today is the day when the wait is over. Update your projects and your IDEs to take full advantage of it.
I know that there are plenty of other resources that explain the new possibilities of fully customisable HTML select elements, but there is something different about this Apple production. This presentation is not too long, not too short, follows a nice pace and the constructs are layered on top of each other, so we are not bombarded with the complexity of new values and features all at once.
This is a good guide on creating a web browser extension. The chapter closer to the end of this presentation is the most exciting to me, as it presents how you can package and distribute a Safari extension without ever downloading Xcode. This is exciting news and probably will unblock a lot of authors from distributing their plugins to Safari as well.
Really inspiring talk by Daniel about building successful products with people. It is backed by the origin story of npmx, which is one of the most successful open source stories in recent times. I love the way Daniel always puts people first in the way he works.
OpenTelemetry is an open-source framework to enable key observability elements in your application. It is a single framework that gives you logs, metrics, and traces, and it supports a lot of modern programming languages. Adding it to a Go application has never been simple, though. It required a lot of boilerplate code to propagate logs, hook into the transport layer events, and orchestrate spans for database calls, etc. Now this whole thing can go away, and we no longer need to write it all, as the new
otelc
CLI is a tool that can auto-instrument our application at compile time. The best code is the one that doesn’t exist, right?
I had absolutely no clue about the CSS
progress()
function. This article presents one great use case for the new function, but I can think of plenty more good ones. Isn’t modern CSS just too good?!
Good post about the goals of Gin, the most popular HTTP Go language framework. The author elaborates on the importance of backward compatibility, how the radix tree-based router made it a lot more efficient compared to other regex-based projects of its kind, and some other decisions that made it as popular as it is. Really good, short write-up with an interactive radix tree explainer.
What a good write-up. Learning new things is probably your bread and butter if you work in the software engineering sector, but some people may need this reminder. It is really useful for people who claim not to have time for anything, and even more applicable to those who didn’t train their self-improvement muscle since their school years.
I really like Cloudflare’s intuitive, headers-controlled advanced caching. This is the thing that I always wanted to be available in Cloudflare Workers, and the wait is over. This blog post starts from the basics and goes into depth about the reasoning why this implementation took so long. It is such an interesting story how the web changed and the core Worker methodology flipped the order of resources (moved the cache in front of the origin).
Just read it. It is not about a specific tool, and Bill’s point is not to compare one to the other. It is about core principles of building a product that people want to use. The whole post, line by line, is a masterpiece and I would highly recommend reading it regardless of what the output of your creation is: a website, CLI tool or programming language. It applies to all those.
Maximal configurability shouldn’t be a tool’s goal, it should be an option for when it’s actually necessary. Designing an ergonomic tool is fundamentally about having good defaults, while still allowing escape hatches where they’re possible/needed.
“Highly configurable” is often just an excuse for shipping no opinion at all and calling the resulting work your problem. Good defaults are a form of respect for the user’s time: the toolmaker does the thinking once so a thousand users don’t each have to.
Documentaries by CultRepo are incredible, and another one has joined their collection recently, this time about the Java programming language. A language that I have absolutely no clue about, but that actually makes this a more interesting documentary for me. As always, top production quality and a superbly interesting story. Hey, modern Java doesn’t really look as verbose as it looked a decade ago when I looked into it for the first time.
Do I really need to highlight every single post by Josh in my top picks? Yes, I do, because they are great explainers of modern CSS concepts. His demos and very practical examples are always on point to convey just enough without exhausting my brain capacity.
Super simple to follow intro to the interactive rebasing. I’m not scared of
git rebase -i
but I use it so infrequently that every time I use it, I need to remind myself where to put “s” to squash one commit onto the other. I really like this refresher.
This episode of Syntax.fm answered so many questions I had about AT Protocol and a little bit about how it compares to something like the Fediverse (the concept behind Mastodon). Dan is a great educator and some of the concepts he explained finally clicked in my brain. After chatting about it on social media, Dan shared with me
“There Are No Instances in atproto”
that goes much deeper into the comparison of AT Protocol and the Fediverse. I think I’m becoming a fan, but there is still one knowledge gap in my understanding, and I have a blog post coming precisely about that. There is no better way to learn something than writing about it. Right?
There is no other web service that I have been using more throughout my career other than my email. Second is CodePen. This is a huge milestone that the whole team spent years to achieve and the whole, super small team deserves huge kudos. The new CodePen 2.0 is a lot more powerful, comes with all you would expect from a very modern service of its kind, but in a typical fashion for these folks, they kept it simple. To use its basic features it is as simple as it always has been, but now you can do serious development work with it including a whole deployment of your website, which is absolutely sick. I also enjoyed two episodes of the CodePen Radio podcast, that I would highly recommend you checking if you are curious about some internals:
“Why are we building CodePen v2”
and
“CodePen 2.0 Launch Party! Find out what everyone’s favorite features of CodePen 2.0 are”
. Huge congrats team!
Pretty big month for the web. Tons of great posts came out, Apple WWDC took place and a few shocking acquisitions happened as well. I have been travelling for work and with family this month a lot so no other crazy updates from my personal life this month, but as always great music recommendations for you all and a bunch of links. We freaking love good links right! Enjoy!
Content Preview
Pretty big month for the web. Tons of great posts came out, Apple WWDC took place and a few shocking acquisitions happened as well. I have been travelling for work and with family this month a lot so no other crazy updates from my personal life this month, but as always great music recommendations for you all and a bunch of links. We freaking love good links right! Enjoy!
Browsers ship with a long list of quirks, just to make sure a rendering is consistent with the dominant player, Google Chrome. Due to the significant market share dominance, Google’s browser doesn’t have a quirk mode. This is pretty shocking, and I would encourage you to look into the list of quirks. In some situations, Safari and Firefox literally modify the browser agent. A really nice deep dive by Den.
Declan is one of my favourite bloggers in recent years. The subjects that he picks are just so close to my heart. No matter if this is about the open web, accessibility or Neovim, I love his writing. This one is no different and it is a good reminder that when we talk about assistive technologies, it is not only about the screen reader. The list of input and output devices in this list is a real eye-opener, and it is non-exhaustive.
I love Ben and his never-ending advocacy to just use the web. This one is another great post by him that gives you six million reasons why you should consider the HTML
<dl>
element in your markup. I’m sure plenty of unordered lists (or divs if you’re a horrible person) can be replaced with details lists. Great semantics improvement and a good win for accessibility.
I recently spent hours trying to understand the order of transitions and animations of the top level HTML elements like
dialog
s and
popover
s. Shit is complicated! Only when I managed to make it work, Chris published that article that made me actually understand these things. Chris builds this mental model of three distinct states and puts them in the timeline. This is the top explainer of the in and out animations of
dialog
s folks.
VoidZero, a company founded by the creator of the Vue framework, now holds the most powerful suite of tools in the JavaScript ecosystem: Vite, Vitest, Rolldown, and the Ox set of tools (linter, formatter, parser and so on). Now it becomes part of CloudFlare, a company that I’m a huge fan of, but at the same time I’m a little scared that they own all the tools I like. Not long ago, they also acquired Astro. I really hope that CF won’t become a bad player and that they will fulfil the promise of continuous openness and development under the current licence for all these apps.
There is a cool feature coming to Postgres 19. Read-after-write removes the need for the age-old hack of querying the data after writing it with a delay in between to accommodate replica delays. Redowan explains it really well.
What a hot tip. I had no idea I can make a global
.config/git/ignore
file to never again deal with the annoying macOS
.DS_Store
files. Short one, good one.
Ain’t that golden? Literally a whole website with a cool domain (I love short, single-purpose, even silly domains) dedicated to all I have been moaning about for the past years since the AI-generated slop explosion happened. Love it, read it, apply it and keep the human conversation going.
Good explainer of the new
ariaNotify()
and the overall state of assistive technology announcements of live regions. Mat Marquis presented a few practical examples, two ways of triggering new notifications and left us with a fair warning not to abuse this API.
Here is a helpful little cheat sheet about new
grid lanes
display layouts (aka masonry) created by the WebKit team. Not only does it explain and present cool demos of the new feature, but it also explains in a really nice way other core aspects of layout sizing methods. For years I struggled to wrap my head around the
min-content
and
max-content
keywords, but this little guide nailed the definitions. I like little single-purpose pages like this one.
Standard.site came out of nowhere some time ago, and a bunch of bloggers integrate their blogs with the new lexicons on the ATProto (Authenticated Transfer Protocol is the tech behind BlueSky). I read a few of the guides, and as much as the implementation makes sense to me, the part I was missing is the basic understanding of the ATProto concepts needed for the integration. This article by Declan “Vale” Chidlow is just perfect. It goes into the very basics of the concepts and presents just the essential parts needed for the integration. What a good blogger he is!
What a great story by Marcin of the little decades-old keyboard quirk that made typing “S” a little bit more problematic for Polish keyboard users. As you could expect from his post, it is packed with obscure details about the keyboard’s design and little-known history facts behind the editor’s inner workings.
This year Apple invested more time into the improvements other than new features across the board of all OSs, which was a general theme of this year’s WWDC. Safari is no different and the huge focus went into the interoperability of Safari with other engines. But a few brand new things landed of course — grid lanes and customisable selects are probably the highlights most are talking about. For me, the changes to the web extensions and the way to package them up in Safari are the most noticeable changes. This 16-minute session with Jen Simmons sums it up really nicely.
Drama about the pricing of AI models, countless npm vulnerabilities and Google I/O that at this point should be rebranded to Google AI. This is a short summary of the past month in software. Most of the news from these categories I entirely ignore, so I prepared for you a list of super non-trendy resources from the past month, as I do every last day of each month for the past 11 years. A few bits presented by friends from Google are the only exceptions.
Content Preview
Drama about the pricing of AI models, countless npm vulnerabilities and Google I/O that at this point should be rebranded to Google AI. This is a short summary of the past month in software. Most of the news from these categories I entirely ignore, so I prepared for you a list of super non-trendy resources from the past month, as I do every last day of each month for the past 11 years. A few bits presented by friends from Google are the only exceptions.
In the past month, I worked super hard on a side project that I have been developing for months at this point, and I can’t wait to present it to you all. I didn’t have a lot of time for blogging, but I’m learning tons about Go, backend and distributed systems, but in between, I have tons of fun using some incredible bits of modern CSS on the frontend layer. Stay tuned, folks, and now straight to the music recommendation and some good links from the past month.
Album of the month
The point of this section is to share what I have been listening to the most in the past month, and you’re unlucky unless you understand Polish language. Sorry! This month I must dedicate to “Koniec Żartów” by Łona, a great rapper from my hometown, Szczecin. I know the lyrics of every song on this LP, and even though this one is 25 years old, the lyrics still feel fresh.
“Rozmowa z Bogiem”
is my absolute favourite one!
Great proposal for the universal environment flag that signals that the user doesn’t want to send any tracking, usage reporting, telemetry, crash info and others to the software creators. A single flag to rule them all, because at the moment it is a wild west and every tool does it in its own way.
Very interesting read about the state of the accessibility of TUI tools written in frameworks like React Ink or Go-based Bubble Tea. I’m sure you have seen them; I personally use some of them quite a lot, but I’m not visually impaired. For blind users, they are impossible to use, and maintainers of huge tools like
gemini-cli
simply ignore it despite plenty of reports. I often think about the experience of visually impaired users of my web projects, and TUI creators should do the same. I’m in the process of building my first TUI tool, and I’ll keep the advice from this post in mind.
Harry was right, I didn’t know about it. I love CSS so much and feel a little embarrassed every time I learn basic concepts like this. I didn’t know about the
font-family
fallback strategy, so maybe you don’t know about it either. Check it out, Harry is a good web fella!
Dave is not an idiot. You may know him from his incredible contributions to MDN, he literally documented half of the CSS there. Also, he is an organiser of my favourite, super community-focused web conference,
State of the Browser
. Most importantly, he is a good friend! For sure, not an idiot! He shared this fantastic story that many of you can relate to. This is top-class blogging here, folks; go and read it!
Very good explainer of the experimental “No-Vary-Search” HTTP response header. This single addition to the list of headers coming from the server may save a lot of data sent over the wire. Harry is also a good educator, I have followed him for many years, and his content is always second to none.
A quick video about the LSP setup with the native autocomplete. Every major release of Neovim, they add really useful stuff to the core. I rarely add any plugins recently, but I remove them quite often, and this video makes me think that maybe I don’t need Blink anymore.
Can’t tell you how many hacks I used to get nice-looking custom borders around the CSS grid items. Pseudo classes, box shadows, background on the parent with a little gap and padding around the parent, you name it. I tried all these tricks.
The CSS Gaps Module Level 1
is really exciting and it is not a little add-on, but a comprehensive spec to go absolutely wild with the look and feel of dividers between CSS grid items. They are animatable! Modern CSS is awesome. This is a super progressively enhancable feature so you don’t need to wait for support on all browsers to start using it. This is a good explainer by two Microsoft folks.
On the same subject, Brecht De Ruyte published this guide to the new gap decorators. A lot of real life examples on this one. He put a lot of good work into this one so check it out.
Another super interactive explainer by Josh. I think I put every single post published by Josh on my top picks list, because they are all so good. This one is no exception. Scroll-driven animations are not that bleeding edge anymore; they are supported by most browsers, and they can be added conditionally only when they are supported. Progressive enhancement for the win! Solid work, Josh, thank you!
Google IO was always an event I was looking forward to. This is where Googlers announce what’s cool coming to the web and what has been implemented in the last year. This year was not different, because they did announce a lot of stuff, but unfortunately this is not the kind of stuff I was hoping for. As you can imagine, it is all related to AI. Some of the stuff is truly helpful and impressive and for sure worth paying attention to.
Modern Web Guidance
is great, probably the same goes for some of the agentic help built into the devtools, and HTML on Canvas is just wild. No matter what your take is on AI fucking everything, probably this list is worth glancing at.
What a month! GitHub went down six million times, eleven thousand Vercel security holes have been unveiled, Copilot doesn’t accept new signups due to a super unsustainable business model (finally someone admitted it), Anthropic landed on top of Hacker News billions of times due to some drama, popular npm packages have new malware injected again and tons more. This all happened in the past month. The tech world doesn’t slow down, the quality of the software is going downhill, massive layoffs all over the place. If you want to stay optimistic, spending time in front of a computer is not a good idea, so you seriously better go out and touch grass.
Content Preview
What a month! GitHub went down six million times, eleven thousand Vercel security holes have been unveiled, Copilot doesn’t accept new signups due to a super unsustainable business model (finally someone admitted it), Anthropic landed on top of Hacker News billions of times due to some drama, popular npm packages have new malware injected again and tons more. This all happened in the past month. The tech world doesn’t slow down, the quality of the software is going downhill, massive layoffs all over the place. If you want to stay optimistic, spending time in front of a computer is not a good idea, so you seriously better go out and touch grass.
Some good music, as every month, is waiting for you here, and a few links that I found particularly interesting this past month. Enjoy reading and listening, and I will catch you next month 💌
Album of the month
I was shocked when I visited
my local records store
on RSD (Record Store Day) and I found most of the discography of Lack of Afro. I love his heavy drums style, mostly fast paced raw funk. Modern, but with this old, JB (James Brown) kinda of groove to it. When I took the record home and listened to it for the first time after many years, I couldn’t stop playing
“Rusty”
which is based on a drum line from
“Fire Eater” by Rusty Bryant
. What a tune! What a monster tune for bboys! Naturally
“Press On” by Lack of Afro
is my album recommendation for this month.
This game is close to my heart. When we got our first family computer a few decades ago, I was the one who occupied it for the most time. My sister really enjoyed looking at me playing games a lot more than playing on her own. Twitch later on proved that she was not a weirdo at all, as there are millions of others who prefer to take a back seat. For me, it was a perfect deal. RollerCoaster Tycoon was my sister’s domain though — she was so, so, so good at it! Ever since, I have good feelings about this title. This post goes in depth into some of the game design decisions that made this game so revolutionary at the time.
I use email every day, and it is embarrassing how little I knew about the way it works before reading this post. I also browse the web daily and I know tonnes about the protocols and transfer layers involved in that. This article helped me to fill the gaps in my knowledge. Well explained step by step and all the technologies involved in every single process of authenticating, receiving and sending emails.
I loved this article. The difference between writing code for an enterprise organisation at work, vs the little side projects that passionate people create on their own time aligns with my experience as well, as everything that keeps me going as a software creator comes from these extra hours I spent after writing enterprise-level code at work. Good read, good analogy!
Good reminder not to overoptimize prematurely. I found this article at the perfect time in my life, where I’m in the middle of untangling the difference between multiple AWS services, because I am trying to deploy a container. Maybe I don’t need a container at all. Maybe you also don’t.
A great reminder of the design idioms, why we missed them and how we can bring them back. Another article from the category “just keep it simple,” but surprisingly, no matter how often advice like that comes out, the industry still struggles to implement it. Quite the opposite is the reality nowadays, unfortunately.
Redowan Delowar’s blog is one of my favourite resources for learning Go. He is such a good blogger, super active and insanely helpful. Here is his little recap of the UUID proposal being added to the Go standard library. The day has come and I really hope that with the release of 1.27, I will be able to replace
github.com/google/uuid
with the built-in
uuid
.
Beautifully written by Rachel Andrew. I love her writing and her deep attention to detail in her craft. Her talks, her posts, her presentation slides. Rachel has been hugely inspiring to me since I started learning web development, and she still is a mentor today.
Another banger post on the same vibe as Rachel’s article. It is funny that in the age of AI-generated everything, I value non-techy posts a lot more than before this whole madness.
Although I’m not a daily user of Zed, I’m a fan. I played around with it years ago and open it from time to time just to be amazed at how well polished an IDE it is. This is a really viable competitor to Visual Studio Code that absolutely dominates the market. Good! In my opinion, everything about Zed is better than VSCode: the look, the feel, the defaults, the memory consumption, and the fact that it still feels more like a tool to write code first rather than a chat to interact with LLMs. If you use a GUI, this is the one you should give a go to if you haven’t already.