Archive
My Software Development focussed blog entries from 2002 to today
2024
April
February
- 14th » That Ruby and Groovy Language Feature
- 14th » Redirect to Ruby & Groovy entry ^
- 8th » Flask and Static Files
January
- 24th » Infrastructure as Code DSLs
2023
May
February
2022
August
April
- 13th » More on Depth-first recursive vs DAG build technologies
- 8th » Depth-first recursive vs DAG build technologies
February
- 12th » A Tech Debt balance sheet
2021
October
April
February
- 19th » Software Development Current Reality Trees Starter Pack
- 16th » Embedded Tweets as SVGs
- 16th » Buildless SFC VueJS Applications
January
- 29th » A Purpose in a Token
- 28th » Dagging On Maven
- 18th » JBehave and Servirtium
- 9th » Personal phishing protection idea (voice calls)
2020
December
- 6th » Maven Central Meta Model
August
June
- 25th » Fixed-price UpWork Contracts
April
- 23rd » Servirtium use in a client and supplier co-development
- 4th » Risk And Responsibility Should Be An Exchange
March
- 12th » Value Stream Mapping
January
- 19th » VCS Nirvana
2019
November
- 20th » Environment Hell
October
- 20th » Quicker Local Maven Builds
- 15th » Overtesting Endpoints
- 12th » Diagrams to help or hinder understanding
August
July
- 23rd » Some Thoughts On Toggles
- 21st » Using Git In Business And Government
- 11th » Tutorials vs Reference Docs vs Examples
June
- 27th » Merkle Trees Underpinning Civilization Going Forward
- 14th » TCKs and Servirtium
- 14th » Merkle Trees and Source Control
- 11th » Monorepos vs Megarepos
- 1st » Modelling Architectures
2018
October
- 7th » Conway's Observation
August
July
June
May
April
January
- 31st » An Ontology: Component vs Class vs Object vs Service vs Application vs Process vs Library, etc
2017
December
November
- 23rd » Network Extortion is what you get when network neutrality is dropped
- 2nd » Step Aside Blockchains, Hashgraphs Are Giving Plain Merkle Trees A Turbo Boost
- 2nd » Merkle Trees vs Blockchains vs Hashgraphs
October
- 30th » Trunk, CI, Builds, Environments, and Integration
- 25th » A Serverless Sequence Diagram
- 22nd » Provenance and Code Grants
September
- 28th » Choosing Between Blockchains And Vanilla Merkle Trees
- 28th » Blockchains in pictures
- 23rd » Wikis that use source-control for their backing store
- 17th » The number of pre-production environments
- 17th » 'Old-School' Merkle Trees Rock
- 17th » Merkle Trees In Pictures
- 1st » Smalltalk Envy
August
- 28th » BDD Acceptance Criteria Pay For Themselves Multiple Times
- 24th » Another Architecture Diagram
- 21st » A Cynical View Of Bonus Calculations
- 6th » Environment Creation Times in Modern Teams
July
June
- 29th » Trying out UpWork for small programming jobs
- 22nd » An Aspect of DevOps Improvements: The Reduction of Cycle Times
- 17th » Developers Activities Shouldn't Change With Proximity To Release Dates
May
- 14th » TodoMVC and given-when-then scenarios
- 13th » Alternative to Maven Central for Jar publishing (multiple Git repositories)
- 1st » Scoring Continuous Integration
April
- 20th » The definition of 'The Build' has changed over time
- 19th » Buildless JavaScript solutions: collecting the examples on GitHub
- 8th » Node.QML would have been the key to the Ubuntu Phones's success
- 7th » Tech Debt - Balance Sheets
- 4th » Benchmarking a Java/Maven monorepo
- 1st » Often forgotten must-haves for Continuous Delivery teams
March
- 28th » Monorepos with recursive or directed-graph build technologies?
- 26th » Speedy builds using Service Virtualization (SV) explained in diagrams
- 25th » Repositories vs release cadences
- 25th » Engineering led companies
February
- 14th » Pre-commit Continuous Integration infrastructure is cheaper than post-commit (for high throughput teams)
- 14th » Fake News Via Continuous Isolation
- 13th » Wire Mocking Without A Service Virtualization Framework
- 12th » Shared-Nothing Builds
- 8th » Further Experiments With Expanding/Contracting Monorepos
- 5th » Service Virtualization Strategies For Fast Builds
- 5th » A 16 Second Java Webapp Build (Including WebDriver Tests)
- 1st » UI Component Testing
January
2016
December
- 19th » Infrastructure versus Config as Code
- 14th » The Principles of Containment
- 11th » Permissions for composite in-house webapps
November
- 21st » Incongruous experience with a portal of multiple Angular1 SPAs
- 15th » QML's Squandered Opportunity
- 2nd » Blockchains for patent filings
September
August
- 15th » Introducing 'git size' (command and visualization)
- 6th » Wishing Angular would support HTML5 dialogs better
July
- 29th » Anvil app platform: using GitHub as a datastore
- 25th » Java legacy hairball: refactoring case-study
- 11th » Anvil: Like MsAccess For The Web But With Git Coolness
- 2nd » SVG Slides and 'Tweening' in Javascript
June
- 26th » Using RhodeCode and Angular1 as an Editor for a 'Config as Code' System
- 20th » Angular's Looming Searchability Challenge
- 18th » Subversion Merge Limitations That Are Not In Fossil
- 10th » New Enterprise Web-App Design Choices for 2016
May
April
- 4th » Reducing My Robo-Emails To A Handful of Rollup Emails Every Few Minutes (IMAP Rewriting With Python)
March
February
- 15th » CI, Breaking Builds, Bisecting, And Reverting
- 13th » Because GitHub Decided I Had To: Convert From Textile To Markdown
January
- 17th » Wishing For Improvements To Linkedin
- 11th » Predictive Index Stereotypes
- 2nd » CORS vulnerabilities
2015
December
- 28th » Architecture Diagrams
- 21st » Angular and SVG and CouchDB (for an office seat map)
- 19th » The iron triangle is actually a square and not particularly iron
- 17th » More on technology compatibility kits in app development
- 15th » Branches should be for change of policy on the same source
- 13th » Trunk based development: when to branch for release
- 12th » Tooling is holding back dynamic languages
November
October
- 16th » Using Mountebank to detach frontend and backend development
- 5th » Subversion Merge Limitations That Are Not In Perforce
September
- 29th » Subversion Merge Limitations That Are Not In Mercurial
- 27th » Subversion Merge Limitations That Are Not In Git
- 25th » Subversion Merge Limitations
- 20th » Extracting Subversion Branch Mappings
- 17th » Continuous Delivery, SaaS, robots, and license fees
- 8th » Decorators in the DOM
- 3rd » Resurrecting a small piece of Google Wave
- 2nd » The buggy screen speaker in iOS
August
- 12th » Making a very small MP3 player with QML
- 11th » Source-Control that explicitly understands refactorings
- 10th » Git becomes version-control's lingua franca wire protocol
July
- 30th » Git storing unzipped office docs
- 30th » All you can eat software licenses when doing Continuous Delivery
- 27th » Mavericks versus loose cannons
- 13th » How Google makes a consistent top-navigation across multiple apps
June
- 27th » Scraping Github pull requests and their code review comments
- 18th » INI files for form templates
- 7th » Custom JSON Editors for Github·com
May
- 20th » Turning Bazel back into Blaze for monorepo nirvana
- 4th » Treating IMAP as a store: rewriting emails
- 2nd » So you think monolith is the only alternative to microservices
- 2nd » Scraping Leankit for analytics and pretty urls
April
- 29th » MVC: misunderstood for 37 years
- 23rd » The origins of Trunk-Based Development
- 14th » A lesser talked about feature of Microservices
March
- 20th » JIRA static extract script
- 3rd » Perforce gets its own DVCS
February
- 21st » Playing With Sikuli For Desktop Automation
- 14th » I wish Subversion had a query language
- 14th » Bash script to convert Subversion to Git
January
- 27th » Detecting Redundant Tests
- 18th » Reducing Test Times by Only Running Impacted Tests - Python Edition
- 11th » Reducing Test Times by Only Running Impacted Tests - for Maven & Java
- 8th » Omnipresent, Infallible, Omnipotent and Instantaneous Build Technologies
- 6th » Farewell 2014, farewell ThoughtWorks
2014
December
- 15th » Scraping DZone Syndication Stats
- 8th » The rise of version control
- 8th » Service Orientated Strangulation
- 7th » Monoliths, Cookie-Cutter or Microservices?
- 6th » Cross Platform - Sharing Code the Google Inbox way
November
- 20th » Strong Argumentative Positions
- 14th » Source Code Laundering
- 13th » Code Review - the unit of work should be a single commit
- 12th » The Config Promotion Problem
- 9th » To SOA or Not To SOA
- 4th » Selenium is Ten Years Old
October
- 30th » Angular Commit Bubbles
- 28th » Corporate File Sync: Agony and Ecstasy
- 27th » The Pervasive Inbox
- 23rd » Me Presenting on Trunk (etc) at the Perforce MERGE conference
- 20th » Checking in binaries
September
- 30th » QML Becomes a Viable Mobile UI Framework Choice
- 29th » Shades of Trunk-Based Development
- 24th » A Functional Branch by Abstraction Case Study
- 22nd » Cross-Platform Mobile Application Development
- 17th » UI Development Has Never Been More Expensive
- 10th » Throughput Over Backlog (a Fifth Agile Value)
- 8th » Rules Engines Suck Too If They Are Not Backed By Source-Control
- 1st » Microcosm environments/deployments
August
- 29th » Nearly All CMS Technologies Suck
- 27th » Provisioning, Deployment and Application Config Cycles
- 12th » Trunk supporting practices
- 7th » Text streams should be the fallback interface in Unix
July
- 30th » GeoJSON mashups and GitHub
- 9th » Browsing QML instead of HTML
June
- 14th » Qt, QML, V-Play and multi-platform mobile
- 13th » Apple Dissatisfaction
- 3rd » Bytedeco: A Portal Dedicated To Calling C++ Libraries From Java
May
- 26th » Joe Walnes On Successful Open Source
- 10th » Developer Delayed Development
- 8th » TDD When You Can't Refactor
April
- 29th » Small Stories With Angular (case study)
- 10th » Continuous Delivery: The price of admission..
- 3rd » Microsoft's Trunk-Based Development
March
- 15th » More On Git Merges
- 14th » Building Software Is Nothing Like Building H̶o̶u̶s̶e̶s̶ Buildings
- 7th » OmniGraffle SVG to Angular-HTML Workflow
February
- 28th » Like a Used Sofa
- 26th » More Angular Inside SVG Inside HTML
- 21st » Angular Inside SVG Inside HTML
- 20th » SVG Support in Browsers Today
- 15th » Application Architecture in the CD Era for Pro-Services teams
- 7th » JetBrains IDEs - Their Best Feature Is Control-W
- 3rd » Facebook Scaling Mercurial for Trunk-Based Development
January
- 30th » It is Time for Email Apps to Support (sandboxed) JavaScript
- 14th » Convincing Executives To Switch To Trunk-Based Development
- 10th » Non-Continuous Reviews
- 8th » Google's vs Facebook's Trunk-Based Development
- 8th » Git's Lightweight Merging
- 6th » Googlers Subset their Trunk
- 4th » Browser Downloads Suck
2013
December
- 15th » Worst Practices Teams
- 8th » Continuous Review (con't)
- 5th » Continuous Review
- 4th » What is Your Branching Model?
November
- 20th » Source Control is your new DR
- 19th » Elastic Environments in Source-Control with Ansible
- 5th » Branchable CI with Thoughtworks' Snap
October
- 23rd » A lower technology style of Angular for the enterprise
- 17th » A 'Small Stories' Case Study
- 12th » Bad Java servlet apps
September
August
- 31st » WebDriver and AngularJS
- 28th » Fluent Selenium with an Angular application
- 26th » A different style of Fluent Selenium tests
- 1st » Elastic Provisioning of New Environments
July
- 31st » Some more on 'Strangulation inside Tomcat'
- 15th » Legacy Java Applications: Strangulation inside Tomcat
- 14th » Legacy Application Strangulation : Case Studies
May
- 19th » Fluent Selenium Examples
- 19th » Coming to Angular from something else
- 7th » Android and The Art of War
- 6th » Google's Scaled Trunk-Based Development
April
- 29th » Open Data backed by Source-Control
- 28th » When Agile meets Angular and UX-led development
- 27th » What to do about the broken patent system
- 9th » Scaling Trunk-Based Development
- 5th » What is Trunk-Based Development?
- 2nd » Maintained Divergence
March
- 28th » Interface Builder's Alternative Lisp timeline
- 20th » A Singleton Escape Plan
- 20th » Reverse Engineering a DB for DevOps excellence
- 19th » The Cost of Unmerge
- 15th » Article Syndication on GitHub via Subversion
- 13th » Facebook's Trunk-Based Development (take 2)
- 11th » Legacy App Rejuvenation
- 6th » A better Slideshow App, using Angular
- 4th » Trunk-Based Development at Facebook
February
- 24th » Angular in a Jekyll Blog
- 20th » Continuous Delivery: Professionals vs. Amateurs
- 16th » Misapplying Bayes-Theorem to Agile Versus Waterfall
- 15th » Slideshow HTML App, using Angular
- 14th » Features I would love source control tools to have
- 11th » Push or Pull Decorators
- 8th » Angular Instead of Media-Queries
- 4th » The Importance of the DOM
January
- 31st » Application Development Glass Ceilings Revisited
- 30th » Lotus Notes vs CouchDB
- 29th » Content Syndication using Source Control
- 18th » Client-Side MVC Roundup
- 12th » RubyMotion in a declarative UI style
- 12th » Categorizing Languages
- 11th » QML and the new Ubuntu phone OS
- 8th » Perforce as a datastore, with Client-Side MVC
- 6th » Visualizing the Client-Side MVC race
- 6th » The sorry state of the anti-software-patents movement
- 2nd » GitHub Pages as a CMS again
2012
December
- 22nd » SCM and Key-Value (Document) Store Convergence
- 5th » Push or pull of config changes for a production stack
November
- 20th » Very Small Data
- 12th » Smaller Stories
- 7th » Candidate Stories
- 1st » Testability and Cost of Change
October
- 31st » Angular for Designers.
August
- 14th » App Config using Git and Angular
- 10th » It is time for a new take on Spreadsheets
- 2nd » App-Help on the Cheap
July
June
April
- 24th » Call to Arms: Average Story Sizes of One Day
- 15th » Application Development Glass Ceilings
- 13th » The Shift Towards Client-Side MVC
- 12th » Performance Testing Knockout, Angular and Backbone with Selenium2
- 9th » Testing Knockout and Angular with Selenium2
March
- 15th » AngularJS and Selenium (Again)
- 12th » The Importance of Design-Mode for Client-Side MVC
- 3rd » Replacing JQuery With Angular
February
- 14th » Client-Side MVC: browser plugins
- 13th » Client-Side MVC frameworks compared
- 10th » Client-Side-MVC applications : best practice (part 1)
- 8th » The document is the single source of truth
- 6th » Web-app model quandary
- 6th » Previous Web Architectures
- 1st » Angular and Selenium
- 1st » Angular and DreamWeaver
January
- 29th » (almost) No JavaScript prototyping with Angular in a single source file
- 23rd » UI Technology Paradigm Shift
2011
December
- 11th » Sauce Labs: Tunnels or not?
November
- 29th » Cookie Cutter Scaling
- 22nd » Google's accounts system - architectural meaning
- 14th » Reporting Selenium2 (WebDriver) bugs
October
- 21st » Locked US iPhones suck
- 12th » Mozilla are screwing corporate adopters with their numbering scheme
September
- 30th » setContext(..) is back for Selenium2 :-P
- 30th » Branchable Continuous Integration
- 23rd » Automatic sequence diagrams from BDD-scenario executions
- 21st » A forgotten aspect of the Facade Pattern
- 12th » What is Dart going to be?
- 1st » Refactoring Experiment - 'least depending and most depended on' components first
August
- 31st » Contrasting Selenium 2 locator styles
- 9th » No One Gives Themselves Bad Ratings (in hiring, apparently)
- 6th » Stitz's Five port rule for enterprise application dev
- 4th » Hiring Selenium QA people
July
- 25th » My Predictive Index
- 16th » New Blog Technology and Hosting
May
April
- 18th » Binary Diffing for Increased Release Confidence
- 5th » Running JBehave/WebDriver Tests on Sauce Labs' Service
- 3rd » Playing with Mobl in two minutes or less
March
February
- 27th » Introducing Story Navigator
2010
December
November
- 9th » A Spring Framework Shortcoming
- 2nd » Two issues I have with the GPL
- 1st » Not-Path Cookies
September
- 14th » Another UI prototyping technique (for Agile teams)
- 6th » Angular - new Perl backend by Dobrica Pavlinušić
August
February
2009
September
- 28th » Angular - HTML based Declarative UI (also one to watch)
- 26th » Kinetic - Qt based Declarative UI (one to watch)
- 7th » Theory of Constraints and Agile
June
- 19th » AAW platform is awesome
April
- 15th » AppEngine's blind-spot
- 13th » Shoes and Swiby - walking through the example RIA apps
- 7th » Google App Engine for Java with Rich Ruby clients
March
2008
July
June
March
- 22nd » What brought me to Inversion of Control in the first place ..
- 16th » Crazy Bob and type safety for Dependency Injection
2007
October
- 13th » Sweb 3.0
July
- 22nd » Injecting into Servlets and undoing the stranglehold of web.xml
- 16th » PicoConatiner 2.0 beta released
May
April
March
- 16th » Waffle - Java web action framework with smallest lines of code count for action methods
- 14th » Announcing Paranamer; an open source answer to the dropping of parameter name access from Java6
- 3rd » Simple wars
January
2006
December
- 7th » An alternative to wikis
July
- 30th » At least one unilateral improvement to Java
- 27th » Short, social, OSCON notes.
- 27th » Did you send this - another weapon against spam?
- 19th » Un-Agile Things
June
- 19th » Derby's arrival in Java 6 surprises me too (and I'm a Java 6 committee member)
- 14th » Using XStream to forward JSON to a browser
May
- 21st » Using XStream to process standardized XML documents
- 12th » Very Simple Java interop with .Net over the wire without Web Services
- 8th » My presentation on Dependency Injection versus Big Up-Front Architecture
- 6th » Parameter names for Java 6 (Mustang) answer
- 6th » iSights, magnets, Powerbooks and tripods.
March
January
- 27th » NanoContainer Presentation
- 10th » Ruby vs JavaScript for Web3.0
2005
May
- 7th » Selenium The Movie / Directors Cut
- 2nd » Transparency
- 2nd » Selenium: kick ass web testing for free
April
- 26th » Selenium The Movie
- 26th » JMock crash course
- 11th » Content Editing Nirvana
March
- 19th » Agility Alliance
- 3rd » European Software Patent Spectre
2004
October
- 19th » Ward on Dependency Injection
- 17th » txt2tags - good for books
- 12th » CDI Book
July
June
- 11th » Tools with Proprietary Source Control? Be Careful.
- 5th » PicoContainer 1.0 released (finally)
May
- 1st » O'Reilly's OSCON speaker
April
- 28th » WinRunner Best Practices
- 22nd » Identity Card - Identity Harvesting?
- 22nd » Source Control Best Practices- A must read for developers
- 20th » Logging - just say no.
- 16th » My Lotus Notes Shame
March
- 31st » Thicky- like the web, but with a Groovy thick-client experience
- 25th » Objects, Components, Services and Aspects
February
- 16th » Groovy - a convergence language
- 16th » Can the next big language drop public static void main(String[] args) please?
- 12th » NanoContainer beta soon
- 12th » Legacy TDD - RPG is not always a role playing game
January
- 24th » Jesktop goes Pico
2003
December
- 23rd » NMock PicoCompatability
- 23rd » Type3 rollout
- 5th » XStream transport for AltRMI
- 5th » My Inversion of Control Rocks article on JDJ.
- 3rd » Eyeball Unit
November
- 10th » Enterprise Object Broker 1.1
October
- 25th » Rhino - Static Struggle
- 16th » Pico practices for .Net
- 16th » .Net pitfalls
- 7th » Core Developers Training Sessions
- 7th » PicoContainer is non-threatening
- 2nd » Gui Development Costs
September
- 26th » Aslak Shadow-Boxing at JAOO
- 24th » xOP
- 23rd » Aslak watch- I am not a girl.
- 22nd » Aslak- Wiki advice to Ward Cunningham
- 17th » App.config in C#
- 17th » LegoSexMS(tm)
- 6th » Hibernate
- 4th » A declaration against Unit Tests
- 3rd » Componentization
- 3rd » Endianism in OSS
- 3rd » Endianism - defn
- 3rd » Diversity
August
- 16th » PicoContainer 1.0b1...
- 7th » Early Practices.
July
- 28th » Patterns
May
- 6th » AltRMI TX
February
- 17th » AltRMI 0.9.1
- 17th » Enterprise Object Broker 0.9
January
- 13th » AltRMI & EOB releases
2002
December
October
September
- 30th » MetaGenerate
- 28th » MetaGenerate
- 5th » SPAM
- 3rd » JIT Software
August
- 16th » Automatic Class Diagrams
- 16th » Async Message invocation over AltRMI and EOB
- 12th » EJB not the holy grail
- 12th » Err away from rewrite