T
Tony Marston
tonymarston.net · Personal blog · on HN since 2007
Tony Marston, a veteran developer who writes opinionated essays on PHP, object-oriented design, and his Transaction Patterns approach to web applications.
What HN saysOne commenter praises him as a source of practical business software wisdom, and another quotes his contrast of rule-following with pragmatic development.
19HN people shared it
3linked it in comments
17stories submitted
217story points
2 years agolast shared
2007people per year2026
Most-shared posts
- 1Dependency Injection is Evil (2011)6 people · 85 points · first shared 2013 · 69 comments on HN
- 2Why I don't do Domain Driven Design (2018)3 people · 111 points · first shared 2019 · 64 comments on HN
- 3Not so solid OO principles3 people · 5 points · first shared 2012 · discussion on HN
- 4The case against static typing in PHP (2023)1 people · 9 points · first shared 2024 · 10 comments on HN
- 5Tony Marston: Transaction Patterns for Web Applications (2003-2018)1 people · 2 points · first shared 2018 · discussion on HN
- 6What Is a Framework?1 people · 2 points · first shared 2019 · discussion on HN
- 7Table Oriented Programming in a Nutshell1 people · 2 points · first shared 2022 · discussion on HN
- 8Design Patterns are dead! Long live Transaction Patterns!1 people · 1 points · first shared 2007 · discussion on HN
- 9Thoughts1 people · first shared 2009
- 10Homepage1 people · first shared 2009
- 11Infrastructure1 people · first shared 2012
What HN people wrote when they linked it
mahmud · 2009-10-08
Cobol programmers are a goldmine of wisdom and knowledge. You will learn more about business software from an old, unsung bloke like Tony Marston than anybody celebrated methodology or blogsphere celebrity.
http://www.tonymarston.net/
Having said that. I really wish more people would ignore them, for my own competitive benefit.
ananthrk · 2009-10-08
[from http://www.tonymarston.net/aboutme/thoughts.html]
There are two basic approaches to software development:
Rules oriented - where you follow a set of rules or a methodology religiously, to the letter and without question and just assume that the results, whatever they are, must be acceptable.
Results oriented - where you aim to produce the best results in the shortest possible time and use whatever methodology or rule set that helps you achieve this aim.
One requires blind obedience, plus, from what I have seen on more than one occasion, an unerring ability to invent interpretations of those rules that are so obscure and perverse that they do nothing but increase complexity and decrease productivity.
The other requires intelligence and skill, the ability to know which rules and methods to adopt, when and how to adapt them to fit a particular purpose, and when to reject them in favour of something better.
- Tony Marston
petewailes · 2012-10-01
K, I'm going to throw my hat in the ring here and say this is a good idea, and outline (mostly through referencing other people's work as it's 00.38) how I've spent the last few years building applications.
I'm going to intentionally simplify so that the less experienced here can keep up (hopefully). For those with more code-fu, feel free to poke me for more information.
Right, imagine we have a blog engine for something that needs to be able to handle huge data requests. Our code base logic at its simplest looks something like this:
Down:
Request ->
Router (turns URL structure into a set of useful data inputs) ->
Pre-processor (uses those inputs to fire up the classes we'll need, namely to get data first) ->
Primary validation (makes sure everything that was put in is sensible and safe) ->
Model pre-processor (calculates which data store we need to query, a key-value store of all data, a cache of various pieces of data, or our single monolithic store) ->
Data store (cache/database/whatver)
Up:
Model post-processor (where our data was anything other than our computer store of values, generate whatever needs to be there and store it for next time) ->
Secondary validation (ensure our output is sanitized) ->
Business logic post-processor (to apply any data transformation required) ->
Output
It's specifically the pre-processor that we're talking about here. There's millions of ways to implement it, but something like what's outlined in the original post is…