Categories
Note also, that DZone has syndicated over 120 of my articles.
- Source Control 63
 - Agile 54
 - Trunk-Based Development 44
 - Architecture & App Config 43
 - Dependency Injection 33
 - Pseudo-declarative UIs 31
 - Client-Side MVC 29
 - Quality Assurance 27
 - Continuous Delivery 24
 - DevOps 21
 - Monorepos 21
 - Configuration as Code 16
 - Our Merkleized Future 15
 - Content Management Systems 15
 - Branch by Abstraction, etc 15
 - Refactoring 13
 - Cookie Cutter Scaling 12
 - Continuous Integration 12
 - Micro-Frontends 10
 - Legacy Rejuvenation 9
 - Continuous Review 9
 - TCKs 9
 - Small Stories 8
 - Source-Control Backed 8
 - eXtreme Programming & Practices 7
 - Application Strangulation 7
 - Team Psychology 7
 - Service Virtualization 7
 - Googles Build System 6
 - Elastic Environment Provisioning 6
 - Expanding and Contracting Monorepos 6
 - Limits of Merging 6
 - UI Component Testing 6
 - Internet Plumbing, and Standards 5
 - Shift Left 5
 - Email Modernized 5
 - Software Patents 4
 - Theory Of Constraints 4
 - Behavior Driven Development 4
 - Teams & Hiring 4
 - Most Depended On & Least Depending 4
 - Persistence & NoSQL 4
 - Microcosm Environments 4
 - Test Impact Analysis 4
 - Software Diagrams 3
 - Architecture 3
 - Logging 2
 - Java6 committee participation 2
 - License Fees Double Dipping 2
 - Continuous Isolation 2
 - Serverless 2
 - Cloud Computing 1
 - Confluence JS Apps 1
 - Blockchains 1
 
