
Inside the .claude Folder
A tutorial through rules, skills, agents, hooks, and settings
A hands-on tour of Claude Code's project folder. What rules, skills, agents, hooks, and settings each do, and how they fit together.
Thoughts on software development, testing, leadership, and building better teams. From technical deep-dives on TDD and refactoring to reflections on communication and growth. Whether you're a developer looking to level up your craft or a tech lead navigating team dynamics, you'll find practical insights here.
How to become a Senior Software Developer?
Embracing quality practices in your engineering culture
The human factor in the age of vibe-coding
Team Lead? Tech Lead? What is leadership and what is not?

A tutorial through rules, skills, agents, hooks, and settings
A hands-on tour of Claude Code's project folder. What rules, skills, agents, hooks, and settings each do, and how they fit together.

What happens when you give an AI a quest and get out of the way
A casual Telegram message turned into a nine-level Lord of the Rings browser game. Every line of code written by an AI agent. Every creative decision made by a human who grew up on Middle-earth.

Holding both ends of the rope
The tension between doing things right and getting things done shapes every decision in software and in life. TDD, pair programming, AI adoption: the best results come from holding both ends of the rope.

From solo assistant to coordinated workforce
Stop using AI as a single assistant. Organize agents into specialized teams with roles, docs, and parallel execution for real leverage.

Why context is the real superpower
MCP connects AI agents to your dev tools, databases, and APIs through a standard protocol. Give your agent the context it actually needs.

Blockchain, cryptography, and consensus
Transactions, blocks, mining, the UTXO model, and Lightning Network -- how Bitcoin actually works under the hood, explained in plain terms.

A beginner's guide to sound money
21 million cap, no central authority, permissionless and censorship-resistant. Bitcoin is digital money you truly own. No bank required.

The human factor in the age of vibe-coding
AI accelerates your output but doesn't ensure quality. You're responsible for every line you commit. Speed without direction is chaos.

A simple definition that changed how I live
Success is waking up knowing that what you do makes the people around you, and yourself, happier. No complex formula. Just consistency over perfection, and building habits that align with what matters.

Culture-Driven Collaboration at the speed of code
In fast-moving teams, one of the biggest tensions we face is this: How do we keep shipping without compromising quality or collaboration? The traditional approach to pull requests often slows things down. We wait hours—or days—for approvals, even for trivial changes. But the alternative—just merging directly—can feel reckless or invisible to the rest of the team. That's where the Ship-Show-Ask strategy comes in.

Take full control of your Lightning payments with Alby Hub
In this guide, I'll show you how to set up a fully custodial Lightning Network (LN) node using Alby Hub on a Raspberry Pi, giving you complete control over your node. Alby Hub offers a DIY free version for a self-custodial Lightning wallet, ensuring full ownership of your funds while being 100% open-source.

Where your money goes and how to rethink the system
Taxes are unavoidable. Whether it's your paycheck, morning coffee, or the house you just bought, taxes are everywhere. If you've ever wondered where your money goes after payday or why buying property comes with extra fees, this post is for you.

Pioneers of privacy in the digital age
In the early '90s, with the internet on the rise, a group called the Cypherpunks emerged to defend digital privacy. They pushed for encryption and privacy tech, shaping our digital world with their vision and ideals.

Boosting trust and security in your codebase
Sign your Git commits with GPG to prove they're really from you. Without signatures, anyone can fake commits using your email. It takes 5 minutes to set up and adds real trust to your codebase.

Turning frustrations into tools for better development
bashunit is a lightweight, easy-to-use testing framework for Bash, packed with handy features like parallel and snapshot testing, test doubles, data providers, and tons of built-in assertions. Backed by clear docs and an active community, it's become a favorite for reliable Bash testing. What started as a simple dev frustration has grown into an open-source tool that makes testing in Bash a lot easier and fun.

From code to collaboration
So, you're a software developer, and you've mastered coding languages, algorithms, and all the tech stuff. That's awesome! But here's the deal: technical skills alone won't get you as far as you might think. If you can't work well with others, it doesn't matter how great your code is — nobody will want to work with you.

What makes Waterfall a poor fit for modern software development?
Waterfall is like following a straight path where you move from one step to the next in a defined order — like water flowing down a waterfall through different stages. The problem is that each step can take a lot of time and resources to complete. Plus, you don't get feedback until the entire stage is finished, which can lead to a lot of wasted time. This is especially tricky in software development, where things are always changing and evolving.

