Continuing Education
Current Reading
Proofs: A Long-Form Mathematics Textbook
Jay Cummings wrote Proofs with the goal of making mathematical education more accessible. His step-by-step examples help readers grok set theory, induction, proofs, relations, etc.
Proofs provides an excellent foundation for a computer science education.
MIT Opencourseware
I'm auditing MIT 6.006 (Introduction to Algorithms) to fill in my computer science gaps. The projects that excite me need developers who grok data structures and algorithms. That knowledge helps us build complex, efficient applications.
Recurring Reading
The Alphabetical Sayings of the Desert Fathers
The Desert Fathers of Christianity hold a special place in my heart.Their lessons of self-discipline, humility, perseverance, and not judging others help me not only as a developer, but as a human being. It is why I read some of their sayings at the beginning of each day, to center and focus me for the day ahead, with all the challenges it may bring.
Past Reading
Domain Driven Design with Golang
Working at Groundfloor introduced me to Domain Driven Design (DDD) in 2022. I wanted to dig deeper. Since Eric Evans wrote the Big Blue Book with classes in mind, a DDD book written specifically for Go developers interested me. Matt Boyle's book does just that, translating DDD concepts into idiomatic Go.
Kafka: The Definitive Guide
Kafka is a powerful tool with a host of challenges in store for the team that decides to use it.
Having now worked with Kafka for a little less than a year, I realize the need to have a deeper understanding of the technology.
Even if you're using something like Confluent to manage Kafka for you, this book provides a great foundation for how to build and maintain high performance and reliable Kafka producers and consumers.
Designing Distributed Systems
Helping build an event driven distributed systems showed me many of the gaps I have and infrastructure context I lacked. I decided to go through this book to remedy that.
So far, it has been a wonderful and practical survey of various ways to use containers and orchestration to build a variety of systems.
Learn Go with Tests
This is the book that taught me Test-Driven Development (TDD). Chris James begins with the basics of Go. He then goes step-by-step through the process of building a fully-functioning application. All throughout he teaches test-driven development. He points to best practices and anti-patterns to avoid. It remains my go-to recommendation for anyone interested in Go or TDD.
Concurrency in Go
Go is my favorite language for many reasons, but chief is how it handles concurrency. Given that, I thought it wise to dive deeper into that.
Katherine Cox-Buday has written an amazing introduction into Go's concurrency primitives (goroutines and
channels), libraries (sync
and conText
), and best practices.
This is definitely a book I'll be rereading in the future.
The Pragmatic Programmer
This book is filled with wisdom and best practices that any programmer can use to improve their craft and better provide value with the software they help create. Now that I've finished reading it, I'm slowly going back through it to really grok its lessons.