Source Control
- January 19th, 2020 » VCS Nirvana
 - August 2nd, 2019 » Pull-Request dissatisfaction
 - July 21st, 2019 » Using Git In Business And Government
 - June 27th, 2019 » Merkle Trees Underpinning Civilization Going Forward
 - June 14th, 2019 » Merkle Trees and Source Control
 - June 11th, 2019 » Monorepos vs Megarepos
 - June 18th, 2016 » Subversion Merge Limitations That Are Not In Fossil
 - December 15th, 2015 » Branches should be for change of policy on the same source
 - October 5th, 2015 » Subversion Merge Limitations That Are Not In Perforce
 - September 29th, 2015 » Subversion Merge Limitations That Are Not In Mercurial
 - September 27th, 2015 » Subversion Merge Limitations That Are Not In Git
 - September 25th, 2015 » Subversion Merge Limitations
 - September 20th, 2015 » Extracting Subversion Branch Mappings
 - August 11th, 2015 » Source-Control that explicitly understands refactorings
 - August 10th, 2015 » Git becomes version-control's lingua franca wire protocol
 - July 30th, 2015 » Git storing unzipped office docs
 - May 2nd, 2015 » Scraping Leankit for analytics and pretty urls
 - February 14th, 2015 » I wish Subversion had a query language
 - February 14th, 2015 » Bash script to convert Subversion to Git
 - December 8th, 2014 » The rise of version control
 - November 13th, 2014 » Code Review - the unit of work should be a single commit
 - November 12th, 2014 » The Config Promotion Problem
 - October 28th, 2014 » Corporate File Sync: Agony and Ecstasy
 - October 20th, 2014 » Checking in binaries
 - August 27th, 2014 » Provisioning, Deployment and Application Config Cycles
 - August 12th, 2014 » Trunk supporting practices
 - July 30th, 2014 » GeoJSON mashups and GitHub
 - February 15th, 2014 » Application Architecture in the CD Era for Pro-Services teams
 - February 3rd, 2014 » Facebook Scaling Mercurial for Trunk-Based Development
 - January 10th, 2014 » Non-Continuous Reviews
 - January 8th, 2014 » Google's vs Facebook's Trunk-Based Development
 - January 8th, 2014 » Git's Lightweight Merging
 - January 6th, 2014 » Googlers Subset their Trunk
 - December 8th, 2013 » Continuous Review (con't)
 - December 5th, 2013 » Continuous Review
 - December 4th, 2013 » What is Your Branching Model?
 - November 20th, 2013 » Source Control is your new DR
 - November 19th, 2013 » Elastic Environments in Source-Control with Ansible
 - August 1st, 2013 » Elastic Provisioning of New Environments
 - April 29th, 2013 » Open Data backed by Source-Control
 - April 9th, 2013 » Scaling Trunk-Based Development
 - April 5th, 2013 » What is Trunk-Based Development?
 - April 2nd, 2013 » Maintained Divergence
 - March 19th, 2013 » The Cost of Unmerge
 - March 15th, 2013 » Article Syndication on GitHub via Subversion
 - March 13th, 2013 » Facebook's Trunk-Based Development (take 2)
 - March 11th, 2013 » Legacy App Rejuvenation
 - March 4th, 2013 » Trunk-Based Development at Facebook
 - February 14th, 2013 » Features I would love source control tools to have
 - January 29th, 2013 » Content Syndication using Source Control
 - January 8th, 2013 » Perforce as a datastore, with Client-Side MVC
 - January 2nd, 2013 » GitHub Pages as a CMS again
 - December 22nd, 2012 » SCM and Key-Value (Document) Store Convergence
 - December 5th, 2012 » Push or pull of config changes for a production stack
 - August 14th, 2012 » App Config using Git and Angular
 - August 10th, 2012 » It is time for a new take on Spreadsheets
 - August 2nd, 2012 » App-Help on the Cheap
 - July 10th, 2012 » Feature Toggles: App-config workflow using SCM
 - May 8th, 2011 » GitHub as a CMS to end CMSes
 - July 30th, 2008 » Project Documentation Thoughts
 - April 26th, 2007 » Introducing Branch By Abstraction
 - January 7th, 2007 » Cozmos- CMS using webdav and Sitemesh
 - June 11th, 2004 » Tools with Proprietary Source Control? Be Careful.
 
Agile
- April 13th, 2022 » More on Depth-first recursive vs DAG build technologies
 - April 8th, 2022 » Depth-first recursive vs DAG build technologies
 - February 12th, 2022 » A Tech Debt balance sheet
 - June 25th, 2020 » Fixed-price UpWork Contracts
 - March 12th, 2020 » Value Stream Mapping
 - November 20th, 2019 » Environment Hell
 - October 20th, 2019 » Quicker Local Maven Builds
 - October 12th, 2019 » Diagrams to help or hinder understanding
 - July 11th, 2019 » Tutorials vs Reference Docs vs Examples
 - July 24th, 2018 » Win-Win Vendor Contracts
 - September 1st, 2017 » Smalltalk Envy
 - August 28th, 2017 » BDD Acceptance Criteria Pay For Themselves Multiple Times
 - May 14th, 2017 » TodoMVC and given-when-then scenarios
 - April 7th, 2017 » Tech Debt - Balance Sheets
 - February 12th, 2017 » Shared-Nothing Builds
 - March 16th, 2016 » List of 5th Agile Values
 - December 19th, 2015 » The iron triangle is actually a square and not particularly iron
 - December 17th, 2015 » More on technology compatibility kits in app development
 - October 16th, 2015 » Using Mountebank to detach frontend and backend development
 - May 2nd, 2015 » Scraping Leankit for analytics and pretty urls
 - January 27th, 2015 » Detecting Redundant Tests
 - January 18th, 2015 » Reducing Test Times by Only Running Impacted Tests - Python Edition
 - January 11th, 2015 » Reducing Test Times by Only Running Impacted Tests - for Maven & Java
 - December 8th, 2014 » Service Orientated Strangulation
 - September 10th, 2014 » Throughput Over Backlog (a Fifth Agile Value)
 - September 1st, 2014 » Microcosm environments/deployments
 - August 12th, 2014 » Trunk supporting practices
 - May 10th, 2014 » Developer Delayed Development
 - April 29th, 2014 » Small Stories With Angular (case study)
 - March 14th, 2014 » Building Software Is Nothing Like Building H̶o̶u̶s̶e̶s̶ Buildings
 - February 28th, 2014 » Like a Used Sofa
 - October 17th, 2013 » A 'Small Stories' Case Study
 - September 19th, 2013 » Delaying non-functional stories
 - April 28th, 2013 » When Agile meets Angular and UX-led development
 - March 20th, 2013 » Reverse Engineering a DB for DevOps excellence
 - February 20th, 2013 » Continuous Delivery: Professionals vs. Amateurs
 - February 16th, 2013 » Misapplying Bayes-Theorem to Agile Versus Waterfall
 - November 12th, 2012 » Smaller Stories
 - November 7th, 2012 » Candidate Stories
 - November 1st, 2012 » Testability and Cost of Change
 - April 24th, 2012 » Call to Arms: Average Story Sizes of One Day
 - September 14th, 2010 » Another UI prototyping technique (for Agile teams)
 - September 7th, 2009 » Theory of Constraints and Agile
 - March 3rd, 2007 » Simple wars
 - July 19th, 2006 » Un-Agile Things
 - March 19th, 2005 » Agility Alliance
 - October 19th, 2004 » Ward on Dependency Injection
 - February 12th, 2004 » Legacy TDD - RPG is not always a role playing game
 - September 4th, 2003 » A declaration against Unit Tests
 - August 7th, 2003 » Early Practices.
 - July 28th, 2003 » Patterns
 - September 3rd, 2002 » JIT Software
 - August 12th, 2002 » Err away from rewrite
 
Trunk-Based Development
- August 17th, 2020 » GitLab hosted virtual TBD event - me being interviewed about my book
 - June 11th, 2019 » Monorepos vs Megarepos
 - May 23rd, 2018 » Examining CI, CD and branching models
 - October 30th, 2017 » Trunk, CI, Builds, Environments, and Integration
 - February 14th, 2017 » Pre-commit Continuous Integration infrastructure is cheaper than post-commit (for high throughput teams)
 - February 8th, 2017 » Further Experiments With Expanding/Contracting Monorepos
 - January 27th, 2017 » Maven In A Google Style Monorepo
 - February 15th, 2016 » CI, Breaking Builds, Bisecting, And Reverting
 - December 13th, 2015 » Trunk based development: when to branch for release
 - May 2nd, 2015 » So you think monolith is the only alternative to microservices
 - April 23rd, 2015 » The origins of Trunk-Based Development
 - December 8th, 2014 » Service Orientated Strangulation
 - December 6th, 2014 » Cross Platform - Sharing Code the Google Inbox way
 - November 14th, 2014 » Source Code Laundering
 - October 23rd, 2014 » Me Presenting on Trunk (etc) at the Perforce MERGE conference
 - October 20th, 2014 » Checking in binaries
 - September 29th, 2014 » Shades of Trunk-Based Development
 - September 24th, 2014 » A Functional Branch by Abstraction Case Study
 - August 12th, 2014 » Trunk supporting practices
 - April 10th, 2014 » Continuous Delivery: The price of admission..
 - April 3rd, 2014 » Microsoft's Trunk-Based Development
 - February 3rd, 2014 » Facebook Scaling Mercurial for Trunk-Based Development
 - January 14th, 2014 » Convincing Executives To Switch To Trunk-Based Development
 - January 10th, 2014 » Non-Continuous Reviews
 - January 8th, 2014 » Google's vs Facebook's Trunk-Based Development
 - January 8th, 2014 » Git's Lightweight Merging
 - January 6th, 2014 » Googlers Subset their Trunk
 - December 8th, 2013 » Continuous Review (con't)
 - December 5th, 2013 » Continuous Review
 - December 4th, 2013 » What is Your Branching Model?
 - August 1st, 2013 » Elastic Provisioning of New Environments
 - May 6th, 2013 » Google's Scaled Trunk-Based Development
 - April 28th, 2013 » When Agile meets Angular and UX-led development
 - April 9th, 2013 » Scaling Trunk-Based Development
 - April 5th, 2013 » What is Trunk-Based Development?
 - March 19th, 2013 » The Cost of Unmerge
 - March 13th, 2013 » Facebook's Trunk-Based Development (take 2)
 - March 11th, 2013 » Legacy App Rejuvenation
 - March 4th, 2013 » Trunk-Based Development at Facebook
 - November 29th, 2011 » Cookie Cutter Scaling
 - September 30th, 2011 » Branchable Continuous Integration
 - May 13th, 2011 » Avoiding 'Big Bang' for Branch By Abstraction
 - April 18th, 2011 » Binary Diffing for Increased Release Confidence
 - April 26th, 2007 » Introducing Branch By Abstraction
 
Architecture & App Config
- July 23rd, 2019 » Some Thoughts On Toggles
 - June 1st, 2019 » Modelling Architectures
 - January 31st, 2018 » An Ontology: Component vs Class vs Object vs Service vs Application vs Process vs Library, etc
 - November 2nd, 2017 » Step Aside Blockchains, Hashgraphs Are Giving Plain Merkle Trees A Turbo Boost
 - September 28th, 2017 » Choosing Between Blockchains And Vanilla Merkle Trees
 - September 23rd, 2017 » Wikis that use source-control for their backing store
 - July 29th, 2016 » Anvil app platform: using GitHub as a datastore
 - July 11th, 2016 » Anvil: Like MsAccess For The Web But With Git Coolness
 - June 10th, 2016 » New Enterprise Web-App Design Choices for 2016
 - July 13th, 2015 » How Google makes a consistent top-navigation across multiple apps
 - June 18th, 2015 » INI files for form templates
 - June 7th, 2015 » Custom JSON Editors for Github·com
 - May 2nd, 2015 » So you think monolith is the only alternative to microservices
 - December 8th, 2014 » The rise of version control
 - December 7th, 2014 » Monoliths, Cookie-Cutter or Microservices?
 - December 6th, 2014 » Cross Platform - Sharing Code the Google Inbox way
 - November 12th, 2014 » The Config Promotion Problem
 - November 9th, 2014 » To SOA or Not To SOA
 - August 27th, 2014 » Provisioning, Deployment and Application Config Cycles
 - August 12th, 2014 » Trunk supporting practices
 - February 15th, 2014 » Application Architecture in the CD Era for Pro-Services teams
 - October 23rd, 2013 » A lower technology style of Angular for the enterprise
 - October 12th, 2013 » Bad Java servlet apps
 - August 1st, 2013 » Elastic Provisioning of New Environments
 - January 8th, 2013 » Perforce as a datastore, with Client-Side MVC
 - November 20th, 2012 » Very Small Data
 - August 14th, 2012 » App Config using Git and Angular
 - August 2nd, 2012 » App-Help on the Cheap
 - July 10th, 2012 » Feature Toggles: App-config workflow using SCM
 - June 12th, 2012 » NoSQL for storage AND relational for reporting
 - February 6th, 2012 » Web-app model quandary
 - February 6th, 2012 » Previous Web Architectures
 - November 29th, 2011 » Cookie Cutter Scaling
 - November 22nd, 2011 » Google's accounts system - architectural meaning
 - September 21st, 2011 » A forgotten aspect of the Facade Pattern
 - September 1st, 2011 » Refactoring Experiment - 'least depending and most depended on' components first
 - August 6th, 2011 » Stitz's Five port rule for enterprise application dev
 - May 12th, 2006 » Very Simple Java interop with .Net over the wire without Web Services
 - October 19th, 2004 » Ward on Dependency Injection
 - March 25th, 2004 » Objects, Components, Services and Aspects
 - August 12th, 2002 » EJB not the holy grail
 
Dependency Injection
- October 12th, 2013 » Bad Java servlet apps
 - March 20th, 2013 » A Singleton Escape Plan
 - November 9th, 2010 » A Spring Framework Shortcoming
 - August 20th, 2010 » .Net Dependency Injection better practice
 - April 15th, 2009 » AppEngine's blind-spot
 - April 7th, 2009 » Google App Engine for Java with Rich Ruby clients
 - July 30th, 2008 » Releasing PicoContainer 2.5 and JRemoting
 - March 22nd, 2008 » What brought me to Inversion of Control in the first place ..
 - March 16th, 2008 » Crazy Bob and type safety for Dependency Injection
 - July 22nd, 2007 » Injecting into Servlets and undoing the stranglehold of web.xml
 - July 16th, 2007 » PicoConatiner 2.0 beta released
 - March 16th, 2007 » Waffle - Java web action framework with smallest lines of code count for action methods
 - May 8th, 2006 » My presentation on Dependency Injection versus Big Up-Front Architecture
 - January 27th, 2006 » NanoContainer Presentation
 - October 19th, 2004 » Ward on Dependency Injection
 - October 12th, 2004 » CDI Book
 - July 30th, 2004 » My OSCON PicoNirvana slideshow
 - June 5th, 2004 » PicoContainer 1.0 released (finally)
 - May 1st, 2004 » O'Reilly's OSCON speaker
 - April 20th, 2004 » Logging - just say no.
 - February 16th, 2004 » Can the next big language drop public static void main(String[] args) please?
 - January 24th, 2004 » Jesktop goes Pico
 - December 23rd, 2003 » NMock PicoCompatability
 - December 23rd, 2003 » Type3 rollout
 - December 5th, 2003 » My Inversion of Control Rocks article on JDJ.
 - October 16th, 2003 » Pico practices for .Net
 - October 16th, 2003 » .Net pitfalls
 - October 7th, 2003 » PicoContainer is non-threatening
 - September 17th, 2003 » App.config in C#
 - September 3rd, 2003 » Componentization
 - September 3rd, 2003 » Endianism in OSS
 - September 3rd, 2003 » Diversity
 - August 16th, 2003 » PicoContainer 1.0b1...
 
Pseudo-declarative UIs
- June 30th, 2025 » SwiftUI Component Testing with Appium & Test Harnesses
 - August 18th, 2018 » Flutter and UI Automation
 - April 8th, 2017 » Node.QML would have been the key to the Ubuntu Phones's success
 - November 15th, 2016 » QML's Squandered Opportunity
 - September 8th, 2015 » Decorators in the DOM
 - August 12th, 2015 » Making a very small MP3 player with QML
 - September 30th, 2014 » QML Becomes a Viable Mobile UI Framework Choice
 - September 22nd, 2014 » Cross-Platform Mobile Application Development
 - September 17th, 2014 » UI Development Has Never Been More Expensive
 - July 9th, 2014 » Browsing QML instead of HTML
 - June 14th, 2014 » Qt, QML, V-Play and multi-platform mobile
 - March 28th, 2013 » Interface Builder's Alternative Lisp timeline
 - February 11th, 2013 » Push or Pull Decorators
 - February 4th, 2013 » The Importance of the DOM
 - January 31st, 2013 » Application Development Glass Ceilings Revisited
 - January 12th, 2013 » RubyMotion in a declarative UI style
 - January 12th, 2013 » Categorizing Languages
 - January 11th, 2013 » QML and the new Ubuntu phone OS
 - April 15th, 2012 » Application Development Glass Ceilings
 - March 12th, 2012 » The Importance of Design-Mode for Client-Side MVC
 - September 12th, 2011 » What is Dart going to be?
 - September 26th, 2009 » Kinetic - Qt based Declarative UI (one to watch)
 - April 13th, 2009 » Shoes and Swiby - walking through the example RIA apps
 - April 7th, 2009 » Google App Engine for Java with Rich Ruby clients
 - October 13th, 2007 » Sweb 3.0
 - May 9th, 2007 » JavaFX Mobile is *just* SavaJE aquired by Sun
 - January 10th, 2006 » Ruby vs JavaScript for Web3.0
 - March 31st, 2004 » Thicky- like the web, but with a Groovy thick-client experience
 - February 16th, 2004 » Groovy - a convergence language
 
Client-Side MVC
- June 10th, 2016 » New Enterprise Web-App Design Choices for 2016
 - May 19th, 2013 » Coming to Angular from something else
 - April 28th, 2013 » When Agile meets Angular and UX-led development
 - March 6th, 2013 » A better Slideshow App, using Angular
 - February 15th, 2013 » Slideshow HTML App, using Angular
 - February 8th, 2013 » Angular Instead of Media-Queries
 - January 18th, 2013 » Client-Side MVC Roundup
 - January 8th, 2013 » Perforce as a datastore, with Client-Side MVC
 - January 6th, 2013 » Visualizing the Client-Side MVC race
 - October 31st, 2012 » Angular for Designers.
 - April 13th, 2012 » The Shift Towards Client-Side MVC
 - April 12th, 2012 » Performance Testing Knockout, Angular and Backbone with Selenium2
 - April 9th, 2012 » Testing Knockout and Angular with Selenium2
 - March 15th, 2012 » AngularJS and Selenium (Again)
 - March 12th, 2012 » The Importance of Design-Mode for Client-Side MVC
 - March 3rd, 2012 » Replacing JQuery With Angular
 - February 14th, 2012 » Client-Side MVC: browser plugins
 - February 13th, 2012 » Client-Side MVC frameworks compared
 - February 10th, 2012 » Client-Side-MVC applications : best practice (part 1)
 - February 8th, 2012 » The document is the single source of truth
 - February 6th, 2012 » Web-app model quandary
 - February 6th, 2012 » Previous Web Architectures
 - February 1st, 2012 » Angular and Selenium
 - February 1st, 2012 » Angular and DreamWeaver
 - January 29th, 2012 » (almost) No JavaScript prototyping with Angular in a single source file
 - January 23rd, 2012 » UI Technology Paradigm Shift
 - February 27th, 2011 » Introducing Story Navigator
 - September 28th, 2009 » Angular - HTML based Declarative UI (also one to watch)
 
Quality Assurance
- February 21st, 2015 » Playing With Sikuli For Desktop Automation
 - January 27th, 2015 » Detecting Redundant Tests
 - January 18th, 2015 » Reducing Test Times by Only Running Impacted Tests - Python Edition
 - January 11th, 2015 » Reducing Test Times by Only Running Impacted Tests - for Maven & Java
 - November 4th, 2014 » Selenium is Ten Years Old
 - October 23rd, 2013 » A lower technology style of Angular for the enterprise
 - August 31st, 2013 » WebDriver and AngularJS
 - August 28th, 2013 » Fluent Selenium with an Angular application
 - August 26th, 2013 » A different style of Fluent Selenium tests
 - May 19th, 2013 » Fluent Selenium Examples
 - November 1st, 2012 » Testability and Cost of Change
 - April 12th, 2012 » Performance Testing Knockout, Angular and Backbone with Selenium2
 - April 9th, 2012 » Testing Knockout and Angular with Selenium2
 - March 15th, 2012 » AngularJS and Selenium (Again)
 - February 1st, 2012 » Angular and Selenium
 - December 11th, 2011 » Sauce Labs: Tunnels or not?
 - November 14th, 2011 » Reporting Selenium2 (WebDriver) bugs
 - September 30th, 2011 » setContext(..) is back for Selenium2 :-P
 - September 23rd, 2011 » Automatic sequence diagrams from BDD-scenario executions
 - August 31st, 2011 » Contrasting Selenium 2 locator styles
 - August 4th, 2011 » Hiring Selenium QA people
 - March 14th, 2011 » I think it is time for QTP to die*
 - May 8th, 2006 » My presentation on Dependency Injection versus Big Up-Front Architecture
 - May 7th, 2005 » Selenium The Movie / Directors Cut
 - May 2nd, 2005 » Selenium: kick ass web testing for free
 - April 26th, 2005 » Selenium The Movie
 - April 28th, 2004 » WinRunner Best Practices
 
Continuous Delivery
- May 23rd, 2018 » Examining CI, CD and branching models
 - December 12th, 2017 » Dialing Up Your Application's Release Cadence
 - October 30th, 2017 » Trunk, CI, Builds, Environments, and Integration
 - September 17th, 2017 » The number of pre-production environments
 - June 17th, 2017 » Developers Activities Shouldn't Change With Proximity To Release Dates
 - April 1st, 2017 » Often forgotten must-haves for Continuous Delivery teams
 - September 17th, 2015 » Continuous Delivery, SaaS, robots, and license fees
 - July 30th, 2015 » All you can eat software licenses when doing Continuous Delivery
 - January 27th, 2015 » Detecting Redundant Tests
 - January 18th, 2015 » Reducing Test Times by Only Running Impacted Tests - Python Edition
 - January 11th, 2015 » Reducing Test Times by Only Running Impacted Tests - for Maven & Java
 - December 7th, 2014 » Monoliths, Cookie-Cutter or Microservices?
 - November 12th, 2014 » The Config Promotion Problem
 - September 1st, 2014 » Microcosm environments/deployments
 - August 27th, 2014 » Provisioning, Deployment and Application Config Cycles
 - August 12th, 2014 » Trunk supporting practices
 - April 10th, 2014 » Continuous Delivery: The price of admission..
 - February 15th, 2014 » Application Architecture in the CD Era for Pro-Services teams
 - January 14th, 2014 » Convincing Executives To Switch To Trunk-Based Development
 - March 19th, 2013 » The Cost of Unmerge
 - March 13th, 2013 » Facebook's Trunk-Based Development (take 2)
 - March 4th, 2013 » Trunk-Based Development at Facebook
 - February 20th, 2013 » Continuous Delivery: Professionals vs. Amateurs
 
DevOps
- October 15th, 2019 » Overtesting Endpoints
 - October 7th, 2018 » Conway's Observation
 - May 23rd, 2018 » Examining CI, CD and branching models
 - August 6th, 2017 » Environment Creation Times in Modern Teams
 - June 22nd, 2017 » An Aspect of DevOps Improvements: The Reduction of Cycle Times
 - March 26th, 2017 » Speedy builds using Service Virtualization (SV) explained in diagrams
 - March 25th, 2017 » Repositories vs release cadences
 - March 25th, 2017 » Engineering led companies
 - June 27th, 2015 » Scraping Github pull requests and their code review comments
 - September 1st, 2014 » Microcosm environments/deployments
 - April 10th, 2014 » Continuous Delivery: The price of admission..
 - November 20th, 2013 » Source Control is your new DR
 - November 19th, 2013 » Elastic Environments in Source-Control with Ansible
 - August 1st, 2013 » Elastic Provisioning of New Environments
 - April 9th, 2013 » Scaling Trunk-Based Development
 - April 5th, 2013 » What is Trunk-Based Development?
 - March 20th, 2013 » Reverse Engineering a DB for DevOps excellence
 - March 13th, 2013 » Facebook's Trunk-Based Development (take 2)
 - March 11th, 2013 » Legacy App Rejuvenation
 - March 4th, 2013 » Trunk-Based Development at Facebook
 - April 18th, 2011 » Binary Diffing for Increased Release Confidence
 
Monorepos
- June 11th, 2019 » Monorepos vs Megarepos
 - April 4th, 2017 » Benchmarking a Java/Maven monorepo
 - March 28th, 2017 » Monorepos with recursive or directed-graph build technologies?
 - March 25th, 2017 » Repositories vs release cadences
 - February 8th, 2017 » Further Experiments With Expanding/Contracting Monorepos
 - January 27th, 2017 » Maven In A Google Style Monorepo
 - February 15th, 2016 » CI, Breaking Builds, Bisecting, And Reverting
 - September 20th, 2015 » Extracting Subversion Branch Mappings
 - May 20th, 2015 » Turning Bazel back into Blaze for monorepo nirvana
 - April 23rd, 2015 » The origins of Trunk-Based Development
 - March 3rd, 2015 » Perforce gets its own DVCS
 - January 8th, 2015 » Omnipresent, Infallible, Omnipotent and Instantaneous Build Technologies
 - November 14th, 2014 » Source Code Laundering
 - October 23rd, 2014 » Me Presenting on Trunk (etc) at the Perforce MERGE conference
 - April 10th, 2014 » Continuous Delivery: The price of admission..
 - April 3rd, 2014 » Microsoft's Trunk-Based Development
 - January 8th, 2014 » Google's vs Facebook's Trunk-Based Development
 - January 6th, 2014 » Googlers Subset their Trunk
 - May 6th, 2013 » Google's Scaled Trunk-Based Development
 - April 9th, 2013 » Scaling Trunk-Based Development
 - April 5th, 2013 » What is Trunk-Based Development?
 
Configuration as Code
- July 23rd, 2019 » Some Thoughts On Toggles
 - December 19th, 2016 » Infrastructure versus Config as Code
 - July 29th, 2016 » Anvil app platform: using GitHub as a datastore
 - June 26th, 2016 » Using RhodeCode and Angular1 as an Editor for a 'Config as Code' System
 - June 18th, 2015 » INI files for form templates
 - June 7th, 2015 » Custom JSON Editors for Github·com
 - November 12th, 2014 » The Config Promotion Problem
 - September 8th, 2014 » Rules Engines Suck Too If They Are Not Backed By Source-Control
 - August 27th, 2014 » Provisioning, Deployment and Application Config Cycles
 - August 12th, 2014 » Trunk supporting practices
 - February 15th, 2014 » Application Architecture in the CD Era for Pro-Services teams
 - January 8th, 2013 » Perforce as a datastore, with Client-Side MVC
 - December 5th, 2012 » Push or pull of config changes for a production stack
 - August 14th, 2012 » App Config using Git and Angular
 - July 10th, 2012 » Feature Toggles: App-config workflow using SCM
 
Our Merkleized Future
- January 17th, 2023 » OCR-to-Hash: A Simple Audit Trail for Physical Documents
 - August 14th, 2022 » Merkleized Public Attestations
 - January 19th, 2020 » VCS Nirvana
 - July 21st, 2019 » Using Git In Business And Government
 - June 27th, 2019 » Merkle Trees Underpinning Civilization Going Forward
 - June 14th, 2019 » Merkle Trees and Source Control
 - August 6th, 2018 » Decentralize, Centralize or Somewhere In-Between?
 - May 30th, 2018 » Better practices for audits
 - November 2nd, 2017 » Step Aside Blockchains, Hashgraphs Are Giving Plain Merkle Trees A Turbo Boost
 - November 2nd, 2017 » Merkle Trees vs Blockchains vs Hashgraphs
 - September 28th, 2017 » Choosing Between Blockchains And Vanilla Merkle Trees
 - September 28th, 2017 » Blockchains in pictures
 - September 17th, 2017 » 'Old-School' Merkle Trees Rock
 - September 17th, 2017 » Merkle Trees In Pictures
 
Content Management Systems
- August 29th, 2014 » Nearly All CMS Technologies Suck
 - March 15th, 2013 » Article Syndication on GitHub via Subversion
 - February 24th, 2013 » Angular in a Jekyll Blog
 - February 8th, 2013 » Angular Instead of Media-Queries
 - January 6th, 2013 » The sorry state of the anti-software-patents movement
 - January 2nd, 2013 » GitHub Pages as a CMS again
 - August 2nd, 2012 » App-Help on the Cheap
 - July 16th, 2011 » New Blog Technology and Hosting
 - May 8th, 2011 » GitHub as a CMS to end CMSes
 - July 30th, 2008 » Project Documentation Thoughts
 - January 15th, 2007 » Cozmos gets Subversion backend
 - January 7th, 2007 » Cozmos- CMS using webdav and Sitemesh
 - December 7th, 2006 » An alternative to wikis
 - April 11th, 2005 » Content Editing Nirvana
 - June 11th, 2004 » Tools with Proprietary Source Control? Be Careful.
 
Branch by Abstraction, etc
- September 24th, 2014 » A Functional Branch by Abstraction Case Study
 - August 12th, 2014 » Trunk supporting practices
 - January 14th, 2014 » Convincing Executives To Switch To Trunk-Based Development
 - April 5th, 2013 » What is Trunk-Based Development?
 - March 19th, 2013 » The Cost of Unmerge
 - March 13th, 2013 » Facebook's Trunk-Based Development (take 2)
 - March 11th, 2013 » Legacy App Rejuvenation
 - March 4th, 2013 » Trunk-Based Development at Facebook
 - November 1st, 2012 » Testability and Cost of Change
 - July 10th, 2012 » Feature Toggles: App-config workflow using SCM
 - April 24th, 2012 » Call to Arms: Average Story Sizes of One Day
 - September 30th, 2011 » Branchable Continuous Integration
 - May 13th, 2011 » Avoiding 'Big Bang' for Branch By Abstraction
 - December 7th, 2010 » Branch By Abstraction Log Jam
 - April 26th, 2007 » Introducing Branch By Abstraction
 
Refactoring
- July 25th, 2016 » Java legacy hairball: refactoring case-study
 - May 8th, 2014 » TDD When You Can't Refactor
 - March 14th, 2014 » Building Software Is Nothing Like Building H̶o̶u̶s̶e̶s̶ Buildings
 - July 31st, 2013 » Some more on 'Strangulation inside Tomcat'
 - July 15th, 2013 » Legacy Java Applications: Strangulation inside Tomcat
 - July 14th, 2013 » Legacy Application Strangulation : Case Studies
 - March 20th, 2013 » A Singleton Escape Plan
 - March 20th, 2013 » Reverse Engineering a DB for DevOps excellence
 - March 11th, 2013 » Legacy App Rejuvenation
 - September 1st, 2011 » Refactoring Experiment - 'least depending and most depended on' components first
 - November 9th, 2010 » A Spring Framework Shortcoming
 
Cookie Cutter Scaling
- June 1st, 2019 » Modelling Architectures
 - October 7th, 2018 » Conway's Observation
 - December 11th, 2016 » Permissions for composite in-house webapps
 - July 13th, 2015 » How Google makes a consistent top-navigation across multiple apps
 - May 2nd, 2015 » So you think monolith is the only alternative to microservices
 - April 14th, 2015 » A lesser talked about feature of Microservices
 - December 7th, 2014 » Monoliths, Cookie-Cutter or Microservices?
 - November 9th, 2014 » To SOA or Not To SOA
 - April 9th, 2013 » Scaling Trunk-Based Development
 - November 29th, 2011 » Cookie Cutter Scaling
 - November 22nd, 2011 » Google's accounts system - architectural meaning
 
Continuous Integration
- May 23rd, 2018 » Examining CI, CD and branching models
 - December 12th, 2017 » Dialing Up Your Application's Release Cadence
 - October 30th, 2017 » Trunk, CI, Builds, Environments, and Integration
 - May 1st, 2017 » Scoring Continuous Integration
 - April 20th, 2017 » The definition of 'The Build' has changed over time
 - February 14th, 2017 » Pre-commit Continuous Integration infrastructure is cheaper than post-commit (for high throughput teams)
 - February 14th, 2017 » Fake News Via Continuous Isolation
 - February 12th, 2017 » Shared-Nothing Builds
 - February 15th, 2016 » CI, Breaking Builds, Bisecting, And Reverting
 - July 30th, 2015 » All you can eat software licenses when doing Continuous Delivery
 - November 5th, 2013 » Branchable CI with Thoughtworks' Snap
 - September 30th, 2011 » Branchable Continuous Integration
 
Micro-Frontends
- December 11th, 2016 » Permissions for composite in-house webapps
 - July 13th, 2015 » How Google makes a consistent top-navigation across multiple apps
 - May 2nd, 2015 » So you think monolith is the only alternative to microservices
 - April 14th, 2015 » A lesser talked about feature of Microservices
 - December 7th, 2014 » Monoliths, Cookie-Cutter or Microservices?
 - November 9th, 2014 » To SOA or Not To SOA
 - April 9th, 2013 » Scaling Trunk-Based Development
 - November 29th, 2011 » Cookie Cutter Scaling
 - November 22nd, 2011 » Google's accounts system - architectural meaning
 
Legacy Rejuvenation
- July 25th, 2016 » Java legacy hairball: refactoring case-study
 - December 8th, 2014 » Service Orientated Strangulation
 - March 14th, 2014 » Building Software Is Nothing Like Building H̶o̶u̶s̶e̶s̶ Buildings
 - July 31st, 2013 » Some more on 'Strangulation inside Tomcat'
 - July 15th, 2013 » Legacy Java Applications: Strangulation inside Tomcat
 - July 14th, 2013 » Legacy Application Strangulation : Case Studies
 - March 20th, 2013 » A Singleton Escape Plan
 - March 11th, 2013 » Legacy App Rejuvenation
 - April 26th, 2007 » Introducing Branch By Abstraction
 
Continuous Review
- February 14th, 2017 » Pre-commit Continuous Integration infrastructure is cheaper than post-commit (for high throughput teams)
 - December 15th, 2015 » Branches should be for change of policy on the same source
 - June 27th, 2015 » Scraping Github pull requests and their code review comments
 - November 13th, 2014 » Code Review - the unit of work should be a single commit
 - January 14th, 2014 » Convincing Executives To Switch To Trunk-Based Development
 - January 10th, 2014 » Non-Continuous Reviews
 - January 8th, 2014 » Google's vs Facebook's Trunk-Based Development
 - December 8th, 2013 » Continuous Review (con't)
 - December 5th, 2013 » Continuous Review
 
TCKs
- January 18th, 2021 » JBehave and Servirtium
 - April 23rd, 2020 » Servirtium use in a client and supplier co-development
 - June 14th, 2019 » TCKs and Servirtium
 - July 24th, 2018 » Win-Win Vendor Contracts
 - July 13th, 2018 » Another Graphic for Technology Compatibility Kits (TCKs)
 - March 26th, 2017 » Speedy builds using Service Virtualization (SV) explained in diagrams
 - February 5th, 2017 » Service Virtualization Strategies For Fast Builds
 - December 17th, 2015 » More on technology compatibility kits in app development
 - October 16th, 2015 » Using Mountebank to detach frontend and backend development
 
Small Stories
- July 24th, 2018 » Win-Win Vendor Contracts
 - June 22nd, 2017 » An Aspect of DevOps Improvements: The Reduction of Cycle Times
 - May 10th, 2014 » Developer Delayed Development
 - April 29th, 2014 » Small Stories With Angular (case study)
 - October 17th, 2013 » A 'Small Stories' Case Study
 - July 14th, 2013 » Legacy Application Strangulation : Case Studies
 - November 12th, 2012 » Smaller Stories
 - April 24th, 2012 » Call to Arms: Average Story Sizes of One Day
 
Source-Control Backed
- August 6th, 2018 » Decentralize, Centralize or Somewhere In-Between?
 - September 23rd, 2017 » Wikis that use source-control for their backing store
 - May 13th, 2017 » Alternative to Maven Central for Jar publishing (multiple Git repositories)
 - July 29th, 2016 » Anvil app platform: using GitHub as a datastore
 - July 11th, 2016 » Anvil: Like MsAccess For The Web But With Git Coolness
 - September 8th, 2014 » Rules Engines Suck Too If They Are Not Backed By Source-Control
 - August 29th, 2014 » Nearly All CMS Technologies Suck
 - November 20th, 2012 » Very Small Data
 
eXtreme Programming & Practices
- May 8th, 2014 » TDD When You Can't Refactor
 - November 1st, 2012 » Testability and Cost of Change
 - September 1st, 2011 » Refactoring Experiment - 'least depending and most depended on' components first
 - May 2nd, 2005 » Transparency
 - April 26th, 2005 » JMock crash course
 
Application Strangulation
- July 25th, 2016 » Java legacy hairball: refactoring case-study
 - December 8th, 2014 » Service Orientated Strangulation
 - January 14th, 2014 » Convincing Executives To Switch To Trunk-Based Development
 - July 31st, 2013 » Some more on 'Strangulation inside Tomcat'
 - July 15th, 2013 » Legacy Java Applications: Strangulation inside Tomcat
 - July 14th, 2013 » Legacy Application Strangulation : Case Studies
 - August 12th, 2002 » Err away from rewrite
 
Team Psychology
- April 4th, 2020 » Risk And Responsibility Should Be An Exchange
 - July 9th, 2017 » Alignment and Autonomy and Quorums
 - January 11th, 2016 » Predictive Index Stereotypes
 - July 27th, 2015 » Mavericks versus loose cannons
 - November 20th, 2014 » Strong Argumentative Positions
 - July 25th, 2011 » My Predictive Index
 - March 3rd, 2007 » Simple wars
 
Service Virtualization
- June 14th, 2019 » TCKs and Servirtium
 - March 26th, 2017 » Speedy builds using Service Virtualization (SV) explained in diagrams
 - February 13th, 2017 » Wire Mocking Without A Service Virtualization Framework
 - February 5th, 2017 » Service Virtualization Strategies For Fast Builds
 - February 5th, 2017 » A 16 Second Java Webapp Build (Including WebDriver Tests)
 - December 17th, 2015 » More on technology compatibility kits in app development
 - October 16th, 2015 » Using Mountebank to detach frontend and backend development
 
Googles Build System
- May 20th, 2015 » Turning Bazel back into Blaze for monorepo nirvana
 - January 8th, 2015 » Omnipresent, Infallible, Omnipotent and Instantaneous Build Technologies
 - October 23rd, 2014 » Me Presenting on Trunk (etc) at the Perforce MERGE conference
 - January 8th, 2014 » Google's vs Facebook's Trunk-Based Development
 - January 6th, 2014 » Googlers Subset their Trunk
 - May 6th, 2013 » Google's Scaled Trunk-Based Development
 
Elastic Environment Provisioning
- August 27th, 2014 » Provisioning, Deployment and Application Config Cycles
 - August 12th, 2014 » Trunk supporting practices
 - February 15th, 2014 » Application Architecture in the CD Era for Pro-Services teams
 - November 20th, 2013 » Source Control is your new DR
 - November 19th, 2013 » Elastic Environments in Source-Control with Ansible
 - August 1st, 2013 » Elastic Provisioning of New Environments
 
Expanding and Contracting Monorepos
- March 25th, 2017 » Repositories vs release cadences
 - February 8th, 2017 » Further Experiments With Expanding/Contracting Monorepos
 - January 27th, 2017 » Maven In A Google Style Monorepo
 - May 20th, 2015 » Turning Bazel back into Blaze for monorepo nirvana
 - January 8th, 2014 » Google's vs Facebook's Trunk-Based Development
 - January 6th, 2014 » Googlers Subset their Trunk
 
Limits of Merging
- June 18th, 2016 » Subversion Merge Limitations That Are Not In Fossil
 - October 5th, 2015 » Subversion Merge Limitations That Are Not In Perforce
 - September 29th, 2015 » Subversion Merge Limitations That Are Not In Mercurial
 - September 27th, 2015 » Subversion Merge Limitations That Are Not In Git
 - March 15th, 2014 » More On Git Merges
 - January 8th, 2014 » Git's Lightweight Merging
 
UI Component Testing
- June 30th, 2025 » SwiftUI Component Testing with Appium & Test Harnesses
 - June 25th, 2025 » NightWatch Component Testing and visual documentation
 - June 22nd, 2025 » Selenium Component Testing and visual documentation
 - June 20th, 2025 » Cypress Component Testing - Changing from Playwright for a demo repo
 - June 17th, 2025 » UI Component Testing Revisited: Modern Implementation with Visual Verification
 - February 1st, 2017 » UI Component Testing
 
Internet Plumbing, and Standards
- December 8th, 2010 » Extending the life of IPv4
 - November 1st, 2010 » Not-Path Cookies
 - February 22nd, 2010 » Cookies with regular expression paths
 - July 27th, 2006 » Did you send this - another weapon against spam?
 - September 5th, 2002 » SPAM
 
Shift Left
- March 12th, 2020 » Value Stream Mapping
 - October 23rd, 2014 » Me Presenting on Trunk (etc) at the Perforce MERGE conference
 - September 1st, 2014 » Microcosm environments/deployments
 - April 10th, 2014 » Continuous Delivery: The price of admission..
 - November 1st, 2012 » Testability and Cost of Change
 
Email Modernized
- April 4th, 2016 » Reducing My Robo-Emails To A Handful of Rollup Emails Every Few Minutes (IMAP Rewriting With Python)
 - September 3rd, 2015 » Resurrecting a small piece of Google Wave
 - May 4th, 2015 » Treating IMAP as a store: rewriting emails
 - October 27th, 2014 » The Pervasive Inbox
 - January 30th, 2014 » It is Time for Email Apps to Support (sandboxed) JavaScript
 
Software Patents
- April 27th, 2013 » What to do about the broken patent system
 - January 29th, 2013 » Content Syndication using Source Control
 - January 6th, 2013 » The sorry state of the anti-software-patents movement
 - March 3rd, 2005 » European Software Patent Spectre
 
Theory Of Constraints
- March 12th, 2020 » Value Stream Mapping
 - September 26th, 2016 » Visualizing the Theory of Constraints
 - November 12th, 2012 » Smaller Stories
 - September 7th, 2009 » Theory of Constraints and Agile
 
Behavior Driven Development
- September 23rd, 2011 » Automatic sequence diagrams from BDD-scenario executions
 - April 5th, 2011 » Running JBehave/WebDriver Tests on Sauce Labs' Service
 - March 14th, 2011 » I think it is time for QTP to die*
 - February 27th, 2011 » Introducing Story Navigator
 
Teams & Hiring
- January 17th, 2016 » Wishing For Improvements To Linkedin
 - July 27th, 2012 » Three Tier Resumes
 - August 9th, 2011 » No One Gives Themselves Bad Ratings (in hiring, apparently)
 - August 4th, 2011 » Hiring Selenium QA people
 
Most Depended On & Least Depending
- July 25th, 2016 » Java legacy hairball: refactoring case-study
 - December 8th, 2014 » Service Orientated Strangulation
 - March 11th, 2013 » Legacy App Rejuvenation
 - September 1st, 2011 » Refactoring Experiment - 'least depending and most depended on' components first
 
Persistence & NoSQL
- July 30th, 2014 » GeoJSON mashups and GitHub
 - January 8th, 2013 » Perforce as a datastore, with Client-Side MVC
 - November 20th, 2012 » Very Small Data
 - June 12th, 2012 » NoSQL for storage AND relational for reporting
 
Microcosm Environments
- September 17th, 2017 » The number of pre-production environments
 - August 6th, 2017 » Environment Creation Times in Modern Teams
 - February 12th, 2017 » Shared-Nothing Builds
 - September 1st, 2014 » Microcosm environments/deployments
 
Test Impact Analysis
- October 20th, 2019 » Quicker Local Maven Builds
 - January 27th, 2015 » Detecting Redundant Tests
 - January 18th, 2015 » Reducing Test Times by Only Running Impacted Tests - Python Edition
 - January 11th, 2015 » Reducing Test Times by Only Running Impacted Tests - for Maven & Java
 
Software Diagrams
- August 24th, 2017 » Another Architecture Diagram
 - December 14th, 2016 » The Principles of Containment
 - December 28th, 2015 » Architecture Diagrams
 
Architecture
- January 24th, 2024 » Infrastructure as Code DSLs
 - August 12th, 2022 » Principles of Containment in the DOM
 - December 14th, 2016 » The Principles of Containment
 
Logging
- April 20th, 2004 » Logging - just say no.
 - December 21st, 2002 » (Logwars restarted) Commons Logging.
 
Java6 committee participation
License Fees Double Dipping
- September 17th, 2015 » Continuous Delivery, SaaS, robots, and license fees
 - July 30th, 2015 » All you can eat software licenses when doing Continuous Delivery
 
Continuous Isolation
- August 21st, 2017 » A Cynical View Of Bonus Calculations
 - February 14th, 2017 » Fake News Via Continuous Isolation
 
Serverless
- June 13th, 2018 » Thinking About Serverless Again
 - October 25th, 2017 » A Serverless Sequence Diagram
 
Cloud Computing
- April 15th, 2009 » AppEngine's blind-spot
 
Confluence JS Apps
- May 30th, 2016 » Hacking Confluence With Javascript
 
Blockchains
- November 2nd, 2016 » Blockchains for patent filings