41554 blogs · [ { "id": "01a08795-4b9d-712a-a068-407981555d2e", "title": "The Unholy Trinity of Distributed Systems Hell", "url": "https://kevinwebber.ca/blog/unholy-trinity-of-distributed-systems-hell/", "published_at": "2026-05-02T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-407981a5db8c", "title": "Mealy Machines, Moore Machines, and Why Event Sourcing Works", "url": "https://kevinwebber.ca/blog/mealy-machines-and-event-sourcing/", "published_at": "2026-03-30T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-407981a69309", "title": "Onion Architecture in Practice", "url": "https://kevinwebber.ca/blog/onion-architecture-in-practice/", "published_at": "2026-02-10T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798272ffe9", "title": "The Battle of Event Naming in Event-Sourced Systems", "url": "https://kevinwebber.ca/blog/event-naming/", "published_at": "2025-11-04T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-4079828dc0fe", "title": "Eliminate Ghost State Changes, or Be Haunted Forever", "url": "https://kevinwebber.ca/blog/no-more-ghost-state-changes/", "published_at": "2025-05-12T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-407982d9a391", "title": "Fauxpen: The Rise of Fake Open Source Software", "url": "https://kevinwebber.ca/blog/the-rise-of-fake-open-source/", "published_at": "2024-09-01T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-407983845c77", "title": "Ethical Benchmarks and The Texas Sharpshooter", "url": "https://kevinwebber.ca/blog/ethical-benchmarks-texas-sharpshooter/", "published_at": "2024-08-16T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-407983bbc536", "title": "Visualizing binary search trees with GraphStream", "url": "https://kevinwebber.ca/blog/visualizing-binary-search-trees-graphstream/", "published_at": "2021-03-15T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-407983e21bdb", "title": "Demystifying machine learning", "url": "https://kevinwebber.ca/blog/demystifying-machine-learning/", "published_at": "2018-12-19T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-407983ea4cc3", "title": "Give credit and take blame", "url": "https://kevinwebber.ca/blog/give-credit-take-blame/", "published_at": "2017-06-04T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798444bb4c", "title": "What makes the Play framework fast?", "url": "https://kevinwebber.ca/blog/what-makes-the-play-framework-fast/", "published_at": "2016-12-25T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-4079850e570a", "title": "Goodbye, Lightbend", "url": "https://kevinwebber.ca/blog/goodbye-lightbend/", "published_at": "2016-10-09T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-4079856765a9", "title": "Five process improvements to uplift developers", "url": "https://kevinwebber.ca/blog/the-zen-of-process/", "published_at": "2016-04-26T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-4079857b2409", "title": "Diving into Akka Streams", "url": "https://kevinwebber.ca/blog/diving-into-akka-streams/", "published_at": "2016-03-03T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798647fc10", "title": "A Journey into Reactive Streams", "url": "https://kevinwebber.ca/blog/a-journey-into-reactive-streams/", "published_at": "2015-08-28T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-407986c865be", "title": "Reflecting on Reactive Systems", "url": "https://kevinwebber.ca/blog/reflecting-on-reactive-systems/", "published_at": "2015-04-16T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-4079879bb131", "title": "What is Reactive Programming?", "url": "https://kevinwebber.ca/blog/what-is-reactive-programming/", "published_at": "2014-08-19T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798815e7ca", "title": "Transitioning to Scala", "url": "https://kevinwebber.ca/blog/transitioning-to-scala/", "published_at": "2014-04-03T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-4079887f1fcd", "title": "Agile and Waterfall Can Live Together in Harmony", "url": "https://kevinwebber.ca/blog/agile-and-waterfall-together/", "published_at": "2013-11-15T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-4079897218ac", "title": "The Business Value of Joy", "url": "https://kevinwebber.ca/blog/joy-at-qcon-new-york/", "published_at": "2012-07-02T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798a323665", "title": "Multiplayer Tic-Tac-Toe in Java using Netty (NIO)", "url": "https://kevinwebber.ca/blog/multiplayer-tic-tac-toe-in-java-using-the-websocket-api-netty-nio-and-jquery/", "published_at": "2011-11-02T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798acff0ed", "title": "Fixing Fancybox with AJAX (and Wicket)", "url": "https://kevinwebber.ca/blog/fixing-fancybox-with-ajax-and-wicket/", "published_at": "2010-12-28T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798b15763e", "title": "Connection pooling with Hibernate 3.3.x and C3P0", "url": "https://kevinwebber.ca/blog/connection-pooling-with-hibernate-3-3-x-and-c3p0/", "published_at": "2010-12-26T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798b447920", "title": "Beyond Java", "url": "https://kevinwebber.ca/blog/beyond-java/", "published_at": "2010-12-13T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798bfd34aa", "title": "The future of Java in the Enterprise", "url": "https://kevinwebber.ca/blog/the-future-of-java-in-the-enterprise/", "published_at": "2010-11-15T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798ce22503", "title": "Desire paths", "url": "https://kevinwebber.ca/blog/desire-paths/", "published_at": "2010-09-05T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798d40b9c0", "title": "Integrating Uploadify with Java using Apache Wicket", "url": "https://kevinwebber.ca/blog/integrating-uploadify-with-java-using-apache-wicket/", "published_at": "2010-04-30T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798d9bfc62", "title": "Be a Revolutionary", "url": "https://kevinwebber.ca/blog/be-a-revolutionary/", "published_at": "2010-02-23T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798da119e7", "title": "Apache Aries: OSGi for the Enterprise", "url": "https://kevinwebber.ca/blog/apache-aries-osgi-for-the-enterprise/", "published_at": "2009-11-18T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798e5a576f", "title": "Don't Forget Team Structure", "url": "https://kevinwebber.ca/blog/dont-forget-team-structure/", "published_at": "2009-10-23T00:00:00+00:00" }, { "id": "01a08795-4b9d-712a-a068-40798ef0c54e", "title": "Is SOA Doomed?", "url": "https://kevinwebber.ca/blog/is-soa-doomed/", "published_at": "2009-08-10T00:00:00+00:00" } ] posts Claim your blog
Back to kevinwebber.ca
Blog · corpus.blog/blogs/kevinwebber.ca/posts

kevinwebber.ca

kevinwebber.ca

2026

2025

2024

2021

2018

2017

2016

2015

2014

2013

2012

2011

2010

2009