Skip to content(if available)orjump to list(if available)

Two Hard Things (2009)

Two Hard Things (2009)

11 comments

·January 20, 2025

EdwardCoffin

I'm partial to this non-jokey take on two hard things:

Phil Karlton famously said there are only two hard things in Computer Science: cache invalidation and naming things. I gather many folks suppose "naming things" is about whether to use camel-case or not, or picking specific symbols we use to name things, which is obviously trivial and mundane. But I always assumed Karlton meant the problem of making references work: the task of relating intension (names and ideas) and extension (things designated) in a reliable way, which is also the same topic as cache invalidation when that's about when to stop the association once invalid.

https://web.archive.org/web/20130805122711/http://lambda-the...

xarope

ah, ye olde two hard things, namely:

  1) cache invalidation
  2) naming things
  0) off-by-one

saltyoutburst

Credit where credit is due. https://x.com/secretGeek/status/7269997868

xarope

with apologies to Leon, I think I first saw it from Martin (he gives full credit to the sources), so I'll post to link here for completeness:

https://martinfowler.com/bliki/TwoHardThings.html

gsf_emergency

As counter-inspired by a fellow HNer, the encoding of this problem (cribbed from Dirac/von Neumann, so any inanity is all mine!) ought to be:

  f[<Intension|Extension>] == 0

bmacho

What are <A|B> and f[C]?

gnkyfrg

[dead]

lalaithion

There’s two hard problems in computer science: cacsynchronizing shared access to the same resource.he invalidation, and

LeonB

I find “co-ordinating distributed transactions” to be very hard. Getting any kind of optimum cooperation between self-centred agents is tricky.

Also — “Jevon’s paradox”. That one is nasty! For example: just about anything we do to decrease use of fossils fuels by some small percent, makes the corresponding process more efficient, more profitable, and thus happen more. That’s a nasty nasty problem. I guess it’s not specific to computer science, but all engineering.

tmarice

Everybody knows the two hard things are timezones and unicode.

cryptonector

Eh, only one hard thing then, because as hard as Unicode is timezones is way harder.