Top all-time · #2701
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.
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?
- Let’s build a browser engine (2014)19 people · 19 mentions · first linked 2016-03-18
- Rust: A unique perspective5 people · 5 mentions · first linked 2019-02-07
- Let's build a browser rendering engine – Part 1: Getting started2 people · 2 mentions · first linked 2014-08-08
- What's different about Firefox for Android2 people · 2 mentions · first linked 2010-10-04
What Hacker News says?
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”Submitted Congratulations on IE10: from Mozilla with cake as a story · 246 points
HN discussion> 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”Submitted Let’s build a browser engine (2014) as a story · 188 points
HN discussionThere'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”Submitted Let's build a browser engine Part 3: CSS as a story · 147 points
HN discussionI 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”Submitted Build a browser engine part 5: Box model and layout tree as a story · 127 points
HN discussionI 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?”Submitted Let's build a browser engine, Part 6: Block layout as a story · 120 points
HN discussionSee 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”Submitted Let's build a browser engine, part 7: Intro to Painting as a story · 90 points
HN discussionI 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”Submitted Mobile web developers: Your users hate it when you do this as a story · 70 points
HN discussionIt'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”Submitted Let's build a browser engine, Part 4: Style as a story · 66 points
HN discussionI 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”Submitted Compleat: Programmable bash completion for human beings as a story · 52 points
HN discussionArgh! 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”Submitted Let's build a browser engine as a story · 33 points
HN discussionIf 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”Submitted Android 2.0 ships with the V8 JavaScript engine and ARM JIT as a story · 31 points
HN discussionWow! 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”Submitted Let's build a browser rendering engine – Part 1: Getting started as a story · 21 points
HN discussionBrowser 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?”Submitted Let's build a browser engine, part 2: Parsing HTML as a story · 16 points
HN discussionThis 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?”Submitted Show HN: A little randomness for the Hacker News front page as a story · 10 points
HN discussionTwo 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?”Submitted Rust: A unique perspective as a story · 5 points
HN discussion