Blog.
My Apprenticeship
Pairing Tour: Day 8
The final day of the pairing tour, styling Android layouts in XML and learning to handle UI across varying screen sizes and orientations.

Pairing Tour: Day 7
Jumping into Android development paired with a Bluetooth device — learning to test with Robolectric and Mockito, and getting introduced to Screaming Architecture.

Pairing Tour: Day 6
Back to CoffeeScript, working on date-based user redirects and upgrading a dependency — a reminder that keeping up with dependencies has a cost.

Pairing Tour: Day 5
Spending the day creating presentation slides about Software Craftsmanship and the road to mastery: apprentice, journeyman, and master.

Pairing Tour: Day 4
A day of front-end CoffeeScript work, fixing a phone number formatting bug, and going down a rabbit hole setting up an Android emulator to reproduce a mobile issue.

Pairing Tour: Day 3
Back on the Clojure travel app for a productive day tackling autocomplete features and complex SQL JOIN queries using Korma.

Pairing Tour: Day 2
Day two of the pairing tour on a CoffeeScript and C# project, wrestling with a mysterious Jenkins build failure that passed locally.

Pairing Tour: Day 1
This week I started my Pairing Tour, pairing with various craftspeople on a Clojure travel app and picking up new tools along the way.

Fixing your History with Git Rebase
A practical guide to git rebase — from moving local commits to the branch head, to using interactive rebase to squash, reword, and clean up your commit history.

Web Security with HTTPS
A look at how HTTPS and SSL/TLS work under the hood — from the TCP handshake to certificate authorities — and why every web app handling sensitive data should use them.

Pair Programming Strategies
An overview of the two main pair programming styles — Ping-Pong and Driver-Navigator — and how to choose the right one depending on your team's experience level.

The Observer Pattern: To Observe Or Not To Observe
A walkthrough of the Observer design pattern — understanding Subjects and Observers, how they relate to MVC, and how to wire them together in a Java application.

Programming Paradigms? What's the deal with that?!
A comparison of imperative and functional programming paradigms — using Java and Clojure examples to explore mutability, expressions, and when each approach shines.

How I Tested A Web Server That I Built From Scratch
Lessons learned building an HTTP server in Java from scratch and testing it against the Cob Spec test suite — including when to write spike code and how to pick the right design patterns.

Getting Started Driving Your Code Through Tests
How following the three laws of TDD transformed my approach to writing software — leading to better design, testable code, and the confidence to refactor freely.

The Interface Segregation Principle: A SOLID Software Principle
The Interface Segregation Principle (ISP) is one of the 5 SOLID principles in Object-oriented software design, dealing with the problem of having "fat" interfaces that include too many methods.

The Interface Segregation Principle: A SOLID Software Principle
The Interface Segregation Principle (ISP) is one of the 5 SOLID principles in Object-oriented software design, dealing with the problem of having fat interfaces that include too many methods.

