GitHub is convenient, but you don't always want your code, your CI and your private orgs living on someone else's servers. Here is how to run Forgejo — a self-hosted, open-source GitHub equivalent — on a cheap Hostinger KVM1 VPS using Docker, with its own Actions runner and Traefik in front.
Rive is sold as a tool for cute animations. The more I use it, the more I see something else entirely: a genuinely cross-platform engine for server-driven UI. Here is how to load a component from a remote .riv file and bind it to dynamic, per-locale data in Flutter.
Most frontend work is interpreting someone else's design and improvising the parts they couldn't anticipate. I think the split of responsibilities is structural rather than personal—and Rive points at what a better workflow could look like.
MultiChildLayoutDelegate is great for custom layouts, but it can't size the parent from its children. SlottedMultiChildRenderObjectWidget gives you that power — here's how to use it.
I listed some of my thoughts on the current state of AI in software development, based on my experience and observations. These are not predictions or definitive statements, but rather reflections on the ongoing transformation.
A friendly deep-dive into why Flutter’s safe area handling often causes more headaches than it solves, and how simpler APIs can sometimes be the better choice.
There’s something about discovering a new, beautifully crafted operating system that makes you feel like a kid again. The promise of a lean, polished Linux setup—without the painful hours of configuration—was too tempting. So, there I was in the quiet of the morning, coffee in hand, ready to see what Omarchy was all about and whether I could build apps for it with Flutter.
Learn how to set up a powerful local language model on your Mac in just 10 minutes, and integrate it directly into NeoVim for a seamless coding experience.
Flutter provides a large library of widgets dedicated to layout. Sometimes, even with this large choice, you can't implement your layout, or you could but it would become far too complex.
In this short article, I'm gonna share with you a few concrete use cases where pattern matching and records (introduced with Dart version 3) allowed me to refactor some of my code in a much shorter way!
Any mobile application developer encountered the difficulty of deploying his app to his customer's device. Being able to follow the advancement of developments is really important for a customer, and for you to track issues at the earliest stage possible.
Designing a user interface that adapts to various screen sizes is a challenge. In this article, I'll share some tips to create truly adaptative user interfaces.