How PGP secures your digital communication
PGP is an encryption program that ensures privacy and authentication for data communication. It is used for signing, encrypting, and decrypting texts, emails, files, directories, and whole disk partitions, enhancing the security of email communications.

The power of Bitcoin's Script
Bitcoin is often referred to as programmable money because it allows for the execution of programmable transactions through its scripting language, leveraging each bit for precision and functionality.

The dilemma of trust and self-interest
The Prisoner's Dilemma illustrates the complexities of strategic decision-making, where individuals must choose between cooperation and betrayal, often revealing insights into human behavior and the consequences of self-interest versus collective benefit.

Why Agile if you already do Scrum, Kanban, SAFe, or Waterfall?
Why Agile, if you already do Scrum, Kanban, SAFe, or Waterfall? How we manage an organization defines its quality. Excellent management is crucial to avoid the Waterfall trap if we aim to build an Agile environment. But why would we want that? What's wrong with the way we already work?

A horse racing emulator explained step by step
I wanted to learn a new programming language, so after trying some, I ended up with Golang as one of my favorites for its simplicity and capabilities. It has features I haven’t used in years, like multithreading and concurrency.

Embracing quality practices in your engineering culture
A practical guide to pair programming that works -- roles, rotation, when to pair, common pitfalls, and how to make sessions productive.

Why "should we not" deploy to production on Fridays?
I have heard multiple times, from various people, the idea of panic towards deploying on Fridays. How good is that idea of banning the day before weekend from delivering new value to our clients or customers?

A great engineer is not just a great coder
Coding is not just another job. In the right environment, writing software can be really fun and, even more, it can be your personal hobby as well! So... you might be focused on coding, coding and more coding to level up your own career skills.

Tuckman's Model to drive a team to high performance
Embarking on the path to high team performance involves understanding Tuckman's Model — a roadmap through the stages of forming, storming, norming, performing, and adjourning. In this blog post, we explore practical strategies for each stage, empowering leaders and team members to cultivate collaboration, manage conflicts, and achieve true synergy.

Testing private methods. When and how?
From time to time I have had to face this question: how to test private methods? I have put together in an article the techniques that I usually use.

Recognizing red flags of an unhealthy workplace
An unhealthy working environment can have various symptoms that negatively impact both the physical and mental well-being of employees.

The rise to a level of incompetence
The Peter principle states that a person who is competent at their job will earn a promotion to a position that requires different skills. If the promoted person lacks the skills required for the new role, they will be incompetent at the new level, and will not be promoted again.

How do you deal with people reluctant to change?
I was invited to the WeAreDevelopers World Congress to give a tech talk about my experience with Extreme Programming and the profound benefits of embracing change in your work and life.

Writing to help myself sleep
It is hard sometimes to get to bed with the mind blank because, more often than not, I think about my next reading, learning, talk, or what I will write this or next month.

An acceptance of powerlessness
Learned helplessness is the behavior exhibited by a subject after enduring repeated aversive beyond their control. It was initially thought to be caused by the subject's acceptance of their powerlessness by discontinuing attempts to escape or avoid the aversive stimulus.

How does it fit a dedicated QA person in your agile team?
This will be controversial, but let's talk about the QA position. The hidden truth behind the lack of software quality and why this should concern you if you write software.

How to introduce new technologies in your team
To introduce a new tech stack for the entire team, it's important to bring "why?" and a strategy to make it happen among the team because it will affect everyone.

How to find a balance of growth and happiness
Have you always been like this? Constantly reading books, writing blog posts, public speaker in conferences and meet-ups, learning in your private time, etc...? The short answer is: no, and let me tell you how I ended up in this situation.

Leadership starts within your own life and behaviour
As organizations grow, leaders must shift focus from customers to employees. Key principles for scaling leadership effectively.

Agile is about HOW you do certain things
My interview with devm.io regarding Agile and Extreme Programming. Agile is more about HOW you do certain things, rather than WHAT things you do.

Killing agility with excessive meetings
People become slaves to systems that are supposed to help. Boring meetings are killing agile. Meetings require active participation from everyone. Otherwise, you might not be essential to that meeting, and rather use your time with something else.

