56,966 blogs · [ { "id": "01a08795-3082-719a-ba65-eb92d9dc8d5a", "title": "AI Review Loops Don’t Always Stabilise", "url": "http://kevinmahoney.co.uk/articles/ai-review-loops/", "published_at": "2026-08-25T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92da6cd8b5", "title": "Focustro: Development Notes for a Replicating React Application", "url": "http://kevinmahoney.co.uk/articles/focustro/", "published_at": "2023-08-28T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92da6ce592", "title": "Files That Change Together Should Stick Together", "url": "http://kevinmahoney.co.uk/articles/files-that-change-together/", "published_at": "2022-08-17T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92daa02d7b", "title": "Effective Checklists", "url": "http://kevinmahoney.co.uk/articles/effective-checklists/", "published_at": "2022-06-16T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92db1dc3bd", "title": "Alerts, Checklists, and Lazy Thinking", "url": "http://kevinmahoney.co.uk/articles/alerts-checklists-lazy-thinking/", "published_at": "2022-04-23T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92dbc001ab", "title": "Accidental Waterfall", "url": "http://kevinmahoney.co.uk/articles/accidental-waterfall/", "published_at": "2021-02-11T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92dc1b6373", "title": "The State-Diff Pattern", "url": "http://kevinmahoney.co.uk/articles/state-diff/", "published_at": "2020-10-29T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92dc349b64", "title": "Applying “Make Invalid States Unrepresentable”", "url": "http://kevinmahoney.co.uk/articles/applying-misu/", "published_at": "2020-10-02T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92dca29668", "title": "My Principles for Building Software", "url": "http://kevinmahoney.co.uk/articles/my-principles-for-building-software/", "published_at": "2020-09-17T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92dd940584", "title": "The High Cost of Splitting Related Data", "url": "http://kevinmahoney.co.uk/articles/the-high-cost-of-splitting-related-data/", "published_at": "2020-04-07T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92dd9760b2", "title": "Your Database as an API", "url": "http://kevinmahoney.co.uk/articles/your-database-as-an-api/", "published_at": "2020-03-20T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92ddfd8269", "title": "Sense and Availability", "url": "http://kevinmahoney.co.uk/articles/sense-and-availability/", "published_at": "2018-12-05T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92dedd5ba3", "title": "A Few Django ORM Mistakes", "url": "http://kevinmahoney.co.uk/articles/django-orm-mistakes/", "published_at": "2017-01-21T00:00:00+00:00" }, { "id": "01a08795-3082-719a-ba65-eb92df23b020", "title": "Consistency is Consistently Undervalued", "url": "http://kevinmahoney.co.uk/articles/consistency-consistently-undervalued/", "published_at": "2016-09-17T00:00:00+00:00" } ] posts Claim your blog
Back to kevinmahoney.co.uk
Blog · corpus.blog/blogs/kevinmahoney.co.uk/posts

kevinmahoney.co.uk

kevinmahoney.co.uk

2026

2023

2022

2021

2020

2018

2017

2016