Blog
Name things unambiguously
avoiding bad choices when naming related items 2024-11-19 #DDD #naming
The 3 phases of public API development
unpacking the API product lifecycle 2024-11-12 #API #product
Use URLs and links in single-page apps
restore browser functionality that an SPA can’t take for granted 2024-11-05 #UX
Express yourself with reaction emoji
expanding your online emotional vocabulary 2024-10-29 #collaboration
Use consistent emoji vocabulary
making titles and headings more browsable 2024-10-22 #collaboration
Use correct Unicode characters
avoiding ASCII art in modern text 2024-10-15 #typography
Information page URLs
implementing information pages that you can actually link to 2024-10-08 #design
Publish business information pages
canonical intranet web pages for internal tools to link to 2024-10-01 #collaboration
Design one-line activity feed notifications
how to automate legible, concise and useful updates 2024-09-24 #remote #collaboration
Build a team activity feed
use tool integration to automate working out loud 2024-09-17 #remote #collaboration
Collaboration tools for working out loud
how tools could help despite so few doing so 2024-09-10 #remote #collaboration
Work remote and out loud
observable work and narrating your work 2024-09-03 #remote
The management information problem
approaches to making the work visible 2024-08-27 #management
2024 startup company ideas
Another half a year, more free ideas 2024-08-20 #startups
Indigestible restaurant concepts
consumer food-service enshittification 2024-08-13 #product
The fridge door test for web accessibility
minimum-effort signals in complex systems 2024-08-06 #product
The value of basic foreign-language skills
Putting three months’ Duolingo Norwegian to work 2024-07-30 #language #learning
Stop talking about requirements
Zombies, and the requirements analysis delusion 2024-07-23 #product
Book review: Who Does What By How Much?
A broadly-applicable guide to adopting OKRs 2024-07-16 #product #book #review
Meet people in person when working remote
Don’t rely on colleagues for social contact 2024-07-09 #remote
Refactoring checklist
Ten practical tips for reducing technical debt 2024-07-02 #product #development
Extreme product development (script)
The extended script for my Joy of Coding lightning talk 2024-06-25 #product
Stop talking about ‘technical debt’
Prioritise and work towards specific goals instead 2024-06-18 #product #management
Manage product technical debt
How product managers can help engineering teams 2024-06-11 #maintenance #management
Development schedule cost
I don’t ask for developer estimates and nor should you 2024-06-04 #product #management
Legacy product development (part 2)
The converse of extreme product development 2024-05-27 #product #management
Legacy product development (part 1)
The converse of extreme product development 2024-05-21 #product #management
Alternative foreign language learning goals
Reasons other than needing to become fluent 2024-05-14 #language #learning
Don’t conflate difficulty with effort
How to have better conversations with developers 2024-05-07 #product #management
Write code with meaning
What connects 3 of the 97 Things Every Java Programmer Should Know 2024-04-30 #programming
Zero-bug policy scenarios
How to handle common situations 2024-04-23 #product
Being a product manager with a technical background
Unexpected benefits of a previous life as a developer 2024-04-16 #product
Book review: Radical Focus
Objectives and key results as both fiction and framework, by Christina Wodtke 2024-04-09 #product #book #review
Choir rehearsal score locations
How to avoid wasting time telling singers where to start 2024-04-01 #music
ProductTank Rotterdam manifesto
Our vision for a local product management community 2024-03-26 #product #event
Use high-contrast colours for text
The fashionable grey text design horror 2024-03-19 #design
Don’t model every possible process exception
When not to automate delivery process edge cases 2024-03-12 #process
Use better product management jargon
Overthinking language because words matter 2024-03-05 #product
Normalise comfortable silence in team meetings
How psychological safety enables teams 2024-02-27 #productivity
Linear teams and projects
Bridging project management tools and product management 2024-02-20 #product #design
Date-based information architecture
How Tana daily pages use ‘today’ as a sensible default 2024-02-13 #product #design
Integrated Q&A in product documentation
Docs, questions and answers in Delibr and Slite 2024-02-06 #collaboration #product #documentation
Product documentation-capability alignment
Fun with product capabilities and Venn diagrams 2024-01-30 #product #documentation
Extreme product development
New approaches, yet to become mainstream 2024-01-23 #product
‘Feature’ is a construct
Why features would make product development easier, but don’t exist 2024-01-16 #product
Slite template placeholders
When good design looks obvious 2024-01-09 #product
2023 startup ideas for lifestyle products
Another year, more free ideas from the Twitter archive 2024-01-02 #startups
QA collaboration for product managers
Software quality from a broader product perspective 2023-12-26 #product #QA
2023 startup ideas for business software
Another year, more free ideas for the world of work from the Twitter archive 2023-12-19 #startups
Open product discovery
Redefining continuous discovery for product managers with NEXT 2023-12-12 #product #discovery
Feature roadmap transformation
How to migrate to a now/next/later product roadmap, one step at a time 2023-12-05 #product #roadmaps
Product feature analytics
Integrating a functional model with feature-level analytics 2023-11-28 #product
Product feature trackers
Product operations’ missing tooling 2023-11-21 #product
Feature rollout
Feature lifecycle steps that follow release 2023-11-14 #product
Feature release
Feature lifecycle steps that precede release 2023-11-07 #product
Feature lifecycle management
How existing product development tools neglect features 2023-10-31 #product
The backlog abstraction layer
A developer perspective on taming infinite backlogs 2023-10-24 #product
The incredible shrinking backlog
Why you don’t need such a big backlog 2023-10-17 #product #delivery
B2B SaaS review: Airfocus
Flexible end-to-end product management 2023-10-10 #product #review
The infinite backlog problem
Software development teams’ self-excavated pit 2023-10-03 #product
Original programming jokes
Social media timestamp-based attribution 2023-09-26 #programming #humour
Product document naming
Overthinking what we call the artefacts we write 2023-09-19 #product
Books that introduce product management
What to read if you only read one book (first) 2023-09-12 #product #book #review
Call a team a team
Rejecting bro culture and gratuitous culture hacking 2023-09-05 #culture
Rotterdam recommendations
Where to go when you visit 2023-08-29 #review
B2B SaaS review: Orbit
Simplified full-circle product management 2023-08-22 #product #review
B2B SaaS review: Kitemaker
Integrated product management instead of better project management 2023-08-15 #product #review
Interview: Lyndall Farley
What a sabbatical consultant does and why you need one 2023-08-08 #career
My 2023 three-month sabbatical
Three months of things to do instead of applying for a job 2023-08-01 #career
My 2014 six-month sabbatical
Things to do with more than a few months off work 2023-07-25 #career
My 2004 three-month sabbatical
Things to do with more than a few weeks off work 2023-07-18 #career
Adopt two technology generations
Avoiding software architecture stagnation or a free-for-all 2023-07-11 #architecture
Legacy software in seven years
Why no-code automation keeps getting better 2023-07-04 #NoCode #product
Use grammatical bullet lists
Technical writers love bullet lists and so can you 2023-06-27 #writing
The word-processor problem
Software focus in niche markets versus mass-market complication 2023-06-20 #product
CSS date rules
The next innovation for dynamic CSS style sheets 2023-06-13 #design
Improve developer experience
How to work on software development productivity 2023-06-06 #development
Team collaboration commoditisation
No-code automation platform Next Matter’s built-in feedback and tasks 2023-05-30 #NoCode #product
Intranet ten word wiki
Using Notion to maintain a glossary with correct entry length 2023-05-23 #documentation
No-code workflow commoditisation
Built-in custom workflow capabilities in B2B SaaS 2023-05-16 #NoCode #product
2022 startup company ideas
Another year, more free ideas 2023-05-13 #startups
We need more cute software
Innovation opportunity for B2B SaaS 2023-05-09 #UX #remote
Literate workflow programming
How n8n fills a gap in graphical workflow model notations 2023-05-02 #documentation
Project-free product development
You don’t hate Jira, you hate project management 2023-04-25 #product
Universal product development tools
Simpler more accessible tools to manage product development 2023-04-18 #product
B2B SaaS review: Cycle
A first look at a tool for integrated product discovery 2023-04-11 #product #review
Product development productivity tools
Tooling for different product development units of work 2023-04-04 #product
Simple chicken rice
Cutting corners to make quick single-portion Hainanese chicken rice 2023-04-01 #cooking
Simplify development work organisation
Reducing chaos by consolidating different levels of units of work 2023-03-28 #product
Simplify product work organisation
Reducing chaos by consolidating different levels of units of work 2023-03-21 #product
B2B SaaS review: Collato
A first look at a simpler way to collaborate on documents 2023-03-14 #product #review
B2B SaaS review: Qatalog
A first look at a new way to organise everything 2023-03-07 #productivity #review
B2B SaaS review: Delibr
From a single unit of work to end-to-end product development 2023-02-28 #product #review
Units of work
Overthinking product development team task lists 2023-02-21 #product
Software development takes forever
The first fundamental software development problem 2023-02-14 #product #development
The two-minute product manager
Hyper-availability and reducing median time to respond 2023-02-07 #product
Product management arithmetic
Why weighted prioritisation scores don’t add up 2023-01-31 #product #prioritisation
Generating API documentation examples
Implementing docs-as-code for an HTTP API 2023-01-24 #API #documentation
Browsing a JSON API in HTML
Rendering JSON responses as HTML with links and annotations 2023-01-17 #API #documentation
API documentation annotations in HTML
Rendering annotations in HTML, CSS and canvas 2023-01-10 #API #documentation
API documentation annotations
Applying annotation style to HTTP API docs 2023-01-03 #API #documentation
Documentation annotation styles
How to annotate technical writing examples for readability 2022-12-27 #API #documentation
Backwards API docs
Why API docs resist good explanations 2022-12-20 #API #documentation
Correct technical explanation order
Why most writing explains things in the wrong order 2022-12-13 #writing
A false sense of urgency
Why the phrase ‘sense of urgency’ ignores actual urgency 2022-12-06 #management
5 ways singing early music makes you better at working in tech
Yet another inane comparison you don’t need and don’t care about 2022-11-29 #satire #product
Two kinds of abbreviations
Initialisms and acronyms for jargon and laziness 2022-11-22 #writing #DDD
Identify workarounds in bug reports
Bug reports for knowledge-centred over achievers 2022-11-15 #product #maintenance
Identify context and environment in bug reports
Why bug reports get rejected because ‘it works on my machine’ 2022-11-08 #product #maintenance
List reproduction steps in bug reports
How to make bugs reproducible so they get fixed 2022-11-01 #product #maintenance
Describe expected behaviour in bug reports
Comparing notes on software behaviour expectations 2022-10-25 #product #maintenance
Minimum viable bug report
The most important bug report information… to start with 2022-10-18 #product #maintenance
Use Unicode
Why the only bug you should see in text is 🐛 2022-10-11 #data
Calendar event rejections
Status codes for more expressive meeting request rejections 2022-10-04 #product
Tech meet-up talks
A wish list for meet-up organisers 2022-09-27 #meetups
Mixing kinds of text
Where embedding one kind of text in another goes bad 2022-09-20 #data #DDD
Modelling text as data and code
Getting your formats mixed up 2022-09-13 #data #DDD
Modelling text as symbols
Obscure problems when displaying symbols 2022-09-06 #data #DDD
Modelling text as writing
Software design problems with the simplest of four kinds of text 2022-08-30 #data #DDD
Test writing ideas in conversation
How to discover what you really think 2022-08-23 #writing
The part-time product manager
When product management gets the day off 2022-08-16 #product
Forge Wood to Gatwick
How to walk to London Gatwick Airport (LGW) 2022-08-09 #travel
The reverse agenda
How to reclaim agency and avoid pointless meetings 2022-08-02 #collaboration
The hybrid-remote delusion
Hybrid-remote means many things other than actually remote 2022-07-26 #remote
Executive training for remote work
Announcing a series of hands-on courses for the modern workplace 2022-07-19 #remote
Reserve weekly time for writing
Keep writing, even when you don’t know what to say 2022-07-12 #writing
Conference expectations
What speakers can expect from conference organisers 2022-07-05 #conferences
Brute-force modelling
When avoiding over-modelling feels like cheating 2022-06-28 #DDD
The importance of programming jokes
Domain-specific jokes’ purpose 2022-06-21 #programming #DDD #humour
Domain-specific languages go digital
Alternative names for ‘domain-specific language’ (DSL) 2022-06-14 #programming
Modelling multitudes
Measuring, counting and naming different kinds of quantities 2022-06-07 #data #DDD
Truncate content according to context
When omitting the end of text that doesn’t fit doesn’t work 2022-05-31 #UX
Mac OS System 7 outlines vs HTML
Tree views on the web 2022-05-24 #UX
Mac OS System 7 inputs vs HTML
Browser-native user-interface controls compared to Mac OS 31 years ago 2022-05-17 #UX
Mac OS System 7 menus vs HTML
Browser-native user-interface controls compared to Mac OS 31 years ago 2022-05-10 #UX
Mac OS System 7 buttons vs HTML
Browser-native user-interface controls compared to Mac OS 31 years ago 2022-05-03 #UX
Use high-contrast text
The dark side of grey text 2022-04-26 #UX
Guide user input
How to fix, hint, and validate before complaining 2022-04-19 #UX
Use a money data type
Why your software should handle money amounts separately from other numbers 2022-04-12 #data #DDD
The right tempo for renaissance polyphony
How fast to sing sixteenth century church music 2022-04-05 #music
Modelling numeric values
More than just size and precision 2022-03-29 #DDD
Show content without elision
When perceived cleanliness trumps user experience 2022-03-22 #UX
How to talk to developers
Boring meetings and balanced conversations 2022-03-15 #product
Use a currency-specific number of decimals
Why a money amount isn’t just a number 2022-03-08 #data #DDD
Reduce scope at different scales
Why software development requires reducing scope at every step 2022-03-01 #agile #product
Continuously reduce scope
Why product development requires repeated scope reduction 2022-02-22 #agile #product
Build a separate API for public consumption
Because APIs have user personas too 2022-02-15 #API
The cost of a free API
How you pay for publishing your back-end’s API 2022-02-08 #API
Populate country lists carefully
How to source a list of countries to use in software 2022-02-01 #data #DDD
Localise names with the CLDR
Using the Unicode Common Locale Data Repository’s standard translations 2022-01-25 #data #DDD
Internationalise data
Better software through commoditised domain modelling 2022-01-18 #data #DDD
Default to the browser’s preferred language
Don’t set the web page language based on location 2022-01-11 #DDD #UX
CSV isn’t broken - Excel is broken
Reasons to blame Excel for comma-separated values (CSV) issues 2022-01-04 #data
2021 startup company ideas
Another year, more free ideas 2021-12-30 #startups
Publish data using the CSVW standard
Use W3C’s ‘CSV on the Web’ (CSVW) standard to make data accessible 2021-12-28 #data
Create RFC 4180-compliant CSV files
How to solve the worst comma-separated values (CSV) problems 2021-12-23 #data
Why CSV survives
The enduring nature of comma-separated values (CSV) 2021-12-21 #data
CSV character encoding
Comma-separated values (CSV) with the wrong characters 2021-12-14 #data
CSV delimiter confusion
Comma-separated values (CSV) files don’t always use commas 2021-12-07 #data
Jargon-centric naming
Restricting names to controlled vocabularies 2021-11-30 #naming #DDD
The death of the living document
Relics of the typewriter age 2021-11-23 #documentation
Weblog throwback
Blogging like it’s 2001 2021-11-16 #links
Domain primers
How software developers and product people can bootstrap subject-matter knowledge 2021-11-09 #DDD
Collect writing ideas
How to find ideas to write about instead of planning them 2021-11-02 #writing
Get yourself a notebook
The first step towards regularly having something to blog about 2021-10-26 #writing
IBAN support for no-code platforms
International Bank Account Numbers and data type design decisions 2021-10-19 #NoCode
Pluralise text correctly
User-interface content design details matter too 2021-10-12 #DDD #UX
Good manager/bad manager
Choices that managers make and you can too 2021-10-05 #management
No code but not no maintenance
Software maintenance with no-code tools 2021-09-28 #NoCode
Scrum and non-functional requirements
The qualities you must not ignore 2021-09-21 #agile
Web-based online whiteboards
Essential tooling for remote teams 2021-09-14 #agile #remote
Lots of whiteboards
Classic product development hardware 2021-09-07 #agile
No-code solution complexity
‘No-code’ doesn’t mean simplistic 2021-08-31 #NoCode
Lean coffee on-site for remote teams
A flexible in-person activity for a distributed team 2021-08-24 #remote
City walking tour team event
A flexible in-person activity for a distributed team 2021-08-17 #remote
Working remote on hard mode
The value of regularly meeting in-person 2021-08-10 #remote
HTTP API versioning approaches
Why the experts say you shouldn’t 2021-08-04 #API
Write better code
Learning how to become a better coder 2021-07-27 #programming
Book review: The Art of Logic
A case study in the importance of good examples, by @DrEugeniaCheng 2021-07-20 #mathematics #book #review
Documentation planning
A checklist of questions to de-risk software documentation efforts 2021-07-16 #documentation
Living glossaries and data dictionaries
Reflections on ‘Living Documentation’, by @cyriux 2021-07-06 #documentation #book
Domain-driven development
Why no-code tools enable ultimate domain-driven design 2021-06-29 #NoCode #DDD
Curation and storytelling for software documentation
Reflections on ‘Living Documentation’, by @cyriux 2021-06-22 #documentation #book
Apologetic error messages
Following through on a naming idea by @huizendveld 2021-06-15 #naming #programming
Knowledge augmentation and technical writing
Reflections on ‘Living Documentation’, by @cyriux 2021-06-09 #documentation #book
Knowledge exploration and exploitation
Reflections on ‘Living Documentation’, by @cyriux 2021-06-01 #documentation #book
Principles of living documentation
Reflections on ‘Living Documentation’, by @cyriux 2021-05-25 #documentation #book
Martraire’s principles of documentation
Reflections on ‘Living Documentation’, by @cyriux 2021-05-18 #documentation #book
Use skin tone emoji that match your skin
The missing help page for white @SlackHQ users 2021-05-11 #learning
Content before style and structure
How no-code tools let you start simple and avoid up-front design 2021-05-04 #NoCode
Form builder value styles
Word processor paragraph styles as no-code custom data types 2021-04-27 #NoCode
Talk about programming
Learning how to become a better coder 2021-04-20 #learning
Talk about technical books
Learning how to become a better software/product developer/manager 2021-04-13 #books #learning
Read technical books
Learning how to become a better software/product developer/manager 2021-04-06 #books #learning
Flow charts and pseudocode
Why non-executable process models don’t work 2021-03-30 #NoCode
What to put in a README
How to minimally document software 2021-03-23 #documentation
Capturing what’s in your head
The decision-making tacit knowledge problem 2021-03-17 #NoCode
HTTP client error status code checklist
Because HTTP API clients don’t just send bad requests 2021-03-09 #API
Technical writing - my first ten years
Posts on the @LunatechLabs tech blog, 2005-2014 2021-03-02 #writing
Allow varied national telephone number formats
Why telephone numbers don’t add up 2021-02-23 #data #DDD
Respect people’s full names
Don’t call someone’s name ‘invalid’ 2021-02-16 #data #DDD #UX
Use HTTP error handling in APIs
Improving developer experience with a richer HTTP vocabulary 2021-02-12 #API
Book review: Succeeding with OKRs in Agile
A practical guide for agile software development practitioners, by @allankellynet 2021-02-09 #product #book #review
Forgive user input in the wrong format
Don’t make people normalise data manually 2021-02-02 #UX
Omit salutations in automated notifications
Don’t waste time on fake greetings 2021-01-26 #UX
HTTP API documentation mistakes
Five common ways to get stuck writing the docs 2021-01-19 #product #API #documentation
Build unisex software
Don’t ask people to tell you their gender 2021-01-13 #DDD #UX
Deconstructed HTTP API documentation
The conventional way to write hard-to-use API documentation 2021-01-07 #product #API #documentation
Implement a zero-bug policy
How to manage bugs during software product development 2021-01-05 #product #maintenance
2020 startup company ideas
Another year, more free ideas 2020-12-29 #startups
Six fears of public speaking
How to opt out of things that stop you proposing talks 2020-12-22 #speaking
Facing fear of public speaking
How to get used to the idea of your first presentation 2020-12-15 #speaking
Development environment documentation
Essential software product documentation for the development team 2020-12-08 #product #documentation
Validate email addresses to level 4
First person to say ‘regex’ loses 2020-12-01 #data #DDD #UX
Why developers write bad API documentation
Coding habits that hinder technical writing 2020-11-24 #product #API #documentation
Allow all printable characters
First person to say ‘special characters’ loses 2020-11-17 #data #DDD #UX
The API documentation usability problem
Why API documentation tends towards a poor developer experience 2020-11-10 #product #API #documentation
Use localised language names for language selection
Don’t use flags for languages 2020-11-03 #UX
Product owner unavailable
Making Scrum work despite patchy product owner availability 2020-10-27 #agile
Sort every collection you display
Unsorted is never the right order 2020-10-20 #UX
Book review: Epic Alignment
How to write structured feature documents 2020-10-13 #product #book #review
Refactor Boolean values to enumerations
From ‘97 Things Every Java Programmer Should Know’ 2020-10-07 #programming #DDD
Numbers that aren’t numbers
‘Numbers’ that you can’t represent numerically 2020-09-29 #data #DDD
Source code layout
Why source code deserves layout as well as typography 2020-09-22 #programming
Ugly code and typography
Why good code still looks bad 60 years on 2020-09-15 #programming
Get better at naming things
From ‘97 Things Every Java Programmer Should Know’ 2020-09-08 #programming #DDD
No-code and no testing environments
Testing no-code automation presents a hard problem 2020-09-02 #NoCode
Software’s process value
Why special-purpose software offers more than its functionality 2020-08-25 #product
What has ‘no code’ ever done for us?
Why you shouldn’t dismiss imperfect solutions 2020-08-19 #NoCode
Write one-sentence documentation comments
From ‘97 Things Every Java Programmer Should Know’ 2020-08-11 #programming
No-code automation’s non-violent revolution
The enterprise IT transformation that you might not notice 2020-08-05 #NoCode
More inane start-up ideas
Yet more free ideas from the archives, 2018-2019 2020-07-28 #startups
We need to talk about ‘no code’
Why ‘no-code automation’ needs a better name 2020-07-21 #NoCode
Learning to ski - starting agility with Scrum
Why basic techniques have their place 2020-07-14 #agile
Why no-code automation’s innovation isn’t functionality
It’s the user experience, stupid 2020-07-07 #NoCode
B2B SaaS review: Shipright
A single source of truth for your customers’ product feedback 2020-07-01 #product #review
Three principles for remote meetings that work
How to discover specific guidelines and practices for your situation 2020-06-23 #remote
Automation without the secret codes
How no-code automation modernises programming 2020-06-16 #NoCode
Writing with a word count limit
The enabling constraint of a strict 450-550 word limit 2020-06-09 #writing
Time zone compromises
Winning against time zones in software by not actually fighting 2020-06-03 #product
First look: Dark
A new back-end language and #nobuild web-based development environment 2020-05-26 #programming
B2B SaaS review: Delibr
Structured writing for feature documents 2020-05-19 #product #review
Product backlog naming tips
How to name things, for product people 2020-05-12 #product
Naming products isn’t the problem
Why product backlog item naming matters 2020-05-05 #product
The product roadmap triangle
How to make trade-offs between roadmap qualities 2020-04-28 #product
Roadmaps in two dimensions and three levels
How to relate your roadmap to what matters 2020-04-21 #product
Your product roadmap is a compromise
Finding a balance between flexibility and transparency 2020-04-14 #product
B2B SaaS review: productboard (roadmaps)
Sharing product roadmaps in @productboard 2020-04-07 #product #review
B2B SaaS review: productboard (insights board)
Capturing customer feedback in @productboard 2020-03-31 #product #review
B2B SaaS review: productboard (features board)
Managing a product backlog in @productboard 2020-03-25 #product #review
Book review: Choose Your First Product
How to find and validate a product idea, by Leon Bambrick (@secretGeek) 2020-03-18 #product #book #review
Book review: The Art of Agile Product Ownership
How to understand the best way to fulfil the PO role, by @allankellynet 2020-03-12 #product #book #review
The good kind of legacy code
A supply chain software maintenance project story from 2012 2020-03-04 #maintenance
The worst kind of legacy code
A supply chain software maintenance project story from 2006 2020-02-25 #maintenance
Extensive technical documentation
An asset management software maintenance project story from 1997 2020-02-19 #maintenance #documentation
Visit your customers and ask them questions
How to get them talking about your product’s value proposition 2020-02-11 #product
Book review: Continuous Digital
How to merge software business with software development, by @allankellynet 2020-02-04 #management #book #review
Identify your product value proposition
Why people will buy your product 2020-01-29 #product
Deliver a 3-5 point product-pitch
How to build initial product marketing from a product definition 2020-01-21 #product
Define your product using existing product categories
How categories clarify your product definition 2020-01-15 #product
Write a three-part product definition
How to set the context for your product story 2020-01-08 #product
Articulate the minimal product definition
How to set the context for your product in one sentence 2020-01-02 #product
Book review: Project Myopia
What’s wrong with software development projects, by @allankellynet 2018-09-17 #management #book #review
How to write unmaintainable code
Tribute to the classic thesis by Roedy Green 2018-09-04 #code #maintenance
Three causes of unmaintainable code
Why programmers are lazy and too clever for their own good 2018-08-20 #code #maintenance
Language expressiveness versus code maintainability
How different programming languages lead to different software maintenance challenges 2018-08-13 #code #maintenance
Start-up ideas are still cheap
More free ideas from the archives, 2015-2017 2018-07-27 #startups
Start-up ideas for software development
Things you wish your favourite IDE vendor would invent 2018-07-16 #startups
Software maintenance’s terrible question
The big question that teams don’t ask about software products 2018-07-09 #product #maintenance
Start-up ideas for apps
Apps that someone else is going to sell if you don’t 2018-06-29 #startups
The code maintenance problem
Why software maintenance is worth talking about 2018-06-26 #code #maintenance
Ligatures with Fira Code
The coding font with ligatures that not everyone knows about 2018-06-15 #code #typography
Correlation IDs for microservices architectures
Sorting out logs with UUID, GUID, CUID and other identifiers 2017-07-12 #microservices
Single-letter names - a cautionary tale
Phillip Relf’s story of two lazy array index names 2017-01-10 #naming #programming
Paper review: Achieving Software Quality through Source Code Readability
A computer science paper reviewed from an industry perspective 2016-12-31 #naming, #readability, #paper
What science says about naming
Computer science papers about naming (co-written with Felienne Hermans) 2016-12-26 #naming #programming
How to get better at naming things
10 steps to mastering names in code 2016-11-20 #naming #programming
Naming smells
Code smells that indicate bad names so you can avoid using them 2016-10-31 #naming #programming
Why naming things is hard
The hardest thing in programming and the great naming myth 2016-10-22 #naming #programming
Where to start documenting a legacy system
What new team members need, to understand a system 2016-09-30 #documentation
10 things programmers will switch jobs for
When they’re ready to leave, here’s what they’re looking for 2016-05-09 #recruitment
Constructive laziness
Creative productivity for programmers 2016-03-28 #programming #documentation
Questions about documentation and avoiding writing it
Q&A for my forthcoming keynote at ProgSCon London 2016 2016-02-08 #documentation
Book review: Functional Programming in Java
by Pierre-Yves Saumont - FP unencumbered by libraries, standard or otherwise 2016-01-29 #programming #book #review
Legacy code
One programmer’s meat is another programmer’s poison 2015-11-28 #programming
Not talking to programmers
Why face-to-face communication isn’t as good as they say 2015-11-20 #programming #documentation
Book review: Functional Reactive Programming
by Stephen Blackheath and Anthony Jones - Intelligent, clear and witty 2015-10-26 #programming #book #review
My documentation problem
ACCU 2015 lightning talk script 2015-04-24 #documentation
BPM as a preferred approach to business application development
The fundamental problem with a process-centric approach 2015-03-16 #BPM
Permission to enjoy process modelling
How to indulge in making process models 2015-03-12 #BPM
The process modelling trap
Why you can’t help obsessing over diagrams 2015-03-08 #BPM
The zero-code delusion and its silver lining
The hidden value of disguised programming 2015-02-25 #BPM #NoCode
AdorableJS
why JavaScript frameworks live short but happy lives 2015-02-12 #JavaScript #naming
Processes are not set in stone
process management means embracing change 2015-02-09 #BPM
camunda BPM with Play and Scala
integrating Business Process Management with a web application 2015-01-27 #BPM #playframework #Scala
camunda developer-friendly BPM
a Business Process Management platform by and for developers 2015-01-22 #BPM
What to write on Twitter
the most important part of how to use Twitter 2015-01-19 #Twitter
Networking tips for conference organisers
how to help attendees connect with each other 2015-01-12 #conferences
Small details for conference organisers
Inspiration for incremental improvements 2015-01-05 #conferences
Presentation tips for conference organisers
How to help speakers deliver legible slides 2014-12-30 #conferences
Start-up company ideas are cheap
A good team that executes well matters most 2014-12-26 #startups
Supplier Rejection Management
Building interruption marketing countermeasures with @Twilio 2014-11-26 #vapourware
Comments are the introduction
three ways to introduce code 2014-11-03 #programming #comments #maintenance
One Big Menu
Unbundling restaurant menus on the web 2014-10-21 #vapourware
How to comment code
What you have to actually do to get good comments 2014-10-09 #programming #comments #maintenance
3 kinds of good comments
Code tells you what and how - you need comments to say why 2014-10-08 #programming #comments #maintenance
7 ways to write bad comments
Things you don’t want to do to your code 2014-10-07 #programming #comments #maintenance
On the origin of systems thinking
John Seddon is this week’s mandatory viewing 2014-10-03 #management
Systems integration with Effektif
Using JavaScript tasks to access web services 2014-09-24 #BPM
Custom development with Effektif
What a process-centric spreadsheet alternative means for developers 2014-09-23 #BPM
Effektif hosted BPM
A different kind of business automation 2014-09-22 #BPM
Fear of renaming
Why renaming is harder than naming 2014-09-17 #programming #naming
Meaningless variable names
Naming things without actually choosing a name 2014-09-04 #programming #naming
Software development quotations
My favourite insights from articulate programmers; send me yours! 2014-09-03 #programming
Camel message processing using the Scala DSL
A new Typesafe Activator template 2014-09-01 #Camel #Scala
Camel HTTP file upload with multipart/form-data
How to integrate with legacy HTTP endpoints 2014-08-29 #Camel #Scala
Inspecting HTTP client requests
Four easy tools for debugging web services 2014-08-28 #programming
Software estimation checklist
Ten ways to avoid bad estimates 2014-08-26 #agile
How to seduce a writer
Neil Gaiman doesn’t always write about programming 2014-08-22
Scrum user story chilli ratings
Hotter than t-shirt sizes, looser than dress sizes 2014-08-21 #agile
Neil Gaiman’s rules for coding
@neilhimself writes about programming 2014-08-20 #programming
Post-it Super Sticky - notes that don’t fall off
Scrum hardware innovation (via @vgrgic) and Correct Post-it Technique 2014-08-19 #agile
George Orwell’s six rules for Scala programmers
A concise style guide 2014-08-18 #Scala
Talking about the cost of delay
Another way to look at business value 2014-08-15 #agile
Source code maximum line length
GitHub sets the standard for code reviews 2014-08-14 #Scala
Development cost is relative to value
Putting effort estimates in perspective 2014-08-13 #agile
Play/Slick back-end for jQuery UI Sortable
A new Typesafe Activator template 2014-08-12 #Scala
Today I learned useful and weird stuff
Working out loud and social learning 2014-08-11 #collaboration
Formatting Clojure source code
The one thing that emacs can’t do 2014-08-08 #Clojure
Process-centric application design
The fourth way to think about the problem 2014-08-07 #BPM
Things the Scala compiler doesn’t do
Impossible functionality that you don’t actually want 2014-08-06 #Scala
Scaling down Play and Scala web applications
Cruising with Play, Scala and in style 2014-08-05 #Scala
Architect - the missing Scrum role
Agile architecture for non-functional requirements 2014-08-04 #agile
What’s missing from the Scala Style Guide
Input for team-specific code conventions 2014-08-01 #Scala
User modelling with TV character personas
Better-looking software requirements analysis 2014-07-31 #product
Dropping the ‘agile’ from ‘software development’
Why ‘agile’ is still the new name for methodology 2014-07-30 #agile
Code comments and metaphysical subjectivism
The philosophy of software maintenance and the objective meaning of legacy code 2014-07-29 #programming #comments #maintenance
Learning another programming language
The second language is hardest 2014-07-28 #programming
Arithmetic symbols in source code
Why ASCII’s fifty year-old legacy is still with us 2014-07-25 #programming
Simple processes need case workers too
Reducing errors with end-to-end responsibility 2014-07-24 #BPM
What is a collaboration platform?
Collaboration is a tag - not a category 2014-07-23 #collaboration #product
Supply chain delivery performance improvements
How status updates can improve perceived performance 2014-07-22 #supplychain
Using only English words in code
What if you could tell the compiler to require correct spelling? 2014-07-21 #programming
Object-oriented programming with constrained types
What if you had to define types for all values? 2014-07-17 #programming
Enforcing coding style as part of the language
What if the compiler only accepted one coding style? 2014-07-16 #programming
Does @SavedYouAClick prove Betteridge’s Law?
A brief study of clickbait headlines 2014-07-14 #socialmedia
Older articles (2005-2014)
172 articles from mid-2005 to mid-2014 are published on the Lunatech Blog.
97 Things Every Java Programmer Should Know
97 Things Every Java Programmer Should Know edited by Kevlin Henney, Trisha Gee, with contributions by Peter Hilton, published by O’Reilly Media in May 2020.
Play for Scala
Play for Scala by Peter Hilton, Erik Bakker and Francisco Canedo was published by Manning Publications in September 2013. The book teaches web developers how to use the Play Framework to build web applications using the Scala programming language.
Peter Hilton presented widely on the topic and was a certified trainer for Typesafe’s Fast Track to Play with Scala training course, before they rebranded as Lightbend.
Other people’s writing
Theatrical Adventures - Musings and memories of a thespian, by O.B. Clarence
Tristan And Iseult: A Jungian Interpretation
Cafe reviews (2000-2012)
Independent cafe and restaurant reviews, from before TripAdvisor was invented:
🇳🇱 Rotterdam, Maastricht, Amsterdam, Delft
🇪🇸 Madrid
🏴 Cambridge, Oxford, London
🇮🇹 Florence
🇮🇪 Galway
🇱🇺 Luxembourg
🇦🇹 Vienna
Older articles (1996-2004)
Travel writing
Cambridge Coffee & Cake Guide
Diary Of An International Assignment (Luxembourg)
European Café Watch
Everything You Always Wanted To Know About Bordeaux
Seven Hours In Budapest
Computers
Computer books - how to choose them
Lime - an editor for online HTML publishing
Machine translation of the World Wide Web
Navigation bar links - how to generate them
Photograph thumbnails - how to make them
Web Page Design Principles
Web site architecture
Why I hate computers
Practical stuff
Cunning Cryptic Crossword Clues
Rotterdam Cycle Routes
European phrase book
Handy tips
Luxembourgish verb table
My magnificent midnight munchies
Rough & ready rapid rapid recipes
Opinion
Book reviews - short reviews of computer books
Car ownership
The Critical Camera
Film reviews - tiny reviews of films I was watching
H-graph FAQ
Important Questions
Code Complete book review
Meta-content
Spare ideas
Why every cafe needs a sofa
Why obscure languages are more fun to learn
What 'What Numbers Could Not Be', by Paul Benacerraf, Is
Photographs
Algonquin Provincial Park, Canada
Antwerp
Budapest
Cafes On The Inside
Cafes On The Outside
Edinburgh
Luxembourg (city)
Maastricht
public transport
Vienna