Topics
software-design

34 posts

Designing code that is easy to read, test, and replace.

Bitcoin with Rigor

Bitcoin with Rigor

A detailed analysis of how Bitcoin works, component by component, with its potential and its risks as a monetary experiment.

Bitcoin: A Work in Progress

Bitcoin: A Work in Progress

They say Bitcoin is old and boring. This book walks through its latest developments, seen by one of its own developers.

What Is Waterfall?

What Is Waterfall?

Waterfall moves through fixed stages and gives no feedback until each one ends. Why that clashes with how software really evolves.

Mastering Bitcoin

Mastering Bitcoin

From the basics to the deepest technical details of how Bitcoin works. The guide for taking part in the Internet of Money.

Learning Concurrency in Golang

Learning Concurrency in Golang

Learning Go for its simplicity, and meeting again things I had not used in years: multithreading, goroutines and concurrency.

Great Engineering

Great Engineering

Coding is not just another job. In the right environment it is fun, and even a hobby. On levelling up your craft on purpose.

How to Test Private Methods?

How to Test Private Methods?

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.

Introducing a New Tech Stack

Introducing a New Tech Stack

Introducing a new tech stack affects everyone, so it needs a clear why and a strategy the whole team can get behind.

Accelerate

Accelerate

The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations

Recipes for Decoupling

Recipes for Decoupling

What coupling is and why it hurts. A compilation of strategies to decouple your domain code from infrastructure details.

Modern Software Engineering

Modern Software Engineering

Dave Farley presents software development as engineering at every level: becoming expert at learning and managing complexity.

Modern CTO

Modern CTO

Joel Beasley maps the jagged transition from developer to CTO: the challenges, the lessons and the things worth avoiding.

London vs Chicago

London vs Chicago

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

TDD vs BDD

TDD vs BDD

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

Test-Driven (Development)

Test-Driven (Development)

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

Phel: The Lisp That Compiles to PHP

Phel: The Lisp That Compiles to PHP

The new Functional Programming language build-in for PHP.

To Mock or Not to Mock

To Mock or Not to Mock

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

Principles of package design

Principles of package design

Package design principles for classes ready to be reused: the right balance of cohesion and coupling, for users and maintainers.

Typed Arrays in PHP

Typed Arrays in PHP

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

Object design style guide

Object design style guide

Matthias Noback's practical guide to flexible, readable object-oriented code, useful in any OO language.

Domain-Driven Design Distilled

Domain-Driven Design Distilled

Vaughn Vernon brings DDD down to earth, so developers, consultants and customers can all benefit from its power.

Advanced Web Application Architecture

Advanced Web Application Architecture

Matthias Noback on levelling up your coding and architecture: modern PHP features with a genuinely modular design.

Strict Types in PHP

Strict Types in PHP

Why declaring strict_types in PHP improves code readability and prevents silent type coercion bugs.

The Art of Refactoring

The Art of Refactoring

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 Classes in PHP | Java | Any

Final Classes in PHP | Java | Any

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

7 languages in 7 weeks

7 languages in 7 weeks

A hands-on tour of Clojure, Haskell, Io, Prolog, Scala, Erlang and Ruby, and how differently each one thinks.

The Art of Testing: Where Design Meets Quality

The Art of Testing: Where Design Meets Quality

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

Clean Agile

Clean Agile

Back to basics on Agile: what it was, what motivated it, and what has happened to it since. Uncle Bob's account.

Working Effectively with Legacy Code

Working Effectively with Legacy Code

Michael Feathers on adding tests to untested code, breaking dependencies, and refactoring legacy systems safely.

Clean Architecture

Clean Architecture

Uncle Bob on SOLID, component design and the architectural boundaries that keep a system flexible and testable.

The Pragmatic Programmer

The Pragmatic Programmer

Key takeaways from Hunt and Thomas: DRY, the pragmatic mindset, and how to choose and master the tools of the trade.

97 Things Every Programmer Should Know

97 Things Every Programmer Should Know

97 short, practical tips from experts on what every programmer should know, whatever language you use.

Clean Code

Clean Code

Bad code works, but it drags a whole organization down. Uncle Bob on what clean code is and how to keep it that way.

Phel Lang

Phel, a functional Lisp that compiles to PHP. Persistent data structures, macros and a REPL, built on top of the PHP ecosystem.

Keyboard Shortcuts

Movement vim hjkl

hPrevious post← left
jScroll down↓ down
kScroll up↑ up
lNext post→ right
ggScroll to top
GScroll to bottom
nNext sectionnext heading
NPrevious sectionprevious heading

Go to g = go

ghHomego home
gbBloggo blog
grReadingsgo readings
gcCVgo cv

Actions

/⌘KSearchvim search
dToggle themedark mode
tToggle TOCtable of contents
iSwitch languagei18n
mToggle highlightmark text

General

?Show this help
EscClose
:Terminalvim command mode
↑↑↓↓←→←→BA???