41554 blogs · [ { "id": "01a0871f-b7e1-70e7-be0a-4debbad568bf", "title": "Now writing actively on Substack: Code for Humans and Machines", "url": "https://adamtornhill.substack.com/p/welcome-to-code-for-humans-and-machines", "published_at": "2026-05-22T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debbae8b4ba", "title": "My Five Worst Bugs", "url": "https://www.adamtornhill.com/articles/worstbugs/lessonssystemdesign.html", "published_at": "2018-08-31T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debbb3dee63", "title": "Book Release: Software Design X-Rays", "url": "https://www.adamtornhill.com/articles/swevorelease.html", "published_at": "2018-03-07T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debbbd75e6f", "title": "A Mind at Play", "url": "https://www.adamtornhill.com/reviews/claudeshannon.htm", "published_at": "2017-07-17T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debbccc9793", "title": "Software (r)Evolution - The Book", "url": "https://www.adamtornhill.com/swevolution/newbook.html", "published_at": "2017-03-20T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debbd06d5d3", "title": "Beyond Functional Programming", "url": "https://www.adamtornhill.com/articles/jlang/beyondfunctional.html", "published_at": "2017-02-17T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debbd989576", "title": "The Definitive ANTLR 4 Reference", "url": "https://www.adamtornhill.com/reviews/antlrv4.htm", "published_at": "2016-12-29T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debbe4dd02d", "title": "Peak", "url": "https://www.adamtornhill.com/reviews/peak.htm", "published_at": "2016-11-15T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debbe7601a5", "title": "Software (r)Evolution - Part 2: Novel Techniques to Prioritize Technical Debt", "url": "https://www.adamtornhill.com/articles/software-revolution/part2/index.html", "published_at": "2016-08-26T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debbe8ebf63", "title": "Software (r)Evolution - Part 1: Predict Maintenance Problems in Large Codebases", "url": "https://www.adamtornhill.com/articles/software-revolution/part1/index.html", "published_at": "2016-08-10T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debbea81570", "title": "The Apollo Guidance Computer", "url": "https://www.adamtornhill.com/reviews/agc.htm", "published_at": "2016-08-08T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debbee34879", "title": "Review of The Leprechauns of Software Engineering", "url": "https://www.adamtornhill.com/reviews/leprechauns.htm", "published_at": "2016-05-22T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debbf70b30f", "title": "Review of Code", "url": "https://www.adamtornhill.com/reviews/code.htm", "published_at": "2016-05-01T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc010ad34", "title": "A Machine Made This Book", "url": "https://www.adamtornhill.com/reviews/machinemadebook.htm", "published_at": "2016-05-01T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc035c8de", "title": "Building Microservices", "url": "https://www.adamtornhill.com/reviews/buildingmicroservices.htm", "published_at": "2016-04-17T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc04188eb", "title": "Refactoring for Software Design Smells", "url": "https://www.adamtornhill.com/reviews/refactoringdesignsmells.htm", "published_at": "2016-03-17T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc104beda", "title": "Clojure for Machine Learning", "url": "https://www.adamtornhill.com/reviews/clojuremachinelearning.htm", "published_at": "2016-03-06T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc1f27b26", "title": "Kill the Clones", "url": "https://www.adamtornhill.com/articles/aspnetclones/killtheclones.html", "published_at": "2015-12-11T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc2282c08", "title": "Programming Collective Intelligence", "url": "https://www.adamtornhill.com/reviews/programmingcollectiveiq.htm", "published_at": "2015-08-02T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc2e2154c", "title": "Analyzing Code Churn with Clojure and Zoo", "url": "https://www.adamtornhill.com/articles/clojure/zoochurn.htm", "published_at": "2015-06-04T21:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc2efdb12", "title": "Mastering Clojure Macros", "url": "https://www.adamtornhill.com/reviews/masteringclojuremacros.htm", "published_at": "2015-05-31T21:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc3bdbb41", "title": "The Code as a Crime Scene Gallery", "url": "https://www.adamtornhill.com/articles/crimegallery/codecrimescenegallery.htm", "published_at": "2015-05-26T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc49d201a", "title": "Writing a Technical Book", "url": "https://www.adamtornhill.com/articles/writingbook/writingtechbook.htm", "published_at": "2015-05-12T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc52dbe3a", "title": "Meet the Social Side of Your Codebase", "url": "https://www.adamtornhill.com/articles/socialside/socialsideofcode.htm", "published_at": "2015-04-11T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc5dd1aeb", "title": "Why I view Code as a Crime Scene", "url": "https://www.adamtornhill.com/articles/crimeqa/whycodecrimescene.htm", "published_at": "2015-03-23T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc6455dd3", "title": "Learning Smalltalk from Pharo by Example", "url": "https://www.adamtornhill.com/reviews/pharobyexample.htm", "published_at": "2015-02-01T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc6f87532", "title": "Learn You a Haskell for Great Good!", "url": "https://www.adamtornhill.com/reviews/learnhaskell.htm", "published_at": "2015-01-02T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc7abd0bc", "title": "WCF Cookbook", "url": "https://www.adamtornhill.com/reviews/wcfcookbook.htm", "published_at": "2015-01-01T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc7c8eca5", "title": "New book!", "url": "https://www.adamtornhill.com/index.htm", "published_at": "2014-12-05T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc8c331db", "title": "Beauty in Code", "url": "https://www.adamtornhill.com/articles/beauty/beautyincode.htm", "published_at": "2014-07-21T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc9322411", "title": "Programming Elixir", "url": "https://www.adamtornhill.com/reviews/progelixir.htm", "published_at": "2014-06-27T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debc9b506ae", "title": "Clojure for Domain-specific Languages", "url": "https://www.adamtornhill.com/reviews/clojuredsl.htm", "published_at": "2014-04-11T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debca9148cb", "title": "Clojure High Performance Programming", "url": "https://www.adamtornhill.com/reviews/clojurehighperf.htm", "published_at": "2014-04-11T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debcb109e3e", "title": "The Art of the Metaobject Protocol", "url": "https://www.adamtornhill.com/reviews/amop.htm", "published_at": "2014-03-15T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debcb6c3571", "title": "The Soundtrack to Code", "url": "https://www.adamtornhill.com/articles/soundtrack/codesound.htm", "published_at": "2014-01-24T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debcc124b53", "title": "Object-Oriented Metrics in Practice", "url": "https://www.adamtornhill.com/reviews/oometrics.htm", "published_at": "2013-12-30T15:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debcc1659a5", "title": "Clojure Data Analysis Cookbook", "url": "https://www.adamtornhill.com/reviews/clojuredataanalysis.htm", "published_at": "2013-11-22T10:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debcc579de2", "title": "Code as a Crime Scene", "url": "https://www.adamtornhill.com/articles/crimescene/codeascrimescene.htm", "published_at": "2013-11-18T19:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debcd43415a", "title": "Loving Common Lisp", "url": "https://www.adamtornhill.com/reviews/lovinglisp.htm", "published_at": "2013-11-01T11:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debce130349", "title": "Paradigms of Artifical Intelligence Programming", "url": "https://www.adamtornhill.com/reviews/paip.htm", "published_at": "2013-09-10T07:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debce4b4a51", "title": "CodeMaat", "url": "https://www.adamtornhill.com/code/codemaat.htm", "published_at": "2013-09-10T06:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debcf11ff76", "title": "The Wisdom of Psychopath", "url": "https://www.adamtornhill.com/reviews/wisdompsychopaths.htm", "published_at": "2013-08-04T09:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debcf377535", "title": "Snakes in Suits", "url": "https://www.adamtornhill.com/reviews/snakesinsuits.htm", "published_at": "2013-08-04T08:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debd000cca4", "title": "OCaml from the Very Beginning", "url": "https://www.adamtornhill.com/reviews/ocamlverybeginning.htm", "published_at": "2013-07-19T22:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debd079038b", "title": "Growing Object-Oriented Software", "url": "https://www.adamtornhill.com/reviews/goos.htm", "published_at": "2013-06-26T22:00:00+00:00" }, { "id": "01a0871f-b7e1-70e7-be0a-4debd1020002", "title": "The Nature of Code", "url": "https://www.adamtornhill.com/reviews/natureofcode.htm", "published_at": "2013-05-15T22:00:00+00:00" }, { "id": "01a0871f-b7e2-705a-bacf-b9aafeb7a2c0", "title": "Learning Processing", "url": "https://www.adamtornhill.com/reviews/learningprocessing.htm", "published_at": "2013-05-15T21:00:00+00:00" }, { "id": "01a0871f-b7e2-705a-bacf-b9aaff90752c", "title": "Framework Design Guidelines", "url": "https://www.adamtornhill.com/reviews/frameworkdesign.htm", "published_at": "2013-04-30T08:00:00+00:00" }, { "id": "01a0871f-b7e2-705a-bacf-b9aaffa91dec", "title": "Making Software", "url": "https://www.adamtornhill.com/reviews/makingsoftware.htm", "published_at": "2013-03-20T08:00:00+00:00" }, { "id": "01a0871f-b7e2-705a-bacf-b9ab007d8f16", "title": "The Joy of Clojure", "url": "https://www.adamtornhill.com/reviews/joyofclojure.htm", "published_at": "2013-03-04T08:00:00+00:00" }, { "id": "01a0871f-b7e2-705a-bacf-b9ab00bc1ec1", "title": "Clojure Programming", "url": "https://www.adamtornhill.com/reviews/clojureprogramming.htm", "published_at": "2013-01-28T08:00:00+00:00" }, { "id": "01a0871f-b7e2-705a-bacf-b9ab013e8a4a", "title": "The Signs of Trouble", "url": "https://www.adamtornhill.com/articles/signs/signs.htm", "published_at": "2012-10-14T08:00:00+00:00" }, { "id": "01a0871f-b7e2-705a-bacf-b9ab0213d73c", "title": "Fluent C#", "url": "https://www.adamtornhill.com/reviews/fluentcsharp.htm", "published_at": "2012-09-26T08:00:00+00:00" }, { "id": "01a0871f-b7e2-705a-bacf-b9ab025a1f57", "title": "Patterns in C - The Book", "url": "https://www.adamtornhill.com/articles/patternsinc/patternsincnew.htm", "published_at": "2012-09-20T08:00:00+00:00" } ] posts Claim your blog
Back to adamtornhill.com
Blog · corpus.blog/blogs/adamtornhill.com/posts

adamtornhill.com

adamtornhill.com

2026

2018

2017

2016

15 Nov 2016

2015

2014

2013

2012