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 · #2701

L

limpet.net

Personal blog · limpet.net/mbrubeckprogrammingsystems

limpet.net is a personal blog at limpet.net about programming and systems. Since 2009, 28 different Hacker News readers have linked it 57 times, most often “Let’s build a browser engine (2014)”. No feed was found, so read it on the site itself.

No feed foundVisit the blog
57mentions?
28HN people?
2009–2025first – last linked?
Links on Hacker News per year · peak 18 in 2010

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

Why HN links it

HN readers link Matt Brubeck's limpet.net posts, mainly the 'Let's build a browser engine!' series, as a starting point for writing a browser engine, plus a post on Rust's interior mutability.

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

Most-linked posts?

  1. Let’s build a browser engine (2014)
    19 people · 19 mentions · first linked 2016-03-18
  2. Rust: A unique perspective
    5 people · 5 mentions · first linked 2019-02-07
  3. Let's build a browser rendering engine – Part 1: Getting started
    2 people · 2 mentions · first linked 2014-08-08
  4. What's different about Firefox for Android
    2 people · 2 mentions · first linked 2010-10-04

What Hacker News says?

  1. wernsey · 2020-08-18Recommends
    Let's build a browser engine! [1] by Matt Brubeck is a good place to start. I see Kosmonaut cites it in its README I once took a stab at rewriting it in C99 using reference counting for memory management [2], so I recognised the screenshot in Kosmonaut immediately. Unfortunately the article series stops before explaining inline layouts and I never got around to doing anything further with my implementation. [1] http…

    Comment linking /mbrubeck/2014/08/08/toy-layout-engine-1.html

    on “Kosmonaut: web browser from scratch in Rust”
  2. Submitted Congratulations on IE10: from Mozilla with cake as a story · 246 points

    HN discussion
  3. > If you watch the talk I linked below I've watched it several times over the past 2 years And I've read the posts about writing and HTML engine in Rust when they first came out in 2014 https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.h... and ported them to Elixir and still use them in my programming lessons > Rust was key to the success. For them It's important to specify that Rust, built by Firefox, lea…

    Comment linking /mbrubeck/2014/08/08/toy-layout-engine-1.html

    on “Chromium project finds that 70% of security defects are memory safety problems”
  4. Submitted Let’s build a browser engine (2014) as a story · 188 points

    HN discussion
  5. stijlist · 2016-07-25Recommends
    There's this great series by mbrubeck which sounds like it might be right up your alley: https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.h...

    Comment linking /mbrubeck/2014/08/08/toy-layout-engine-1.html

    on “Resources for Amateur Compiler Writers”
  6. Submitted Let's build a browser engine Part 3: CSS as a story · 147 points

    HN discussion
  7. I recently implemented a similar concept to this for HTML emails at shortwave.com, it only works for the subset of non table emails (which we assume are marketing emails and you want to see the full HTML). It allows us to render stuff wayyy faster (especially on mobile where webviews are not cheap). We don't go all the way to pixel layout because we want to have some responsiveness, but it allows for heavily normali…

    Comment linking /mbrubeck/2014/08/08/toy-layout-engine-1.html

    on “Show HN: Satori – Convert HTML and CSS to SVG”
  8. Submitted Build a browser engine part 5: Box model and layout tree as a story · 127 points

    HN discussion
  9. I never worked through this, and it may be outdated now, but Let's build a browser engine! seems to fit the bill: https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.h...

    Comment linking /mbrubeck/2014/08/08/toy-layout-engine-1.html

    on “Ask HN: Books that teach you programming languages via systems projects?”
  10. Submitted Let's build a browser engine, Part 6: Block layout as a story · 120 points

    HN discussion
  11. bArray · 2025-10-02Recommends
    See the other comment for a MITM large browser server: https://news.ycombinator.com/item?id=45446991 To do everything onboard, maybe, just maybe, you could parse basic HTML/CSS and images. But the majority of pages would of course fail anyway without full support for every modern feature. This seems like it could be useful: https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.h...

    Comment linking /mbrubeck/2014/08/08/toy-layout-engine-1.html

    on “Tactility: An ESP32 OS”
  12. Submitted Let's build a browser engine, part 7: Intro to Painting as a story · 90 points

    HN discussion
  13. stevekemp · 2017-08-13Recommends
    I found this article pretty interesting, a few months ago: https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.h... It walks through the basics of writing a layout engine which is extended over a series of posts to be quite flexible and interesting.

    Comment linking /mbrubeck/2014/08/08/toy-layout-engine-1.html

    on “NetRunner: a web browser catering to powerusers”
  14. Submitted Mobile web developers: Your users hate it when you do this as a story · 70 points

    HN discussion
  15. zozbot234 · 2020-01-04Recommends
    It's not a hack, although I can't really fault you for thinking otherwise. The borrow notations are & (shared) and &mut (exclusive, guarantees mutability regardless of type). 'Interior mutability' is a way of enabling shared data to be mutable. See https://limpet.net/mbrubeck/2019/02/07/rust-a-unique-perspec... for a more principled explanation, which even improves on Rust's official docs - this is probably best rea…

    Comment linking /mbrubeck/2019/02/07/rust-a-unique-perspective.html

    on “Interior Mutability Patterns in Rust”
  16. Submitted Let's build a browser engine, Part 4: Style as a story · 66 points

    HN discussion
  17. I doubt anyone has valid stastics to answer this, but I'll throw in yet another anecdote. For about five years I used Python for all my personal projects, then for a couple years I switched to Ruby because I was using it at work. Last year I switched to Haskell for everything from simple command-line scripts[1] to larger programs[2] to silly recreational programming[3]. [1]: http://github.com/mbrubeck/outline-grep […

    Comment linking /mbrubeck/2009/10/30/compleat.html

    on “"On iteration": Why people leave Python”
  18. Submitted Compleat: Programmable bash completion for human beings as a story · 52 points

    HN discussion
  19. Argh! Here's a hastily-setup mirror. Yay for distributed version control! http://limpet.net/mbrubeck/projects/compleat/ The first commit was on October 6, so this release took about three weeks of programming (mostly on the bus and when I should have been in bed sleeping). And you're totally right - a lot of the work was done in my head long before I typed "git init." The very next thing on my to-do list is learning…

    Comment linking /mbrubeck/projects/compleat/

    on “Compleat: Programmable bash completion for human beings”
  20. Submitted Let's build a browser engine as a story · 33 points

    HN discussion
  21. thedirt0115 · 2020-02-18Recommends
    If you're still interested in writing your own browser from scratch, this series of posts (in Rust instead of C#, sorry!) is a good introduction: https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.h...

    Comment linking /mbrubeck/2014/08/08/toy-layout-engine-1.html

    on “How I built my own browser”
  22. Submitted Android 2.0 ships with the V8 JavaScript engine and ARM JIT as a story · 31 points

    HN discussion
  23. Wow! That's a crazy and ingenious idea and it seems to work: http://limpet.net/mbrubeck/projects/justify-block.html View source to see the details. It's very slightly tricky because the last line of a "text-align:justify" element is not fully justified, so you need force it to wrap. In my test file I used a generated "spacer" element to do this. In practice you would probably hide this element by setting its height…

    Comment linking /mbrubeck/projects/justify-block.html

    on “The curious case of equidistant boxes, a CSS fail”
  24. Submitted Let's build a browser rendering engine – Part 1: Getting started as a story · 21 points

    HN discussion
  25. Browser Engine https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.h... How to Create your Own Internet Browser in 5 Minutes! - https://www.youtube.com/watch?v=Bn22JBRC1UI Chrome's Engine http://www.chromium.org/blink

    Comment linking /mbrubeck/2014/08/08/toy-layout-engine-1.html

    on “Ask HN: If I wanted to make a web browser, where would I start?”
  26. Submitted Let's build a browser engine, part 2: Parsing HTML as a story · 16 points

    HN discussion
  27. ruraljuror · 2016-08-29Recommends
    This series of blog posts might be a good place to start: https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.h...

    Comment linking /mbrubeck/2014/08/08/toy-layout-engine-1.html

    on “Ask HN: If I wanted to make a web browser, where would I start?”
  28. Submitted Show HN: A little randomness for the Hacker News front page as a story · 10 points

    HN discussion
  29. Two blogs: Technical blog where I mostly just write about my own projects and experiments. The blog exists so I can publicize my work and other people can find it and use it. It's also a way for people (including potential clients/employers) to find out more about me. Maybe most importantly, writing about my work motivates me to finish it, and forces me to make it understandable and useable: http://limpet.net/mbrube…

    Comment linking /mbrubeck/

    on “Do you have a blog? And if so, why?”
  30. Submitted Rust: A unique perspective as a story · 5 points

    HN discussion

Search all of HN for limpet.net

Linked by the same people?