MCP: Giving Your AI Agent the Right Context
Why context is the real superpower
Model Context Protocol is reshaping how AI coding agents interact with your development environment. Understanding why it matters helps you use AI tools more effectively.
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.
Why context is the real superpower
Model Context Protocol is reshaping how AI coding agents interact with your development environment. Understanding why it matters helps you use AI tools more effectively.
Blockchain, cryptography, and consensus
How Bitcoin solves digital money: Transactions are signed with cryptographic keys, grouped into blocks through proof-of-work mining, and chained together via hashes. The network of nodes enforces rules without any central authority. This post covers the blockchain, UTXO model, mining mechanics, wallet security, network architecture, confirmation depth, incentive alignment, and Lightning Network.
A beginner's guide to sound money
What if your savings couldn't lose value to inflation? What if no one could freeze your account? Imagine money that can't be controlled by any government or bank. Bitcoin makes this possible: digital cash you truly own. Only 21 million will ever exist. No one can print more. It works 24/7 worldwide, secured by a global network instead of banks. Anyone can use it, anywhere, anytime. No permission needed. Your money, your rules.
The human factor in the age of vibe-coding
AI writes code fast but doesn't care about quality. Learn to prompt well, never accept code you don't understand, and remember: you own every line you commit. Speed without direction is just 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
Let's first establish what pair programming is: Two people working together on the same problem at the same time. It is not about one person showing off their skills in front of another, nor one person afraid of making mistakes due to an impostor syndrome.
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 business scales, the leaders' primary focus must shift from customers to employees. Therefore, I would like to share what I consider critical points that any leader should address and focus on regularly.
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 not a synonym for management, it has nothing to do with titles or personal attributes. So, what is it? How can we become leaders? And most importantly, why?
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?
The seniority in our software industry is more polluted by marketing and politics than in reality. What can we do about it?
Also known as the Law of triviality
People within an organization typically give disproportionate weight to trivial issues.
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?
The complexity here is not about writing tests itself, but the habits that we have to change to create software that is easy to be tested.
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 🖥
What is Open-Source Software (OSS)? What are their benefits? How can you start contributing to any OSS? Pet projects? Knowledge sharing? Why all of these?
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
These tests are also known as Characterization tests.
declare(strict_types=1);
`strict_types=1` is more for the reader than for the writer
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.