profile picture

59 pages tagged with "software"

The Cypherpunks

December 11, 2024

cover

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.

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. Who were the Cypherpunks? Philosophy and goals Impact nowadays Challenges and cr…

Verified git commits

November 17, 2024

blog-cover

When it comes to software development, trust and security are very important. One easy way to level up both is by using verified commits.

When it comes to software development, trust and security are very important. One easy way to level up both is by using verified commits. Whether you’re working on an open-source project or in a private company, verified commits can make sure your contributions are legit. Let’s break down what the…

bashunit

October 30, 2024

blog-cover

bashunit is a lightweight, easy-to-use testing framework for Bash. Features like parallel and snapshot testing, test doubles, data providers, and tons of built-in assertions.

bashunit is a lightweight, easy-to-use testing framework for Bash. 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 de…

People skills

September 02, 2024

blog-cover

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.

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…

Bitcoin: A Work in Progress

August 02, 2024

With thousands of “crypto” projects out there, they say Bitcoin is old and boring, but nothing could be further from the truth. This book will guide you through the latest developments in Bitcoin, as seen through the eyes of one of its many developers.

With thousands of “crypto” projects out there, they say Bitcoin is old and boring, but nothing could be further from the truth. This book will guide you through the latest developments in Bitcoin, as seen through the eyes of one of its many developers. You’ll learn about the latest soft fork known…

What is Waterfall?

August 01, 2024

blog-cover

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.

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 stag…

Programmable Money

July 06, 2024

blog-cover

Bitcoin is often referred to as “programmable money” because it allows for the execution of programmable transactions through its scripting language.

Bitcoin is often referred to as “programmable money” because it allows for the execution of programmable transactions through its scripting language. Understanding Programmable Money Programmable money is the ability to embed logic and conditions into financial transactions. This programmability al…

Mastering Bitcoin

July 05, 2024

This book covers everything from the basics to the most profound technical aspects of Bitcoin. It is an excellent guide through this complex world, providing the knowledge you need to participate in the Internet of money.

This book covers everything from the basics to the most profound technical aspects of Bitcoin. It is an excellent guide through this complex world, providing the knowledge you need to participate in the Internet of money. The first edition of this book was published in December 2014. Ten years lat…

The Phoenix Project

May 31, 2024

This is a story about an impossible project in which the people around are constantly playing politics, busy fixing critical bugs and wasting constant efforts on quick patches instead of helping the business thrive.

This is a story about an impossible project in which the people around are constantly playing politics, busy fixing critical bugs and wasting constant efforts on quick patches instead of helping the business thrive. If IT fails, the business fails. DevOps Principles: Flow, Feedback, and Continua…

What kills agility?

May 30, 2024

blog-cover

Dozens of documents and spreadsheets, meetings over meetings, and yet without much impact, result in team misalignments—realized too late.

Dozens of documents and spreadsheets, meetings over meetings, and yet without much impact, result in team misalignments—realized too late. 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…

Learning concurrency in Golang

April 02, 2024

blog-cover

I wanted to learn a new 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.

I wanted to learn a new 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. Golang (or Go) supports concurrency through lightweight threads called goroutines…

Effective pair programming

March 28, 2024

blog-cover

What is pair programming? Let’s first establish what pair programming is: Two people working together on the same problem at the same time.

What is pair programming? 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. Each person wil…

Deployments on Fridays

February 25, 2024

blog-cover

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?

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? The main argument in favor of NOT deploying on Friday is based on the idea that we “shoul…

Great engineering

December 30, 2023

blog-cover

Coding is not just another job. Writing software can be really fun and, even more, it can be your personal hobby as well! You might be focused on coding, coding and more coding to level up your own career skills.

Coding is not just another job. Writing software can be really fun and, even more, it can be your personal hobby as well! You might be focused on coding, coding and more coding to level up your own career skills. That itself is not bad at all! Practice makes the master, so a lot of coding will ine…

How to test private methods?

October 20, 2023

blog-cover

This is a question that I have encountered with some frequency for a long time. So I thought I would put together my thoughts on the subject here.

This is a question that I have encountered with some frequency for a long time. So I thought I would put together my thoughts on the subject here. Short answer Never. Long answer Never ever. What if…? If you really want to test a private method, consider extracting that private method logic into a…

Dedicated QA Teams in software?

May 17, 2023

blog-cover

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.

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. QA is a role, not a position As a software developer, when you write software, you are responsible for the quality of whateve…

Effective Remote Work

