Top all-time · #1269
Medium Engineering
Company blog · medium.engineeringprogrammingweb
Medium Engineering is the company blog at medium.engineering, writing about programming and web. Since 2016, 56 different Hacker News readers have linked it 62 times, most often “Why ContentEditable Is Terrible – Or: How the Medium Editor Works”. It is still writing: the last post was on 2026-10-22, and you can follow it by feed.
Too few sampled comments (21) to say how often HN recommends it.?
Why HN links it
HN readers link Medium's 'Why ContentEditable is terrible' post, which explains browser inconsistencies that make contenteditable hard to use for rich text editors. Another linked post covers a flat-array text formatting model.
Summarised by Claude from a sample of 21 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- Why ContentEditable Is Terrible – Or: How the Medium Editor Works15 people · 16 mentions · first linked 2016-08-31
- The curious case of the disappearing Polish S (2015)7 people · 7 mentions · first linked 2016-11-03
- Microservice Architecture at Medium6 people · 6 mentions · first linked 2018-10-26
- The days of .dev domains for testing code are over5 people · 5 mentions · first linked 2017-11-29
- Mapping Medium’s Tags – Medium Engineering2 people · 2 mentions · first linked 2018-01-24
- Medium's Engineering Interview Rubric2 people · 2 mentions · first linked 2017-12-28
What Hacker News says?
According to this recent post Google is in charge of the master list that all the other browsers use. Expect the .dev domains to stop working on those other browsers shortly. https://medium.engineering/use-a-dev-domain-not-anymore-9521...
Comment linking /use-a-dev-domain-not-anymore-95219778e6fd
on “Chrome is Not the Standard”Submitted Typography is impossible (2016) as a story · 219 points
HN discussionhttps://ckeditor.com/blog/ContentEditable-The-Good-the-Bad-a... Or https://medium.engineering/why-contenteditable-is-terrible-1... Are two that I remember reading... nearly 10 years ago, holy hell can someone please make time slow down? Which discuss the common API pitfalls with `contenteditable` -- though I've no idea how painful it is in 2022. Could be a lot better now?
Comment linking /why-contenteditable-is-terrible-122d8a40e480?gi=d435208e3b0d
on “Improving Firefox Responsiveness on macOS”Submitted The curious case of the disappearing Polish S (2015) as a story · 159 points
HN discussionSome more: The disappearing Polish S https://medium.engineering/the-curious-case-of-disappearing-... System Shock "A story of a 25-year-old font coming back with a vengeance" https://medium.com/designing-medium/system-shock-6b1dc6d6596...
Comment linking /the-curious-case-of-disappearing-polish-s-fa398313d4df
on ““My wife has complained that OpenOffice will never print on Tuesdays” (2009)”Submitted The curious case of the disappearing Polish Ś (2015) as a story · 125 points
HN discussionSorry but it’s just using the standard contenteditable attribute, which works terribly, see https://medium.engineering/why-contenteditable-is-terrible-1...
Comment linking /why-contenteditable-is-terrible-122d8a40e480
on “Pell – A simple and small rich-text editor for the web”Submitted The days of .dev domains for testing code are over as a story · 73 points
HN discussionAlso the editor that will output the most inconsistent HTML across browsers. There's a reason all those other editors try and fix contenteditable (and are therefore > 1k), for more info see https://medium.engineering/why-contenteditable-is-terrible-1...
Comment linking /why-contenteditable-is-terrible-122d8a40e480
on “Pell – A simple and small rich-text editor for the web”- xm · 2017-11-29
Submitted Use a .dev domain? Not anymore as a story · 10 points
HN discussion Writing a ContentEditable editor means learning the internal state machines and undocumented behaviors of every browser you support. There are many articles online about ContentEditable / rich text editing. This one is a classic https://medium.engineering/why-contenteditable-is-terrible-1... The major issue for both Android and CJK input is dealing with “composition” of characters by an “input method editor”. https:…
Comment linking /why-contenteditable-is-terrible-122d8a40e480
on “Lexical – a web text editor framework that powers Facebook”Submitted GraphQL Server Design Medium as a story · 5 points
HN discussionThere is also a whole slew of issues with Polish characters. Polish keyboard setup relies on "right-alt" and a letter to get it's diacritics variation. Ie: 'ą' is 'right-alt'+a Windows for backwards compatibility reports 'right-alt' as 'alt+control'. Many applications developers assign key combos with no negative checks. So 'ctrl-s', typically used for save gets triggered when user wants to type 'ś'. To repeat, "rig…
Comment linking /the-curious-case-of-disappearing-polish-s-fa398313d4df?gi=56e8f39b530e
on “Why keyboard shortcuts don't work on non-US layouts and how devs could fix it”Submitted Why ContentEditable Is Terrible – Or: How the Medium Editor Works as a story · 4 points
HN discussionOne of unresolved questions of rich text in my mind is what to do with these markup “codes”, explicit or hidden, because while the (usually) nested open/close structure is a non-terrible way for describing formatting in plain text, it is IMO a completely unnatural model (mental or programmatic) of describing rich text by itself, not backed by marked-up plain text. This is apparent in abstraction leaks like the one y…
Comment linking /why-contenteditable-is-terrible-122d8a40e480
on “You can legally get and run WordPerfect for free”Submitted Microservice Architecture at Medium as a story · 4 points
HN discussionTheres also good article from Medium's engineering titled "Why ContentEditable is terrible": https://medium.engineering/why-contenteditable-is-terrible-1...
Comment linking /why-contenteditable-is-terrible-122d8a40e480
on “Slate.js: Customizeable rich text library inspired by Draft.js”Submitted 2 Fast 2 Furious: migrating Medium’s codebase without slowing down as a story · 4 points
HN discussionHere's that Medium post: Why Content Editable is Terrible https://medium.engineering/why-contenteditable-is-terrible-1...
Comment linking /why-contenteditable-is-terrible-122d8a40e480
on “Slate.js: Customizeable rich text library inspired by Draft.js”Submitted Medium open sourced their hiring process as a story · 4 points
HN discussionHere's a great technical explanation of the problem: https://medium.engineering/why-contenteditable-is-terrible-1...
Comment linking /why-contenteditable-is-terrible-122d8a40e480
on “Show HN: Poor man's Google Docs”Submitted Why contenteditable is terrible or: how Medium works as a story · 3 points
HN discussionmanipulating JSON (really, just plain native language objects) is way more straightforward than manipulating the XML dom. The purpose of formats like this is to make inexpressible the kinds of documents that result in difficult to untangle bugs, and frustrating UI behaviour. See this article about how Medium's editor was designed for some essential background of the motivation for this JSON format https://medium.eng…
Comment linking /why-contenteditable-is-terrible-122d8a40e480
on “Portable Text – JSON rich text specification for content editing platforms”Submitted Mapping Medium’s Tags – Medium Engineering as a story · 3 points
HN discussionNot really. It revolves around textarea not allowing rich inputs. That includes @-mentions, /-commands, block-based content builders etc. Textarea is laughably basic when it comes to adding interactivity to it, so the only solution is to use contentEditable[0][1], which is very difficult to work with or roll your own input[0], which makes OP angry. [0]: https://medium.engineering/why-contenteditable-is-terrible-1...…
Comment linking /why-contenteditable-is-terrible-122d8a40e480
on “Please Stop “Fixing” Font Smoothing (2012)”Submitted Dev domain won't work without https as a story · 3 points
HN discussionInteresting to contrast this with [1], which works on formalizing rich text editors (for HTML). 1. https://medium.engineering/why-contenteditable-is-terrible-1...
Comment linking /why-contenteditable-is-terrible-122d8a40e480
on “Formalizing Text Editors in Coq”Submitted The curious case of the disappearing Polish S (2015) as a story · 3 points
HN discussionYou may not agree, but from a technical / UX perspective it is impressive - the rest of their UI platform sucks but I think their editor is top notch https://medium.engineering/why-contenteditable-is-terrible-1...
Comment linking /why-contenteditable-is-terrible-122d8a40e480
on “I'm Publishing My Next Book on Substack”Submitted Why ContentEditable is Terrible as a story · 3 points
HN discussion