Work in progress: 181,232 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #8063

J

Jeff Davis

Personal blog · thoughts.davisjeff.comdataprogramming

Jeff Davis writes Experimental Thoughts, a personal blog at thoughts.davisjeff.com about data and programming. Since 2012, 10 different Hacker News readers have linked it 22 times, most often “What is the deal with NULLs?”. The last post was in 2012, but the archive is still widely read.

Visit the blog
22mentions?
10HN people?
2012–2025first – last linked?
Links on Hacker News per year · peak 6 in 2020

Too few sampled comments (4) to say how often HN recommends it.?

Why HN links it

HN readers link Jeff Davis's blog for its posts on SQL, especially NULL's unintuitive behaviour in Postgres, and for critiques of SQL's design. Commenters cite it when discussing SQL edge cases.

Summarised by Claude from a sample of 4 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

Most-linked posts?

  1. What is the deal with NULLs?
    6 people · 10 mentions · first linked 2014-08-25
  2. /2011/09/25/sql-the-successful-cousin-of-haskell/
    2 people · 3 mentions · first linked 2015-07-23
  3. /2009/11/29/linux-oom-killer/
    2 people · 2 mentions · first linked 2014-04-06
  4. Choosing Data Types
    2 people · 2 mentions · first linked 2012-08-22