April 17, 2023
An effective remote work environment is about treating everyone as remote, with everyone in mind having the same level, equality, and information. Part 1 - Getting oriented for remote work It covers the foundation for a possible remote work environment. It seems a bit common sense nowadays, espec…

Introducing a new tech stack

April 14, 2023

blog-cover

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.

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. Why that new tech stack? To decide whether to use a new tech stack or not, remember that it is a team decision, according to the standar…

Accelerate

March 19, 2023
Accelerate explores how software development teams using Lean Software and DevOps can measure their performance and the performance of software engineering teams impacts the overall performance of an organization. Note: DevOps is about integrating and automating software development (Dev) and IT …

Ignoring Scrum to get more Agile?

December 06, 2022

blog-cover

Talking to a friend about agile, he asked me a fascinating question remarking how badly sometimes Agile and Scrum fit together, especially regarding meetings. These are my thoughts about this topic.

Talking to a friend about agile, he asked me a fascinating question remarking how badly sometimes Agile and Scrum fit together, especially regarding meetings. These are my thoughts about this topic. TL;DR: People become slaves to systems that are supposed to help. Boring meetings are killing agil…

Recipes for Decoupling

November 28, 2022
What is coupling, and why is it bad? What is decoupling, and how to do it efficiently? This book is a compilation of strategies to decouple your domain code from those infrastructure details, so you can enjoy a healthier system in the long run. This book will teach you how to create PHPStan rules …

Working agile with non-agile teams

November 11, 2022

blog-cover

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?

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? Individuals and interactions over processes and tools Working software over comprehen…

Different beliefs about software quality

October 08, 2022

blog-cover

I recently got a great question on Twitter which got me thinking for a while and I decided to share my thoughts about it.

I recently got a great question on Twitter which got me thinking for a while and I decided to share my thoughts about it. Context But first, some context: I am feeling great because the codebase where I work is getting better and better, so I am tweeting this: “As software improves with time, yo…

Continuous Discovery Habits

August 21, 2022
This book explores how product managers and designers can keep making a positive impact on their customers’ lives. It explores an optimal decision-making process for product teams, so that they can continue to improve their offerings. Part 1: What is continuous discovery? The What and Why of Cont…

Clean Craftsmanship

July 11, 2022
The book is divided into three parts: the disciplines, the standards, and the ethics. The 1st part is the most technical one. It guides you with TDD examples, showing how testing can help you to design your code. The 2nd part is about productivity, quality, and courage. The 3rd part is about how d…

Modern Software Engineering

June 29, 2022
This book presents software development as an engineering practice at every level. To master software engineering, we must become experts at learning and managing complexity. Optimize for learning To optimize for learning, the book presents five behaviors to consider: Working iteratively Feedback…

The path to seniority in software

June 08, 2022

blog-cover

We all have been junior developers at some point. This is easy to know because it is at the very beginning of your carrier. Your responsibilities were narrowed down by other peers who were looking after you.

We all have been junior developers at some point. This is easy to know because it is at the very beginning of your carrier. Your responsibilities were narrowed down by other peers who were looking after you. Suddenly, at some point, after some months or years, you got your promotion or another job…

Update your team to be more extreme

February 26, 2022

blog-cover

Our software profession is constantly evolving; it demands a non-stop learning process. We must embrace the change in our industry.

Our software profession is constantly evolving; it demands a non-stop learning process. We must embrace the change in our industry. We need to create spaces to get out of our comfort zone, so our cognitive brain can train and improve how to adapt to our surroundings, which are constantly transform…

London vs Chicago

November 20, 2021

blog-cover

There are two known schools in TDD: the mockist school (aka Outside-in) and the classicist school (aka Inside-out).

There are two known schools in TDD: the mockist school (aka Outside-in) and the classicist school (aka Inside-out). Why London and Chicago? Two companies, one from London and another from Chicago, claimed to do TDD, but they were focused on different aspects. The London company was building softwar…

TDD vs BDD

September 25, 2021

blog-cover

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

These are two different techniques. The key to each of them is about the mindset and context of what you want to achieve. BDD is a “test-driven feature” Basically, it’s a test-first driven development, where the main focus is ensuring the expected final behavior, and therefore the result of the sof…

Test-Driven (Development)

August 01, 2021

blog-cover

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.

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. The root of the problem Without (a solid) experience in testing, developers can have a hard time while trying to apply testing in general as part of their daily…

Responsibilities of a Tech Lead

July 01, 2021

blog-cover

The Trident Career Model by Patrick Kua has three tracks. Each track represents where people spend most of their time or energy.

