E
Eddie Kohler
read.seas.harvard.edu/~kohler · Personal blog · on HN since 2012
Eddie Kohler is a Harvard computer science professor whose pages cover operating systems, systems papers, LaTeX tips, and course material.
What HN saysHN links it for his red-black tree critique of left-leaning variants, a LaTeX guide, and operating systems course pages that one commenter found really useful.
20HN people shared it
14linked it in comments
7stories submitted
17story points
7 months agolast shared
2012people per year2026
Most-shared posts
- 1Left-Leaning Red-Black Trees Considered Harmful7 people · 6 points · first shared 2013 · discussion on HN
- 2Paxos Made Live – An Engineering Perspective [pdf]3 people · 2 points · first shared 2012 · discussion on HN
- 3The Evolution of the Unix Time Sharing System [pdf]2 people · 2 points · first shared 2017 · discussion on HN
- 4Events Can Make Sense (2007) [pdf]1 people · 6 points · first shared 2014 · discussion on HN
- 5Scalable Commutativity: Designing Scalable Software for Multicore Processors1 people · 1 points · first shared 2013 · discussion on HN
- 610f aos1 people · first shared 2019
- 7Mazieres07paxos.pdf1 people · first shared 2014
- 8Singularity1 people · first shared 2025
- 9Latex1 people · first shared 2023
- 10Kumar07system.pdf1 people · first shared 2016
- 11Decandia07dynamo.pdf1 people · first shared 2013
What HN people wrote when they linked it
haberman · 2019-12-30
I didn't realize you could implement a red-black tree with this little code.
The code shown here seems to indicate that insert has at least four cases, and delete has six: https://en.wikipedia.org/wiki/Red%E2%80%93black_tree
But the code I see here is very small: https://github.com/codr7/libcodr7/blob/master/source/codr7/rbnode.c
I guess it's not handling delete, which probably accounts for a lot of the difference.
EDIT: I see that it's implementing a left-leaning red/black tree. I see some caution about that approach here? Would love to get the author's opinion about this: http://read.seas.harvard.edu/~kohler/notes/llrb.html
nickpsecurity · 2016-06-06
"Would you need less gates than a Forth system?"
That's not a fair question given Forth doesn't do crap compared to alternatives I'm pushing. More like "Does it use a reasonable number of gates for a commercial processor? For a MCU, do any schemes use a tiny number of gates to provide some protections vs existing MCU's?"
Answer to these are yes. As several people want links, here's a list of approaches ranging from safety to security, full to partial, MPU to MCU.
Two of the best for full safety are Hardbound and Watchdog, both from same group:
https://www.cis.upenn.edu/acg/papers/asplos08_hardbound.pdf
https://www.cs.rutgers.edu/~santosh.nagarakatte/papers/isca12_watchdog…
One provides full spatial safety with other providing full memory safety with both having C compatibility. There are significant extra chip resources. Not a problem in a microprocessor, though, given the frivilous stuff takes up more space than this. The performance overhead is usually single-digit (under 5%) with it maxing out on 20% on Hardbound and 25% on Watchdog. For Watchdog, that's trading occasional 25% hit or buying a bit of extra CPU to get fully-compatible and safe C software. Great trade. HW experts could probably optimize it even further.
CHERI processor:
https://www.cl.cam.ac.uk/~swm11/research/papers/isca2014.pdf
CHERI processor adds capability-security to mix on MIPS processor. FreeBSD already ported. Uses 32% extra logic elements with 8% clock speed reduction and overhead…
skribanto · 2024-06-24
Left leaning red black trees enforce extra constraints, which remove symmetries. This actually adds an edge case when instead you can just treat left/right rotations and comparisons as symmetric operations.
Left Leaning Red Black Trees Considerer Harmful: https://www.read.seas.harvard.edu/~kohler/notes/llrb.html
bluenose69 · 2023-03-12
A good resource for those of us who like TeX and LaTeX: https://www.read.seas.harvard.edu/~kohler/latex.html
anonuser123456 · 2019-01-11
I don't know what's in the CS-61 course, but his UCLA-CS235 Advanced Operating Systems course was REALLY useful. You build the important bits of a multitasking OS.
http://read.seas.harvard.edu/~kohler/class/10f-aos/
tankenmate · 2017-08-19
roff was the financial back reason that Unix moved from PDP-7 / assembler to PDP-11 / C.
http://www.read.seas.harvard.edu/~kohler/class/aosref/ritchie84evoluti…
MaxScheiber · 2016-12-22
I haven't actually found LLRBs to be simpler to implement, and a couple other sources agree with me. They're pedagogically simpler than standard RB trees, but if your goal is to introduce students to a balanced binary tree, I'd argue that AVLs are easier to teach and implement than either RBs or LLRBs.
http://t-t-travails.blogspot.com/2008/04/left-leaning-red-black-trees-…
http://www.read.seas.harvard.edu/~kohler/notes/llrb.html
signa11 · 2015-04-06
and here is the critique of it : http://www.read.seas.harvard.edu/~kohler/notes/llrb.html (left-leaning-rb-trees-considered-harmful)
userbinator · 2014-12-01
The link to the implementation is 404 and I can't find it in that directory either. A quick search of LLRB trees suggests that its only advantage is supposedly "easier to implement" but that doesn't appear to be the case in practice. In fact one of the links I found is http://www.read.seas.harvard.edu/~kohler/notes/llrb.html
It almost feels like LLRB trees are a bit of a scam.
biscarch · 2013-11-01
Personally I started investigating and using a production system[1] which introduced a bunch of basic concepts and I read a few papers such as the Dynamo paper[2]. Then I went deeper into riak_core[3] and Erlang/OTP. At this point I have a context in which to read and understand more papers (such as those OP linked) and I've studied concepts such as Eventual Consistency, Vector Clocks, Map Reduce, Gossip Protocols, etc.
I'm not an expert by any means but I found this route to be a fun one and the riak/erlang related irc channels are awesome (and helpful) to hang around in.
[1] Riak: http://docs.basho.com/riak/latest/downloads/
[2] http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/decandia07dyn…
[3] https://github.com/basho/riak_core
[4] http://www.rgoarchitects.com/Files/fallacies.pdf
mwcremer · 2012-05-31
See also "Paxos Made Live" http://www.read.seas.harvard.edu/~kohler/class/08w-dsi/chandra07paxos.…
antics · 2018-11-13
Raft is certainly easier to explain, but it's hard to argue that Raft is more practical.
For one thing, implementing Raft in a performant way is incredibly difficult. Where paxos has very fine-grained units of consensus (e.g., ballots), in Raft, everything happens through leases, and is totally linear. This is one of the major reasons a bunch of (all?) major Raft implementations do unprincipled things like non-quorum reads. This sort of problem also makes it very difficult to get Raft to do anything on an unreliable network. Raft is also super noisy, so you have to do stuff like piggy back heartbeats in other RPC calls.
One way of thinking about this is: in paxos much of the complexity is in the specification itself. Performant Raft pushes this complexity into external systems. Both of these are extremely hard problems. There is no free lunch.
If the problem is really just verifying the model, then I think you are better off writing a simple modeling language, writing paxos in it, and then compiling that to c++ or something. This was the approach Google took in paxos made live[1] for example.
[1]: http://www.read.seas.harvard.edu/~kohler/class/08w-dsi/chandra07paxos.…
Lammy · 2025-02-28
Relevant: Singularity/Midori (2003–2015)
https://en.wikipedia.org/wiki/Singularity_(operating_system)
https://en.wikipedia.org/wiki/Midori_(operating_system)
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/os…
https://web.archive.org/web/20090112172352/http://research.microsoft.c…
https://read.seas.harvard.edu/~kohler/class/cs261-f11/singularity.html
https://web.archive.org/web/20180228191626/https://archive.codeplex.co…
sigil · 2014-01-21
Bitcoin is the first practical solution to a longstanding problem in computer science called the Byzantine Generals Problem.
Wait, isn't Paxos arguably the first practical solution to BGP? [0] [1] It's been in production use at Google since at least 2006. [2]
Furthermore, Paxos actually has a proof that timely consensus will be reached. Do we have the same level of rock-solid mathematical certainty about Bitcoin yet? The Eyal-Sirer paper [3] from late 2013 raised some concerns about a new mining strategy that might lower the attack threshold from 50% to 33%. Ed Felton's group at Princeton responded with some interesting analysis from game theory [4], but AFAIK there is no rigorous proof yet that the selfish mining equilibrium isn't a real threat.
If Bitcoin is The Way of the Future (I hope it is), we need to be sure about these things. Hand-waving statements about how Bitcoin isn't vulnerable because no one has found an exploit yet [5] are ridiculous and dangerous.
[0] http://en.wikipedia.org/wiki/Paxos_(computer_science)#Byzantine_Paxos
[1] http://read.seas.harvard.edu/~kohler/class/08w-dsi/mazieres07paxos.pdf
[2] http://research.google.com/archive/chubby.html
[3] http://arxiv.org/pdf/1311.0243v2.pdf
[4] https://freedom-to-tinker.com/blog/felten/bitcoin-isnt-so-broken-after…
[5] https://twitter.com/cdixon/status/412447615331360768