Here are the the articles and videos I made last year. Key topics: user stories, refactoring, TDD, functional languages, and design.
I’ve grouped them into these areas:
- User Stories
- Refactoring
- Test-Driven Development
- Functional Languages and Design
- Reviews
- Miscellaneous Topics
- Videos
My favorites:
- “What is a User Story?” – An introduction to user stories, with emphasis on conversations and focus on the user.
- “TDD: Balancing Progress with Stability” – I want to go beyond the mechanical descriptions (“red-green-refactor”) to get at the principles and tensions underlying evolutionary design, with TDD as a way to support that.
- The Gerrymander Game: “Part 1, Puzzle” and “Part 2, TDD” – This was a fun project for me – it mixed political science, math, some challenging TDD, and some different data structures.
Want More? Have you found these articles useful or want more? * Sign up for updates, so you get notified when new articles come out. * Check out earlier articles. I added my 500th sometime this year! * Follow me on Mastodon, @billwake. * Follow me on Twitch for live-coding sessions. * Subscribe to my YouTube channel for archives of Twitch sessions and other videos. * Support me on Patreon. At $2/month, you get access to the archive of one-pagers and other bonus materials; at $5/month, you get entries in my ongoing “Coach Deck” series. * Reach out to via email, bill@xp123.com. I’d love to hear your questions, comments, and ideas! |
The articles below are generally in reverse chronological order. There is a little bit of duplication across categories.
User Stories
User stories provide a lightweight way to support whole-team interactions, and to support evolutionary development.
- Intensifying Stories with Limited Input
- Backroom/Frontroom to Smooth Releases
- What Is a User Story?
- User Stories and Quality Attributes
- All You Need is INVEST? No!
- Forgotten Stories
- Science-Intensive Apps: Handle with Care
- Half-Waterfall: Extra Cost, Uncertain Benefits
- Who is the Customer?
- 7+ Ways to Track User Stories
Refactoring
Refactoring is a systematic process of safely transforming code. I tend to explore refactorings that aren’t supported by tools.
- Loop Unrolling: While ⇒ If-While
- Refactoring and Programming Language Semantics
- Lambda for Control Structures, a Refactoring
- Extracting Parameterized Unit Tests
- Refactoring: Forcing the Right Extract Method
- Nested Loops to Functional Pipeline
- Wrapping a Type, All the Way
- Data Flow Analysis for Refactoring
- Revise Tests While Refactoring? It Depends
- Disaster Strikes! A Design Dead End
- Local Refactorings
Test-Driven Development (TDD)
Test-Driven Development is a way of developing software. I’m particularly happy with the “TDD Patterns” articles below, that explore TDD with different types of data structures across common situations.
- Example Parameterized Tests: Java, Kotlin, and Swift
- Extracting Parameterized Unit Tests
- Avoid Irrelevant Symmetry!
- Testing Objects and Relationships
- Reversible, Incremental Data Structures
- Authorization – TDD Patterns
- The Gerrymander Game – Part 1, Puzzle
- The Gerrymander Game – Part 2, TDD
- Input Validation – TDD Patterns
- Set-Like Objects – TDD Patterns
- Tree-Like Objects – TDD Patterns
- Errors and Exceptions – TDD Patterns
- Trailblaze and Pave – TDD Patterns
- TDD: Balancing Progress with Stability
- List-Like Objects – TDD Patterns
- Primitives, Products, and Sums – TDD Patterns
- Integers, Floats, and Partitions – TDD Patterns
- TDD is an Alchemy Trick: Points and Partitions
Functional Languages and Design
Functional languages have been around for years, but becoming much more popular lately.
- Immutable Objects
- Queues from Stacks: Functional Data Types
- Lambda to Reduce Coupling
- Lambda for Control Structures, a Refactoring
- Nested Loops to Functional Pipeline
- Reversible, Incremental Data Structures
- Limiting Beliefs About Evolutionary Design
Reviews
- Review: Operating System Principles
- Review: You Need a Budget
- Review: The Age of Surveillance Capitalism
Miscellaneous Topics
If you want more retro-coding, check out the Retro BASIC playlist.
- Learning with an Expert
- Ohio Scientific and Commodore 64 Environments
- Transliterating Old-School BASIC
- The Gerrymander Game – Part 1, Puzzle
- The Gerrymander Game – Part 2, TDD
Videos (Twitch / YouTube)
I’m on Twitch, Fridays and Sundays, 1-3pm US EST. The videos show up in YouTube a few weeks later.
- DNP – Dungeons and Patterns – Role-playing game written in Elm (40 episodes so far)
- Block – Building Blocks – Support library for transliterated old-school BASIC (Swift) (11 episodes)
- Swarm – Swarm Game – An old BASIC game transliterated to Swift (9 episodes)
- Top – Topple Top Simulator – Simulator of an LED top (Swift) (8 episodes)
- Shunt – Dijkstra’s Shunt-Yard Algorithm – Algorithm visualization in Swift (7 episodes)
- Rec – Towers of Hanoi Algorithm – Algorithm visualization in Swift (6 episodes)
- Elm – Elm Interpreter – written in Swift (50 episodes)