The Trident Career Model by Patrick Kua has three tracks. Each track represents where people spend most of their time or energy. Archetypal Story Individual Contributor 70–80% time spent on “Executing, doing”. Designing. Testing. Coding. Management 70–80% time spent on “Managing the system”. Pla…

Become an Effective Software Engineering Manager

June 27, 2021

A great compilation of all topics that are important for management: 1:1s, performance reviews, hiring and laying off, workplace politics, remote work, and others.

The book is divided into 3 parts: the first part covers things a new manager should know, the second and third parts go into topics that all managers should master.

A great compilation of all topics that are important for management: 1:1s, performance reviews, hiring and laying off, workplace politics, remote work, and others. The book is divided into 3 parts: the first part covers things a new manager should know, the second and third parts go into topics tha…

Open-Source Software

May 03, 2021

blog-cover

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?

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? What is Open-Source Software (OSS)? What are their benefits? How can you start contributing to any OSS? Pet projects? Knowledge sharing? Why …

Phel: the Lisp that compiles to PHP

February 01, 2021

blog-cover

A new Functional Programming language build-in on the PHP ecosystem.

A new Functional Programming language build-in on the PHP ecosystem. The Phel Language Phel is a Functional Programming (FP) language that compiles to PHP. It is a dialect of Lisp inspired by Clojure and Janet. Features Built on PHP’s ecosystem Good error reporting Different Datastructures (Arrays…

To mock or not to mock

January 11, 2021

blog-cover

Mocking is useful, but “what to mock” usually turns out to be more complicated than expected if you don’t treat this carefully.

Mocking is useful, but “what to mock” usually turns out to be more complicated than expected if you don’t treat this carefully. How to escape the mocking hell What is actually happening when we create a mock? Which types of mocks are there? Is mocking good or bad? Well, as always, everything depend…

Sharing your git patches

December 01, 2020

blog-cover

Discover another way of sharing suggestions with your development team.

Discover another way of sharing suggestions with your development team. Imagine this situation You are reviewing a Pull Request (PR), and you see some minor improvements or suggestions that you would like to share with the author. You might write some comments, and usually, that would be sufficient…

Principles of package design

November 12, 2020
Apply design principles to your classes, preparing them for reuse. You will use package design principles to create packages that are just right in terms of cohesion and coupling, and are user- and maintainer-friendly at the same time. The first part of this book walks you through the five SOLID p…

Never use array_merge in a loop

November 10, 2020

blog-cover

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

Using array_merge inside a loop is a performance killer. The spread operator will help you to improve this by flatting the array. Flattening a one-level array I have seen people using the array_merge function in a loop like: <?php $lists = [ [1, 2], [3, 4], [5, 6], ]; $merged = []; foreach…

Typed arrays in PHP

October 13, 2020

blog-cover

Argument unpacking, function variable argument list, and variadics function.

Argument unpacking, function variable argument list, and variadics function. The perfect combination Argument unpacking: Instead of passing the argument itself to the function, the elements it contains will be passed (as individual arguments). Function variable argument list: The arguments will be…

Object design style guide

October 10, 2020

Objects are the central concept of languages like Java, Python, C#. Applying best practices for object design means that your code will be easy to read, write, and maintain.

This book captures dozens of techniques for creating pro-quality OO code that can stand the test of time.

Objects are the central concept of languages like Java, Python, C#. Applying best practices for object design means that your code will be easy to read, write, and maintain. This book captures dozens of techniques for creating pro-quality OO code that can stand the test of time. Examples are in an…

Domain-Driven Design Distilled

September 10, 2020

Domain-Driven Design Distilled brings DDD to life. Whether you’re a developer, consultant, or customer, it will help you understand it, so you can benefit from its power.

Domain-Driven Design Distilled brings DDD to life. Whether you’re a developer, consultant, or customer, it will help you understand it, so you can benefit from its power. This book delivers powerful results in practice, which is why developers worldwide are rapidly moving to adopt it. This is an …

Testing Effectively Legacy Code

August 17, 2020

blog-cover

These tests are also known as Characterization tests.

These tests are also known as Characterization tests. A characterization test describes the actual behavior of an existing piece of software, and therefore protects existing behavior of legacy code against unintended changes via automated testing. This term was coined by Michael Feathers. They e…

Advanced Web Application Architecture

August 16, 2020

This book helps you get your web applications back in shape. It contains many techniques for decoupling from infrastructure (like the framework or the database).

“The best guide that brings your coding and architecture skills a level up. All the modern PHP features combined with the elegance of a well-designed modular design.”

This book helps you get your web applications back in shape. It contains many techniques for decoupling from infrastructure (like the framework or the database). “The best guide that brings your coding and architecture skills a level up. All the modern PHP features combined with the elegance of a w…

Strict Types in PHP

August 09, 2020

blog-cover

In December 2015, PHP 7 introduced scalar type declarations and with it the strict types flag. What is this new feature?

In December 2015, PHP 7 introduced scalar type declarations and with it the strict types flag. What is this new feature? The good thing about declaring a PHP file as strict is that it actually applies to ONLY the current file. It ensures that this file has strict types, but it doesn’t apply to any…

The art of refactoring

June 28, 2020

blog-cover

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.

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. What is refactoring? Refactoring means improving your code. It can go from making a variable name more readable, extract some lines of code into a private m…

Final classes in PHP | Java | Any

June 06, 2020

blog-cover

Clear contracts, isolated side effects, testability, low complexity and cognitive load, code fluidity, and confidence in yourself.

Clear contracts, isolated side effects, testability, low complexity and cognitive load, code fluidity, and confidence in yourself. Motivation Reduce the scope visibility to the minimum When you see a class prefix with final you will prevent a particular class to be extended by any other, which not …

7 languages in 7 weeks

May 21, 2020
You should learn a programming language every year, as recommended by The Pragmatic Programmer. But if one per year is good, how about Seven Languages in Seven Weeks? In this book you’ll get a hands-on tour of Clojure, Haskell, Io, Prolog, Scala, Erlang, and Ruby. Whether your favorite language is…

The art of testing: where design meets quality

April 07, 2020

blog-cover

Why you should consider testing as part of your daily development habit and how it’s directly linked to the software quality.

Why you should consider testing as part of your daily development habit and how it’s directly linked to the software quality. This post intends not to explain the different testing techniques that we can use. I’m not going to tell you the differences between unit, integration, feature, or end-to-e…

Clean Agile

March 12, 2020
Clean Agile comes from Uncle Bob, one of the founding fathers of Agile, one of the seventeen people who authored the Agile Manifesto back in 2001. This talk is about Agile. What it was, what it is, and what it will be. This is a back-to-basics talk that covers the history of Agile, what motivated…

Extreme Programming Explained

March 05, 2020
Definition Extreme Programming (XP) is an agile software development framework that aims to produce higher quality software, and higher quality of life for the development team. XP is the most specific of the agile frameworks regarding appropriate engineering practices for software development. Va…

Symfony 5

February 20, 2020
This book, written by Symfony’s creator, lays out a pragmatic approach to developing web applications with Symfony 5: from scratch to production. Whether you are discovering Symfony for the first time or refreshing your knowledge, this practical guide provides the definitive introduction to modern…

Working Effectively with Legacy Code

July 01, 2019
What is legacy code? Legacy code is simply code without tests. Benefits of tests Behavior is central to understanding the benefits of testing: Behavior is the most important thing about software. It is what users depend on. Users like it when we add behavior (provided it is what they really want…

Clean Architecture

June 04, 2018
Code design principles (SOLID) Single Responsibility: a class should have one, and only one, reason to change. Or the new version: a module should be responsible to one, and only one, actor. Open-closed: a class should be open for extension but closed for modification. Liskov’s Substitution: objec…

The Pragmatic Programmer

October 01, 2016
Takeaways Don’t Repeat Yourself. Mindset is as important as knowledge. Good code is easier to change than bad design. Choose great tools and become fluent with them. Don’t Repeat Yourself (DRY) Every piece of knowledge must have a single, unambiguous, authoritative representation within a syste…

Sprint

September 01, 2016
“Sprint offers a transformative formula for testing ideas that works whether you’re at a startup or a large organization. Within five days, you’ll move from idea to prototype to decision, saving you and your team countless hours and countless dollars. A must read for entrepreneurs of all stripes.”…

The Clean Coder

August 01, 2016

Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals.

Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. Readers will learn What it means to behave as a true software craftsman How to d…

97 Things Every Programmer Should Know

July 15, 2016

Tap into the wisdom of experts to learn what every programmer should know, no matter what language you use. With the 97 short and extremely useful tips for programmers in this book, you’ll expand your skills by adopting new approaches to old problems, learning appropriate best practices, and honing your craft through sound advice.

Tap into the wisdom of experts to learn what every programmer should know, no matter what language you use. With the 97 short and extremely useful tips for programmers in this book, you’ll expand your skills by adopting new approaches to old problems, learning appropriate best practices, and honing…

Clean Code

May 01, 2016

Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way.

Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way. Summary Chapter 1: What Is Clean Code? The code can be me…