
Articles of the Week
Docker in trouble, UX upside down and the philosophy behind the code
Hey, folks! Here we are for another round of interesting articles I'd like to share with you. This week we have a selection that covers everything from software design philosophy to how AI is completely transforming the world of UX. Let's get into it!
The Philosophy of Software Design
John Ousterhout, a Stanford professor, explains why thoughtful software design is more important than ever in a context where AI tools are transforming coding practices and developer workflows. The article discusses concepts like module depth, layers that add complexity or keep it under control, and information hiding - all pragmatic tools to use in structuring complex systems.
It's never too much to remember the importance of fundamentals. With the explosion of AI tools for coding, it's tempting to think that software design has become less relevant. However, it's precisely the opposite! As we generate code faster, the architecture and philosophy behind it become even more crucial. This article and the book should be required reading for any developer who wants to build systems that stand the test of time, regardless of the tool they use to write the code.
AI is Flipping UX Upside Down: How to Keep Your UX Job, and Why Figma is a Titanic
AI is revolutionizing the field of UX, and traditional design tools like Figma may not survive this shift. As AI-powered systems reduce the need for traditional interfaces, the role of designers must evolve beyond pixels and wireframes. The article discusses how the AI revolution is creating a fundamental shift in user experience design, where natural language interaction replaces many traditional visual interfaces.
I confess this analysis made me think a lot about the future of the field. I have designer colleagues worried about AI's impact on their job, but the truth is, the entire profession is being redefined. The value won't be as much in producing beautiful wireframes, but rather in the ability to architect experiences that work well with AI as an intermediary. It's a huge challenge, but also an opportunity for designers willing to adapt and learn new ways of thinking about user experience.
MCP Protocol: A new building block for AI development tools
The Model Context Protocol (MCP), which extends the AI capabilities of integrated development environments (IDEs), is rapidly gaining popularity. The article explores why this is happening and why developers should pay attention to this technology. MCP allows IDEs to communicate with large language models (LLMs) in a standardized way, creating a more powerful and consistent AI-assisted development experience.
This protocol is one of those developments that might seem technical and boring at first glance but have the potential to completely change how we work. MCP is to IDEs what HTTP was to the web - a standard that allows fluid communication between different tools. Imagine being able to switch IDEs or AI models without losing functionality! I'm excited to see how this will evolve and what kind of development tools will emerge based on this protocol. I already use some MCPs in my Claude and my Webstorm IDE with Windsurf and have had great results.
Every developer needs to self-host
The article argues for the benefits of self-hosting services and applications instead of solely relying on SaaS solutions. It contends that self-hosting can save money, provide greater control over data, build valuable skills, and increase understanding of systems. However, the author also warns that you don't need to self-host everything and should not self-host startups without adequate experience.
I have a love-hate relationship with self-hosting. On one hand, I've learned so much by setting up and maintaining my own servers for personal projects. On the other hand, I've lost sleep solving configuration problems that could have been avoided with a SaaS service. I think the question isn't so much whether we should self-host, but when it makes sense. For learning and personal projects, it's spectacular. For critical business services? Not so much. The important thing is to experiment and figure out where the balance lies for each person.
What is growth engineering?
An in-depth look at the field of growth engineering, which often sits between product engineering and marketing. The article discusses how this discipline combines elements of engineering, data analysis, marketing, and product design to drive user and revenue growth. It includes insights from MasterClass's former Head of Growth Engineering, Alexey Komissarouk.
This area has been fascinating me more and more. Growth engineering is that sweet spot where code and business meet. As a developer, it's easy to get absorbed in pure technical problems, but the truth is, we need to build things that users actually want and can find. What I love about this approach is that it brings scientific methods to marketing - testing hypotheses, measuring results, iterating based on data. If you're building a product and want it to succeed, it's definitely worth understanding these concepts!
Why building mobile apps is so much harder than it looks
Mobile development seems simple from the outside, but it is one of the most demanding areas in software engineering. With limited resources, strict platform rules, and high user expectations, building quality mobile applications goes far beyond just writing UI code. The article details the many technical and non-technical challenges mobile developers face.
This article is pure gold for anyone who, like me, has tried to explain to clients why a "simple" app won't be ready in two weeks. Developing for mobile is like trying to dance a perfect tango with device limitations, app store rules, and increasingly high user expectations. I remember a project where we spent more time optimizing battery consumption and dealing with connectivity states than implementing the features themselves. It's a reality that is often not properly valued but makes all the difference in the final experience.
Cross-platform mobile development with Expo
Expo has quietly become one of the most popular tools for cross-platform development. The article explores why this happened and how Expo works, with an in-depth look at the Expo engineering team. It discusses how this tool significantly simplifies React Native development, allowing you to create apps for iOS and Android from a single codebase.
As someone who has been through the hell of setting up a React Native environment from scratch, I can say Expo is a lifesaver. It's incredible how it manages to abstract so much complexity without sacrificing (too much) control. I've been using Expo in my personal projects, and the difference in productivity is abysmal. Yes, there are limitations when we need very specific native features, but for most applications, it works perfectly well. And with recent improvements in native module support, it's getting increasingly hard to find reasons not to use it.
I left Spotify. What happened next?
The author describes his journey after leaving Spotify, trying different alternatives until finding the perfect solution for his music streaming needs. After testing various options like Apple Music and YouTube Music, he ultimately opted for Jellyfin, an open-source media server that allowed him to create his own music library with full control over the data and listening experience.
This story resonates deeply with me. I've also been increasingly questioning the dependence on streaming services and the number of subscriptions we end up accumulating. The idea of regaining control over our own media library is tempting, especially when we think about how digital catalogs can simply disappear overnight due to corporate decisions. I haven't yet taken the step to completely abandon streaming services, but articles like this inspire me to consider more independent alternatives. Jellyfin seems like an excellent option for those willing to invest a bit of time in the initial setup.
The end of Docker? The reasons behind developers changing their runtimes
Docker led the container revolution, but times have changed. In 2025, developers are embracing faster, lighter, and more secure alternatives. While Docker maintains some popularity, more and more companies are replacing it with more modular and Kubernetes-native solutions. The article analyzes Docker's problems in the current landscape, including licensing issues, performance on Windows and macOS, security problems with the root daemon, a monolithic approach, and fears of vendor lock-in. Several alternatives are presented, such as Podman, containerd, CRI-O, Lima, and Finch.
I confess I've been following this "Docker saga" for a while, and this article hit the nail on the head. Docker was that revolutionary tool that made us think, "how did we live without this before?", but the reality is that the ecosystem has evolved, and its weaknesses have become more apparent. In my case, the headaches with Docker Desktop when I have to use Windows led me to try Finch, and the difference was like going from a Fiat 500 to a Ferrari (no offense to Fiat fans!). The licensing change was the cherry on top that made me rethink the dependence on this tool. That said, I still use Docker for local development on simple projects and on Linux - no need to complicate when simple works. As the article says, it's not the end of Docker, but the maturation of the ecosystem it itself helped create. And that can only be good for all of us.
And so we reach the end of another edition of our article round-up. If there's one thing that stands out here, it's the constant evolution and transformation in the world of technology. From how we design software to how we build and run applications in containers, everything is in constant flux.
Artificial intelligence continues to redefine roles and practices we considered established, while fundamental software design principles remain as relevant as ever.
Until the next edition, stay curious and don't be afraid to try new approaches!