Top all-time · #8063
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.
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?
- What is the deal with NULLs?6 people · 10 mentions · first linked 2014-08-25
- /2011/09/25/sql-the-successful-cousin-of-haskell/2 people · 3 mentions · first linked 2015-07-23
- /2009/11/29/linux-oom-killer/2 people · 2 mentions · first linked 2014-04-06
- Choosing Data Types2 people · 2 mentions · first linked 2012-08-22
What Hacker News says?
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”Submitted Taking a Step Back from ORMs as a story · 18 points
HN discussionA 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”Submitted What is the deal with NULLs? as a story · 5 points
HN discussionIf 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?”Submitted What is the deal with NULLs in SQL? (2009) as a story · 3 points
HN discussion"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”Submitted What is the deal with NULL in SQL? as a story · 3 points
HN discussionA 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”Submitted What is the deal with NULLs? (2009) as a story · 3 points
HN discussion"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”Submitted What is the deal with NULLs? (2009) as a story · 2 points
HN discussion"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”Submitted What is the deal with NULLs? (2009) as a story · 2 points
HN discussionhttp://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”Submitted Choosing Data Types as a story · 2 points
HN discussionOn 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)”Submitted Applications vs. Platforms as a story · 2 points
HN discussionAs 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”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?”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”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”