How can you work with other teams that aren't agile?
Let's assume you already know what the agile manifesto is. Let's consider that you apply most of the extreme programming values, principles, and practices. How can you work with other teams that aren't agile?

Some thoughts about software quality among your team
What to do when working on "bad software" and you can't improve it because it is against the beliefs of your peers? Should you change the company?

Team Lead? Tech Lead? What is leadership and what is not?
Leadership is action, not a title. It has nothing to do with management or hierarchy. What it really means and how anyone can lead.

Misunderstandings, effective communication, and self-reflection
One of the most complicated challenges for everyone is avoiding misunderstandings and being aware that other people don't think the same way as you do.

The Iron Triangle
A triangle of time, quality and cost. it's an indicator that these three parameters are interconnected. You can fix one or two of them, but not three.

How to become a Senior Software Developer?
Real seniority goes beyond job titles. It's about impact, mentoring others, owning outcomes, and raising the bar for your entire team.

Also known as the Law of triviality
Bikeshedding explains why teams waste time on trivial decisions while ignoring complex, important ones. Learn to recognize and avoid it.

Dunbar's number is a suggested cognitive limit to the number of people with whom one can maintain stable social relationships.

How can you help your peers to embrace the change?
Our profession is constantly evolving; therefore, it demands a non-stop learning process. Embracing the change is not optional in our software industry. We need to create spaces to get out of our comfort zone.

Milgram's experiment
Milgram was interested in researching how far people would go in obeying an instruction if it involved harming another person, and how easily people could be influenced into committing atrocities. For example, Germans in WWII.

It's an integration, not a choice
There are two known schools in TDD: the mockist school (aka Outside-in) and the classicist school (aka Inside-out).

Managing the two kinds of work
Blue Work and Red Work are concepts that David Marquet describes in his book 'Leadership is Language. Both require different mindsets and both have different languages.

Design or Workflow?
These are two different techniques. The key to each of them is about the mindset and context of what you want to achieve.

What is challenging about it?
TDD is a design practice, not just a testing technique. Writing tests first changes how you think about code and shape its structure.

It's not a promotion. It's a role change.
The Trident Career Model by Patrick Kua has three tracks. Each track represents where people spend most of their time or energy.

The uncomfortable truth about human nature
To what extent do social forces alter people's opinions? Which aspect of the group influence is most important — the size of the majority, or the unanimity of opinion?

The power of contributing to OSS 🖥
A practical guide to open-source software: its benefits, how to start contributing, and why sharing code accelerates your career growth.

Why choosing when you can have both?
Let's talk about the benefits of Pull Requests and Pair Programming, and my thoughts on these after some years of experience with them.

Who moved my cheese?🧀
The tale is a beautiful metaphor of the different attitudes that people adopt as part of their identity in life when they have to confront any change.

A new functional language with full interoperability with PHP
The new Functional Programming language build-in for PHP.

How to escape the mocking hell
Mocking is useful, but 'what to mock' usually turns out to be a more complicated than expected if you don't treat this carefully.

Another way of sharing quick suggestions with your team
Discover another way of sharing suggestions with your development team.

The spread operator to the rescue
Using array_merge inside a loop is a performance killer. The spread operator will help you to improve this by flatting the array.

An alternative to the missing feature in PHP: Generics
Argument unpacking, function variable argument list, and variadics function.

How to focus and have self-discipline
No goal should be an achievement on its own, but the process itself that helps us to go in the direction of these goals.

How to write proper tests to already written code
How to write characterization tests for legacy code to safely refactor without breaking existing behavior.

declare(strict_types=1);
Why declaring strict_types in PHP improves code readability and prevents silent type coercion bugs.

When, how, and why
If you see something, in the scope of your current task, that can be easily improved, improve it. And if you have any questions about it, ask.

Final, or not final, that's the question
Clear contracts, isolated side effects, testability, low complexity and cognitive load, code fluidity, and confidence in yourself.

From a software developer's point of view
Why you should consider testing as part of your daily development habit and how it's directly linked to the software quality.

Some tips to improve your communication skills
We have found ourselves attending a meeting that felt like we were wasting our time with a monologue that is either hard to follow or doesn't seem so interesting as it could. Let's fix this.