Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    T

    Ted Neward

    blogs.tedneward.com · Personal blog · on HN since 2008

    Ted Neward, a software consultant and author, writes about object/relational mapping, programming languages, design patterns, and developer learning.

    Visit blogHN submissions
    ProgrammingDatabases
    What HN says

    HN commenters cite 'The Vietnam of Computer Science' in ORM debates, and one names Neward as a skilled developer.

    Stats for nerds
    76HN people shared it
    50linked in comments
    538story points
    May 2022last shared
    2009people per year2022

    Top posts on HN

    1. 1
      Problems with Object/Relational Mapping (2006)
      34 people · 145 points · first shared 2016 · 92 comments on HN
    2. 2
      Unlearn, young programmer
      2 people · 143 points · first shared 2012 · 29 comments on HN
    3. 3
      Is Programming Less Exciting Today?
      1 person · 71 points · first shared 2012 · 79 comments on HN
    4. 4
      Reclaiming Design Patterns 20 Years Later
      1 person · 41 points · first shared 2016 · 11 comments on HN
    5. 5
      What is "news", and what is "unethical"?
      1 person · 29 points · first shared 2009 · 18 comments on HN
    6. 6
      The Vietnam of Computer Science
      15 people · 16 points · first shared 2008 · 1 comments on HN
    7. 7
      Ted Neward evaluates 20 programming languages
      1 person · 12 points · first shared 2008 · 24 comments on HN
    8. 8
      Pro-choice Programmer
      1 person · 11 points · first shared 2008 · 8 comments on HN
    9. 9
      Death to Best Practices
      1 person · 9 points · first shared 2010 · 2 comments on HN
    10. 10
      On the Dark Side of "Craftsmanship"
      1 person · 8 points · first shared 2013 · Discussion on HN

    What HN people wrote when they linked it

    • akeeferJul 2009

      I wasn't one of the ones who upvoted or downvoted you, but just because you asked . . . while abstractions around your data-handling code are always a good idea, on some level they always leak. (For example, see the classic post http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx describing how ORM, one of the most common approaches to encapsulating data-handling code, tends to fail).

      Most of your code is data-handling code on some fundamental level, so it's pretty inevitable that it's going to matter to your application how that data is stored and what sorts of operations you can do on it, and that's especially true if you care about performance (which you generally always do after some level). So even if you have a nice abstraction of your query layer, the kinds of questions you can ask the database efficiently depend heavily on the underlying storage mechanism, and so your application logic has to be built so it only asks the right kinds of questions.

      Even abstracting away the differences between, say, Oracle and MS SQLServer and MySQL is difficult enough, because of the different capabilities and performance characteristics. When you do that, you basically end up coding to the lowest common denominator, which can often limit what your applications does.

      Trying to come up with an abstraction that can encapsulate the difference between a row- versus column-oriented database, or between a relational database and some other kind of storage, is…

    • JachJun 2018

      This thread demonstrates that ORM is still (one of several of?) our field's Vietnam war... http://blogs.tedneward.com/post/the-vietnam-of-computer-science/

      On top of the data/frameworks issue there's the one of data locality. Frameworks make the tradeoff decisions for you, but not always the right ones since the right tradeoffs are application-dependent. In one context using a cluster of commodity machines that do a mix of compute for your service and store and shuffle data around is a good idea. In another context a few beefy servers with the beef divided up between the app servers and database servers depending on where most of the compute most efficiently takes place is a better idea. (Though even with poor performance design, hardware is still good enough that a lot of things run just fine by having multiple services on one modest machine. That doesn't stop lots of programmers from reaching for frameworks that demand easily scaleable multi-machine systems even when there's no need and won't ever be need.)

      In any case consistency matters: SQL strings are just one form of shipping code to the data to compute remotely instead of retrieving the data and computing locally. When you bring in an ORM, inconsistency is bound to follow with lots of computation that could have been in a query or stored procedure now living in the ORM framework and the application itself.

      I can at least understand many people's annoyance with stored procedures though. Most DBs procedural…

    • sjwrightOct 2013

      Because you can't cleanly map objects to sets nor sets to objects. Sure, if you want to pretend an RDBMS is an object store you certainly can, but you'll be forced to have an incredibly stupid schema, and will miss out on much of the benefits of a good RDBMS.

      Turning a powerful SQL database engine into an object storage emulator is just sad.

      If your underlying data suits objects better than sets, consider using something that's designed for the job, like one of the many non-SQL database systems.

      Although it may seem trite to say it, Object/Relational Mapping
      is the Vietnam of Computer Science. It represents a quagmire which
      starts well, gets more complicated as time passes, and before long
      entraps its users in a commitment that has no clear demarcation
      point, no clear win conditions, and no clear exit strategy.

      http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx

      Well worth reading.

      Also:

      http://database-programmer.blogspot.com.au/2010/12/historical-perspective-of-orm-and.html

      http://www.codinghorror.com/blog/2006/06/object-relational-mapping-is-the-vietnam-of-computer-science.html

    • lelanthranJan 2022

      > In my limited experience, code built around relational databases is difficult to grok. The structure is inverted with respect to typical OOP. Rather than having a sane class hierarchy, where one can start at the top and navigate down to understand how objects are nested, the structure is inverted, piecing together class relationships requires looking at the tables and following foreign keys which effectively point to parent classes. It feels backwards.

      Other than your first sentence (which is subjective), you are correct. The only question is whether you are going to mangle the database structure to fit your OO hierarchy or design your program in a non-OO way to fit the relational structure.

      Since the database will live on long past the program, and will have multiple programs talking to it, it makes sense to design your program around the data, not design the database structure around your program.

      [EDIT: See https://blogs.tedneward.com/post/the-vietnam-of-computer-science/ for why OO is a terrible design for persistent data]

    • specialistMay 2022

      > pinnacle of GUI design/rapid prototyping

      Ditto database work.

      The client/server paradigm is the corpus calloscotomy (split brain surgery) of our industry.

      Begetting ORMs, LINQ, ActiveRecord, chaotic mutant query language templating system of the week, and other well-intentioned but ultimately detrimental efforts. All being unwitting attempts to regain what was lost.

      Famously described by Ted Neward's "Vietnam of Computer Science" rant. http://blogs.tedneward.com/post/the-vietnam-of-computer-science/ Though Neward somehow avoids identifying the root cause (client/server).

      FWIW, I did a bunch of R:Base, dBase/FoxPro, Access, and FileMaker (ahem) projects, back in the day. Sadly never had an excuse to use Paradox in anger, which I understand was the pinnacle for "workgroup" apps (LAN-based, meaning shared access thru file locking).

    • rqmedesJun 2019

      The problem space (Business) is not complex, its incredibly simple.
      Unfortunately the design patterns we use and the tooling is flawed.
      It has been this way for at least 25 years and the RDBMS, languages, design patterns, and architectures ( 2-tier/ 3-tier) are the cause.

      They make it simple to get started and even without knowing what you are doing you can easily churn out something that works if it is simple, doesn't change often, doesn't need to scale and deals with small amounts of data.

      But similar to
      http://blogs.tedneward.com/post/the-vietnam-of-computer-science/

      "It represents a quagmire which starts well, gets more complicated as time passes, and before long entraps its users in a commitment that has no clear demarcation point, no clear win conditions, and no clear exit strategy."

      RDBMS are the root cause.

    Related

    Tomas Petricektomasp.net152 people

    Write your own Excel in F# (2018)

    Tomas Petricek
    Personal · last shared 2026
    The Database Programmerdatabase-programmer.blogspot.com17 people

    Minimize Code, Maximize Data

    The Database Programmer
    Personal · last shared 2013
    ThoughtWorks Blogthoughtworks.github.io17 people

    Continuous Design and the NoPSD Movement

    ThoughtWorks Blog
    Company · last shared 2022
    Dave Cheneydave.cheney.net271 people

    Why Slack is inappropriate for open source communications

    Dave Cheney
    Personal · last shared 2026
    Mark Seemannblog.ploeh.dk171 people

    From Design Patterns to Category Theory (2017)

    Mark Seemann
    Personal · last shared 2026
    Object Mentor Blogblog.objectmentor.com47 people

    Papers Every Programmer Should Read (At Least Twice)

    Object Mentor Blog
    Company · last shared 2012
    Ted Unangsttedunangst.com269 people

    Can an email go 500 miles in 2025?

    Ted Unangst
    Personal · last shared 2026
    Coding Horrorblog.codinghorror.com2.1k people

    Farewell Stack Exchange

    Coding Horror
    Personal · last shared 2026