What Hacker News says?

  1. I agree with the other comments here. It reminded me, unfortunately, that I did something like that once: http://thoughts.davisjeff.com/2007/11/17/700-queries-for-one... I can rationalize it in a few different ways, I'm sure. But the bottom line is that, if it's open source software, the correct approach is to either offer constructive criticism directly to the developers, or just not say anything without being dire…

    Comment linking /2007/11/17/700-queries-for-one-page-load/

    on “What It's Like To Be Ridiculed For Open Sourcing A Project”
  2. Submitted Taking a Step Back from ORMs as a story · 18 points

    HN discussion
  3. A CRA DB is essentially a SQL database with temporal capability. Even if you have perfect time-warping capabilities, there are still big challenges to solving bugs with that kind of analysis. The time the bug is noticed may be long after the root cause, and working backward could be a very slow process. That's why SQL has declarative constraints, to try to make the error noticed at a time closer to the root cause. W…

    Comment linking /2009/12/23/good-error-recovery-is-hard-so-use-postgresql/

    on “How Lisp is Going to Save the World”
  4. Submitted What is the deal with NULLs? as a story · 5 points

    HN discussion
  5. If you think haskell would make a good database language, you're probably right. It's a lazy, statically-typed, type-inferred, declarative language with tightly-controlled side effects -- just like SQL. But in its current form, Haskell is just not a DBMS. So, it must rely on a DBMS like postgres or mysql, and the semantics of the DBMS matter very much. And yes, I can compare SQL to Haskell, and I did a while back: h…

    Comment linking /2011/09/25/sql-the-successful-cousin-of-haskell/

    on “Why favor PostgreSQL over MariaDB/MySQL?”
  6. Submitted What is the deal with NULLs in SQL? (2009) as a story · 3 points

    HN discussion
  7. "The hard economic truth for engineers is that technical excellence is overwhelmingly irrelevant" No. Technical excellence matters a lot when used appropriately, but competing with javascript and python is not where haskell is going to win. There IS a language with HUGE success that is: declarative, strongly typed with type inference, lazy, and no side effects. It's called SQL[1]. That's where Haskell could shine --…

    Comment linking /2011/09/25/sql-the-successful-cousin-of-haskell/

    on “On Marketing Haskell”
  8. Submitted What is the deal with NULL in SQL? as a story · 3 points

    HN discussion
  9. A great one to pile on here is null. Null is quite the unique thing within SQL, this post from some years ago highlights a lot of the unintuitive behavior around it within Postgres - http://thoughts.davisjeff.com/2009/08/02/what-is-the-deal-wi...

    Comment linking /2009/08/02/what-is-the-deal-with-nulls/

    on “SELECT wat FROM sql”
  10. Submitted What is the deal with NULLs? (2009) as a story · 3 points

    HN discussion
  11. "shouldn't index hints be supported" Index hints already are supported in multiple different ways: http://thoughts.davisjeff.com/2011/02/05/why-postgresql-alre... "I see this as a case of devs overriding users" I don't think that's an accurate characterization. I'm sure there are some improvements to hinting that would be approved if they are well thought out and don't introduce major maintainability concerns, etc.…

    Comment linking /2011/02/05/why-postgresql-already-has-query-hints/

    on “PostgreSQL 9.2: Full-throttle Database”
  12. Submitted What is the deal with NULLs? (2009) as a story · 2 points

    HN discussion
  13. "First of all, in SQL NULL is entirely your choice - no column is forced to accept NULL values." That's not true. Aggregate functions and outer joins produce NULLs even without NULLs in your data. This absolutely can cause weirdness. "The only exception are aggregation functions..." It's more weird and subtle than that. See: http://thoughts.davisjeff.com/2009/08/02/what-is-the-deal-wi...

    Comment linking /2009/08/02/what-is-the-deal-with-nulls/

    on “Fighting Rust's Expressive Type System”
  14. Submitted What is the deal with NULLs? (2009) as a story · 2 points

    HN discussion
  15. http://thoughts.davisjeff.com/2009/08/02/what-is-the-deal-wi... A lot of people make the mistake of trying to understand SQL NULL, like it's some kind of intelligent system with an underlying model behind it. It's not. It's a collection of various special-case behaviors that "make sense" in some contexts and cause confusion in many others.

    Comment linking /2009/08/02/what-is-the-deal-with-nulls/

    on “Three-Valued Logic”
  16. Submitted Choosing Data Types as a story · 2 points

    HN discussion
  17. On Linux, somewhat infamously, malloc never fails. It will always return a pointer to some fresh part of the address space. It is able to do this because, in turn, sbrk/anonymous mmap never fails - it always allocates some fresh address space. It is able to do this because Linux does not allocate physical memory (or swap) when it assigns address space, but when that address space is actually used. It will happily al…

    Comment linking /2009/11/29/linux-oom-killer/

    on “A Story Of realloc (And Laziness)”
  18. Submitted Applications vs. Platforms as a story · 2 points

    HN discussion
  19. As I wrote before: http://thoughts.davisjeff.com/2009/08/02/what-is-the-deal-wi... "NULL semantics are designed to make you think you understand them, and think that the semantics are intuitive, and think that it’s part of some ingenious consistent system for managing missing information. But none of those things are true." Any explanation you come up with does not generalize to other cases. NULL is just a bunch of…

    Comment linking /2009/08/02/what-is-the-deal-with-nulls/

    on “Handling Null Values in Postgres”
  20. To anyone saying that you shouldn't "kill -9" a process, or that you should do some song-and-dance first: kill -9 is exactly what the OOM (out-of-memory) killer on linux does when memory is short. Typically, the application has no good way to even know that memory is short, because linux radically overcommits memory and still won't return a NULL from a malloc(). So, software should be written to assume it might be k…

    Comment linking /2009/11/29/linux-oom-killer/

    on “When should I not kill -9 a process?”
  21. One of the differences with postgres is that it's OK to use interesting data types. Other systems treat it as though it were somehow wrong. See my post here: http://thoughts.davisjeff.com/2009/09/30/choosing-data-types... And no, using arrays is not an automatic violation of first normal form.

    Comment linking /2009/09/30/choosing-data-types/

    on “Arrays in Postgres”
  22. Good point, I think I should not even link to that blog post that refers to it as such. http://thoughts.davisjeff.com/2011/09/25/sql-the-successful-...

    Comment linking /2011/09/25/sql-the-successful-cousin-of-haskell/

    on “Escaping the Von Neumann architecture”

Search all of HN for thoughts.davisjeff.com

Linked by the same people?