ENGINEERING

Exploring how
software systems
really work.

A place where I explore engineering fundamentals, understand the technology behind everyday systems and share what I learn along the way.

From fundamentals to real-world systems

HOW I APPROACH ENGINEERING

01

Understand

Start with the problem, requirements and constraints.

02

Design

Explore possible approaches and their trade-offs.

03

Build

Turn the design into something useful and reliable.

Improve

Learn from feedback, measure and refine the solution.

Good engineering starts with understanding the problem, not choosing the technology.

THE BOOKSHELF

Learning beyond the code.

A collection of books on programming, Java, distributed systems and software architecture that shape the way I think about engineering.

BOOK / 01Cover of Clean CodeSOFTWARE CRAFTSMANSHIP
Software Craftsmanship

Clean Code

Robert C. Martin

A perspective on writing readable, maintainable code and treating software development as a craft.

BOOK / 02Cover of Effective JavaJAVA ENGINEERING
Java Engineering

Effective Java

Joshua Bloch

Practical Java best practices, API design and making better use of the language.

BOOK / 03Cover of Java Concurrency in PracticeJAVA & CONCURRENCY
Java & Concurrency

Java Concurrency in Practice

Brian Goetz et al.

Thread safety, synchronization and the fundamentals of building concurrent Java applications.

BOOK / 04Cover of Designing Data-Intensive ApplicationsDISTRIBUTED SYSTEMS
Distributed Systems

Designing Data-Intensive Applications

Martin Kleppmann

Replication, partitioning, consistency and the principles behind reliable data systems.

BOOK / 05Cover of Building MicroservicesDISTRIBUTED ARCHITECTURE
Distributed Architecture

Building Microservices

Sam Newman

Service boundaries, communication patterns and the trade-offs involved in microservice architecture.

BOOK / 06Cover of Fundamentals of Software ArchitectureSOFTWARE ARCHITECTURE
Software Architecture

Fundamentals of Software Architecture

Mark Richards & Neal Ford

Architecture styles, architectural characteristics and making better technical decisions.

A growing collection of ideas, lessons and perspectives.

READ. REFLECT. BUILD.

THE APPROACH

Learn the fundamentals. Understand the trade-offs.

The goal isn't to collect technologies. It's to understand why things work, where they fail, and how engineering decisions affect the systems we build.

See what I've been building