Top all-time · #519
Marijn Haverbeke
Personal blog · marijnhaverbeke.nl/blogprogrammingweb
Marijn Haverbeke's personal blog at marijnhaverbeke.nl covers programming and web. Since 2010, 112 different Hacker News readers have linked it 143 times, most often “Collaborative Editing in CodeMirror”. No feed was found, so read it on the site itself.
Rarely recommended · 2 of 40 sampled comments recommend it?
Why HN links it
HN readers link his blog mostly as a reference for editor internals: CodeMirror, ProseMirror, collaborative editing and tree-based text data. It is also cited for Postmodern, JS1K and Eloquent JavaScript.
- Recommended for · 2 comments
- One commenter finds Eloquent JavaScript very clear on basics; another recommends the Tern post.
Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- Collaborative Editing in CodeMirror9 people · 11 mentions · first linked 2020-05-15
- Lezer: A parsing system for CodeMirror, inspired by Tree-sitter9 people · 10 mentions · first linked 2019-12-01
- A JavaScript game in 1024 bytes8 people · 8 mentions · first linked 2011-03-02
- /postmodern/7 people · 7 mentions · first linked 2010-11-14
- Collaborative Editing in ProseMirror5 people · 8 mentions · first linked 2015-08-04
- /fund/5 people · 6 mentions · first linked 2018-06-05
- Why monads have not taken the Common Lisp world by storm (2008)5 people · 5 mentions · first linked 2013-12-08
- Wordgard Release 0.14 people · 5 mentions · first linked 2026-07-02
- /4 people · 4 mentions · first linked 2019-01-14
- /blog/collaborative-editing.html4 people · 4 mentions · first linked 2020-07-29
What Hacker News says?
I'll always know him as the author of Postmodern, an impressive CL library for PostgreSQL: https://marijnhaverbeke.nl/postmodern/
Comment linking /postmodern/
on “Eloquent JavaScript 4th edition (2024)”Submitted ProseMirror 1.0 as a story · 287 points
HN discussionI love this book, even since its first edition. It's very clear even on elementary stuff, e.g. see the section on bindings/variables: https://eloquentjavascript.net/02_program_structure.html#h-l... — avoids the pitfall of thinking of variables as “boxes”. I was trying to find what's new in the 4th edition, and following links from the author's website https://marijnhaverbeke.nl/ found this on Mastodon ( https://mast…
Comment linking /
on “Eloquent JavaScript 4th edition (2024)”Submitted CodeMirror 6.0 Stable Release as a story · 191 points
HN discussionCRDTs seem very promising, but we still have a long way to go. The most exciting work in this area is being done by Ink&Switch [0]. They have a number of interesting real-world app prototypes based on CRDTs. - An interesting case where CRDTs failed is Xi-editor, where they tried to use CRDTs as the basis for a plugin system [1,2]. - One of the biggest problems with CRDTs is the overhead needed to keep track of the f…
Comment linking /blog/collaborative-editing.html
on “CRDTs are the future”Submitted Lezer as a story · 188 points
HN discussionI love Nuclino too. Their editor uses the wonderful ProseMirror ( https://discuss.prosemirror.net/t/nuclino-a-lightweight-real... ) by Marijn Haverbeke ( https://marijnhaverbeke.nl/ ) of CodeMirror and Tern fame.
Comment linking /
on “Notion – All-in-one workspace for notes, tasks, wikis, and databases”Submitted Lezer: A parsing system for CodeMirror, inspired by Tree-sitter as a story · 166 points
HN discussion> I don't see how recursive queries are going to help you You construct a graph of objects with very few queries, transform it and write it back; with knowledge of the db-schema this will outperform any ORM-based solution and give much greater flexibility. > As for building queries [...] The problem is that it composes very badly. [...] the best you can do is concatenating partial queries and hoping you got the pare…
Comment linking /postmodern/s-sql.html
on “Why Uber Engineering Switched from Postgres to MySQL”Submitted Why monads have not taken the Common Lisp world by storm (2008) as a story · 104 points
HN discussionI'd add that the assumptions that the specialized data structures (gap buffer and piece table) make are easily violated—someone mentioned a search-replace further down—at which point I can imagine their performance degrading unless special measure, i.e. more complexity, are added. So yeah, in my editor (CodeMirror) I'm also using a rope/tree style representation [1], because it's pleasantly general and easy to reaso…
Comment linking /blog/codemirror-line-tree.html
on “Text Editor: Data Structures”Submitted A Gentle Introduction to Machine Fundamentals as a story · 89 points
HN discussionAs nacs said but in other words, CodeMirror is syntax colored and directed code editing (emacs), while ProseMirror is wysiwyg text editing (word). CodeMirror was started in early 2007. [1] ProseMirror is newer, announced July 7 2015 [2]. You've probably been using CodeMirror but didn't even realize it -- it's ubiquitous! >CodeMirror is an open-source project shared under an MIT license. It is the editor used in the…
Comment linking /blog/prosemirror.html
on “Draft.js – Rich Text Editor Framework for React”Submitted Collaborative Editing in ProseMirror as a story · 85 points
HN discussionMy ProseMirror [1] project is in the same space (including using persistent data model detached from the DOM). It has a richer, tree-shaped document model and collaboration [2], but not quite as much programmerpower behind it since I'm a single OSS dev as opposed to a giant tech company. [1]: https://prosemirror.net [2]: http://marijnhaverbeke.nl/blog/collaborative-editing.html
Comment linking /blog/collaborative-editing.html
on “Draft.js – Rich Text Editor Framework for React”Submitted Bouncing Beholder, my winning JS1K entry (2012) as a story · 72 points
HN discussionIt's actually a single guy, Marijn Haverbeke. He is also the author of "Eloquent JavaScript". https://marijnhaverbeke.nl/
Comment linking /
on “Show HN: Primo – all-in-one IDE, CMS, component library, static site generator”Submitted More Money for Better Open-Source Software as a story · 67 points
HN discussionYes, because now we do platformers in 1024 bytes: https://marijnhaverbeke.nl/js1k/
Comment linking /js1k/
on “Commander Keen source code released”Submitted Why monads have not taken the Common Lisp world by storm (2008) as a story · 67 points
HN discussionAwesome to see the stupid trick to abbreviate object properties that I came up with in 2010 [1] is still a living part of the mini JS demo scene. [1]: http://marijnhaverbeke.nl/js1k/
Comment linking /js1k/
on “The Making of Underrun – A WebGL Shooter in 13kb of JavaScript”Submitted Being a Resident at the Recurse Center as a story · 46 points
HN discussionA lot of the same refactoring is possible in dynamic languages as in static ones. I recommend reading up on Term to see what's possible to do with JavaScript http://marijnhaverbeke.nl/blog/tern.html I use Cursive https://cursive-ide.com/ for working with Clojure, and it can do safe refactoring for symbols by doing static analysis of the source. It can show all usages of a symbol, rename it, do automatic imports, and…
Comment linking /blog/tern.html
on “Diminishing returns of static typing”Submitted CL-JavaScript: add user scripting to your Common Lisp App as a story · 16 points
HN discussionNice! I too, would love to read more on the OT/CRDT trade-off. Companion reading (the approach taken in ProseMirror, which was implemented in significantly less person-years): http://marijnhaverbeke.nl/blog/collaborative-editing.html
Comment linking /blog/collaborative-editing.html
on “Lessons learned from creating a real-time collaborative rich-text editor”Submitted A Gentle Introduction to Machine Fundamentals (2011) as a story · 14 points
HN discussionFramework: Caveman2[0] or Ningle[1], which run on Clack[2] (like Rack/WSGI), which supports five backend servers. Templates: Djula[3], closure-template[4]. ORM: Crane[5], Postmodern[6]. [0] https://github.com/fukamachi/caveman [1] https://github.com/fukamachi/ningle [2] https://github.com/fukamachi/clack [3] https://github.com/mmontone/djula [4] https://github.com/archimag/cl-closure-template [5] https://github.com/…
Comment linking /postmodern/
on “Why Racket? Why Lisp?”Submitted Acorn: A Tiny and Fast JavaScript Parser as a story · 7 points
HN discussionTo mix things up a bit, I'm going to give two very small examples of code that can be understood quickly, but studied diligently. Both are in JavaScript, which I notice you mention specifically in another comment: [1] Douglas Crockford's JSON parser. Worth a look because it is excellently commented and is easily understandable https://github.com/douglascrockford/JSON-js/blob/master/json... [2] Bouncing Beholder. A g…
Comment linking /js1k/
on “Ask HN: What source code is worth studying? ”Submitted Tern.js: Flows of Energy as a story · 6 points
HN discussion