Top
Best
New

Posted by FromTheArchives 1 day ago

Tags to make HTML work like you expect(blog.jim-nielsen.com)
431 points | 231 comments
aragonite 1 day ago|
Fun fact: both HN and (no doubt not coincidentally) paulgraham.com ship no DOCTYPE and are rendered in Quirks Mode. You can see this in devtools by evaluating `document.compatMode`.

I ran into this because I have a little userscript I inject everywhere that helps me copy text in hovered elements (not just links). It does:

[...document.querySelectorAll(":hover")].at(-1)

to grab the innermost hovered element. It works fine on standards-mode pages, but it's flaky on quirks-mode pages.

Question: is there any straightforward & clean way as a user to force a quirks-mode page to render in standards mode? I know you can do something like:

document.write("<!DOCTYPE html>" + document.documentElement.innerHTML);

but that blows away the entire document & introduces a ton of problems. Is there a cleaner trick?

rob 1 day ago||
I wish `dang` would take some time to go through the website and make some usability updates. HN still uses a font-size value that usually renders to 12px by default as well, making it look insanely small on most modern devices, etc.

At quick glance, it looks like they're still using the same CSS that was made public ~13 years ago:

https://github.com/wting/hackernews/blob/5a3296417d23d1ecc90...

Someone1234 1 day ago|||
I trust dang a lot; but in general I am scared of websites making "usability updates."

Modern design trends are going backwards. Tons of spacing around everything, super low information density, designed for touch first (i.e. giant hit-targets), and tons of other things that were considered bad practice just ten years ago.

So HN has its quirks, but I'd take what it is over what most 20-something designers would turn it into. See old.reddit Vs. new.reddit or even their app.

dlisboa 1 day ago|||
There's nothing trendy about making sure HN renders like a page from 15 years ago should. Relative font sizes are just so basic they should count as a bug fix and not "usability update".
reactordev 1 day ago|||
Overall I would agree but I also agree with the above commenter. It’s ok for mobile but on a desktop view it’s very small when viewed at anything larger than 1080p. Zoom works but doesn’t stick. A simple change to the font size in css will make it legible for mobile, desktop, terminal, or space… font-size:2vw or something that scales.
cluckindan 1 day ago|||
It’s not ok for mobile. Misclicks all around if you don’t first pinch zoom to what you are trying to click.
hunter2_ 23 hours ago||
Indeed, the vast majority of things I've flagged or hidden have been the accidental result of skipping that extra step of zooming.
5- 1 day ago|||
> Zoom works but doesn’t stick.

perhaps try using a user agent that remembers your settings? e.g. firefox

reactordev 14 hours ago||
Perhaps not recommend workarounds to lack of utilizing standards.
angiolillo 1 day ago||||
Setting aside the relative merits of 12pt vs 16pt font, websites ought to respect the user's browser settings by using "rem", but HN (mostly[1]) ignores this.

To test, try setting your browser's font size larger or smaller and note which websites update and which do not. And besides helping to support different user preferences, it's very useful for accessibility.

[1] After testing, it looks like the "Reply" and "Help" links respect large browser font sizes.

panzi 19 hours ago||
Side note: pt != px. 16px == 12pt.
ano-ther 1 day ago||||
Please don’t. HN has just the right information density with its small default font size. In most browsers it is adjustable. And you can pinch-zoom if you’re having trouble hitting the right link.

None of the ”content needs white space and large fonts to breathe“ stuff or having to click to see a reply like on other sites. That just complicates interactions.

And I am posting this on an iPhone SE while my sight has started to degrade from age.

rob 1 day ago|||
Yeah, I'm really asking for tons of whitespace and everything to breathe sooooo much by asking for the default font size to be a browser default (16px) and updated to match most modern display resolutions in 2025, not 2006 when it was created.

HN is the only site I have to increase the zoom level, and others below are doing the same thing as me. But it must be us with the issues. Obviously PG knew best in 2006 for decades to come.

Izkata 1 day ago|||
On the flipside, HN is the only site I don't have to zoom out of to keep it comfortable. Most sit at 90% with a rare few at 80%.

16px is just massive.

ryeights 1 day ago||
Sounds like your display scaling is a little out of whack?
hunter2_ 23 hours ago||
Yeah, this is like keeping a sound system equalized for one album and asserting that modern mastering is always badly equalized. Tune the system to the standard, and adjust for the oddball until it's remastered.
lioeters 20 hours ago||
Except we all know what happened to the "standard" with the Loudness War.
8note 1 day ago||||
on mobile at least, i find thati can frequently zoom in, but can almost never zoom out, so smaller text allows for more accessibility than bigger text
hunter2_ 22 hours ago||
Browser (and OS) zoom settings are for accessibility; use that to zoom out if you've got the eyes for it. Pinching is more about exploring something not expected to be readily seen (and undersized touch targets).
JadeNB 1 day ago||||
You're obviously being sarcastic, but I don't think that it's a given that "those are old font-size defaults" means "those are bad font-size defaults." I like the default HN size. There's no reason that my preference should override yours, but neither is there any reason that yours should override mine, and I think "that's how the other sites are" intentionally doesn't describe the HN culture, so it need not describe the HN HTML.
basilikum 1 day ago||
[dead]
torstenvl 1 day ago|||
Don't do this.
rob 1 day ago||
I agree, don't set the default font size to ~12px equiv in 2025.
torstenvl 1 day ago||
[flagged]
a_cool_username 1 day ago||
Do you think that "Don't do this" as a reply comment is following the spirit of the guidelines? It doesn't seem very thoughtful or substantive to me.
ErroneousBosh 1 day ago|||
Content does need white space.

HN has a good amount of white space. Much more would be too much, much less would be not enough.

marcosdumay 1 day ago||||
No kidding. I've set the zoom level so long ago that I never noticed, but if I reset it on HN the text letters use about 2mm of width in my standard HD, 21" display.
ErroneousBosh 1 day ago||
> but if I reset it on HN the text letters use about 2mm of width in my standard HD, 21" display.

1920x1080 24" screen here, .274mm pitch which is just about 100dpi. Standard text size in HN is also about 2mm across, measured by the simple method of holding a ruler up to the screen and guessing.

If you can't read this, you maybe need to get your eyes checked. It's likely you need reading glasses. The need for reading glasses kind of crept up on me because I either work on kind of Landrover-engine-scale components, or grain-of-sugar-scale components, the latter viewed down a binocular microscope on my SMD rework bench and the former big enough to see quite easily ;-)

nine_k 1 day ago||||
Shameless plug: I made this userstyle to make HN comfortable to handle both on desktop and mobile. Minimal changes (font size, triangles, tiny bits of color), makes a huge difference, especially on a mobile screen.

https://userstyles.world/style/9931/

thelibrarian 23 hours ago||
Thanks for that, it works well, and I like the font choice! Though personally I found the font-weight a bit light and changed it to 400.
oskarkk 1 day ago||||
> HN still uses a font-size value that usually renders to 12px by default as well, making it look insanely small on most modern devices, etc.

On what devices (or browsers?) it renders "insanely small" for you? CSS pixels are not physical pixels, they're scaled to 1/96th of an inch on desktop computers, for smartphones etc. scaling takes into account the shorter typical distance between your eyes and the screen (to make the angular size roughly the same), so one CSS pixel can span multiple physical pixels on a high-PPI display. Font size specified in px should look the same on various devices. HN font size feels the same for me on my 32" 4k display (137 PPI), my 24" display with 94 PPI, and on my smartphone (416 PPI).

gs17 1 day ago||
On my MacBook it's not "insanely small", but I zoom to 120% for a much better experience. I can read it just fine at the default.
dormento 1 day ago||
On my standard 1080p screen I gotta set it to 200% zoom to be comfortable. Still LOTS of content on the screen and no space wasted.
sgarland 9 hours ago||||
I hesitate to want any changes, but I could maybe get behind dynamic font sizing. Maybe.

On mobile it’s fine, on Mac with a Retina display it’s fine; the only one where it isn’t is a 4K display rendering at native resolution - for that, I have my browser set to 110% zoom, which is perfect for me.

So I have a workaround that’s trivial, but I can see the benefit of not needing to do that.

embedding-shape 1 day ago||||
> At quick glance, it looks like they're still using the same CSS that was made public ~13 years ago:

It has been changed since then for sure though. A couple of years ago the mobile experience was way worse than what it is today, so something has clearly changed. I think also some infamous "non-wrapping inline code" bug in the CSS was fixed, but can't remember if that was months, years or decades ago.

On another note, they're very receptive to emails, and if you have specific things you want fixed, and maybe even ideas on how to do in a good and proper way, you can email them (hn@ycombinator.com) and they'll respond relatively fast, either with a "thanks, good idea" or "probably not, here's why". That has been my experience at least.

nojs 1 day ago||||
The font size is perfect for me, and I hope it doesn’t get a “usability update”.
afavour 23 hours ago||
“I don’t see any reason to accommodate the needs of others because I’m just fine”
cluckindan 1 day ago||||
I bet 99.9% of mobile users' hidden posts are accidentally hidden
zamadatix 1 day ago||||
12 px (13.333 px when in the adapted layout) is a little small - and that's a perfectly valid argument without trying to argue we should abandon absolute sized fonts in favor of feels.

There is no such thing as a reasonable default size if we stop calibrating to physical dimensions. If you choose to use your phone at a scaling where what is supposed to be 1" is 0.75" then that's on you, not on the website to up the font size for everyone.

onion2k 1 day ago||||
Text size is easily fixed in your browser with the zoom setting. Chrome will remember the level you use on a per site basis if you let it.
robertlagrant 1 day ago||||
I'm sure they accept PRs, although it can be tricky to evaluate the effect a CSS change will have on a broad range of devices.
umanwizard 1 day ago||||
The text looks perfectly normal-sized on my laptop.
martin-t 1 day ago||||
I find it exactly the right size on both PC and phone.

There's a trend to make fonts bigger but I never understood why. Do people really have trouble reading it?

I prefer seeing more information at the same time, when I used Discord (on PC), I even switched to IRC mode and made the font smaller so that more text would fit.

askonomm 1 day ago|||
I'm assuming you have a rather small resolution display? On a 27" 4k display, scaled to 150%, the font is quite tiny, to the point where the textarea I currently type this in (which uses the browsers default font size) is about 3 times the perceivable size in comparison to the HN comments themselves.
rob 1 day ago|||
Agreed. I'm on an Apple Thunderbolt Display (2560x1440) and I'm also scaled up to 150%.

I'm not asking for some major, crazy redesign. 16px is the browser default and most websites aren't using tiny, small font sizes like 12px any longer.

The only reason HN is using it is because `pg` made it that in 2006, at a time when it was normal and made sense.

askonomm 1 day ago||
Yup, and these days we have relative units in CSS such that we no longer need to hardcode pixels, so everyone wins (em, rem). That way people can get usability according to the browsers defaults, which make the whole thing user configurable.
martin-t 1 day ago|||
1920x1080 and 24 inches

Maybe the issue is not scaling according to DPI?

OTOH, people with 30+ inch screens probably sit a bit further away to be able to see everything without moving their head so it makes sense that even sites which take DPI into account use larger fonts because it's not really about how large something is physically on the screen but about the angular size relative to the eye.

Izkata 1 day ago||
Yeah, one of the other cousin comments mentions 36 inches away. I don't think they realize just how far outliers they are. Of course you have to make everything huge when your screen is so much further away than normal.
jermaustin1 1 day ago||||
I have HN zoomed to 150% on my screens that are between 32 and 36 inches from my eyeballs when sitting upright at my desk.

I don't really have to do the same elsewhere, so I think the 12px font might be just a bit too small for modern 4k devices.

zachrip 1 day ago||||
I'm low vision and I have to zoom to 175% on HN to read comfortably, this is basically the only site I do to this extreme.
trenchpilgrim 1 day ago||||
I have mild vision issues and have to blow up the default font size quite a bit to read comfortably. Everyone has different eyes, and vision can change a lot with age.
pletnes 1 day ago|||
Even better: it scales nicely with the browser’s zoom setting.
super256 1 day ago|||
Really? I find the font very nice on my Pixel XL. It doesn't take too much space unlike all other modern websites.
neRok 1 day ago|||
A uBlock filter can do it: `||news.ycombinator.com/*$replace=/<html/<!DOCTYPE html><html/`
razster 1 day ago||
Could also use tampermonkey to do that, also perform the same function as OP.
cxr 1 day ago|||
There is a better option, but generally the answer is "no"; the best solution would be for WHATWG to define document.compatMode to be writable property instead of readonly.

The better option is to create and hold a reference to the old nodes (as easy as `var old = document.documentElement`) and then after blowing everything away with document.write (with an empty* html element; don't serialize the whole tree), re-insert them under the new document.documentElement.

* Note that your approach doesn't preserve the attributes on the html element; you can fix this by either pro-actively removing the child nodes before the document.write call and rely on document.documentElement.outerHTML to serialize the attributes just as in the original, or you can iterate through the old element's attributes and re-set them one-by-one.

somat 1 day ago||
On that subject I would be fine if the browser always rendered in standard mode. or offered a user configuration option to do so.

No need to have the default be compatible with a dead browser.

further thoughts: I just read the mdn quirks page and perhaps I will start shipping Content-Type: application/xhtml+xml as I don't really like putting the doctype in. It is the one screwball tag and requires special casing in my otherwise elegant html output engine.

dugmartin 1 day ago||
I know this was a joke:

   <div id="root"></div>
   <script src="bundle.js"></script>
but I feel there is a last tag missing:

   <main>...</main>
that will ensure screenreaders skip all your page "chrome" and make life much easier for a lot of folks. As a bonus mark any navigation elements inside main using <nav> (or role="navigation").
eska 1 day ago||
I’m not a blind person but I was curious about once when I tried to make a hyper-optimized website. It seemed like the best way to please screen readers was to have the navigation HTML come last, but style it so it visually comes first (top nav bar on phones, left nav menu on wider screens).
sholladay 1 day ago|||
Props to you for taking the time to test with a screen reader, as opposed to simply reading about best practices. Not enough people do this. Each screen reader does things a bit differently, so testing real behavior is important. It's also worth noting that a lot of alternative input/output devices use the same screen reader protocols, so it's not only blind people you are helping, but anyone with a non-traditional setup.

Navigation should come early in document and tab order. Screen readers have shortcuts for quickly jumping around the page and skipping things. It's a normal part of the user experience. Some screen readers and settings de-prioritize navigation elements in favor of reading headings quickly, so if you don't hear the navigation right away, it's not necessarily a bug, and there's a shortcut to get to it. The most important thing to test is whether the screen reader says what you expect it to for dynamic and complex components, such as buttons and forms, e.g. does it communicate progress, errors, and success? It's usually pretty easy to implement, but this is where many apps mess up.

cluckindan 1 day ago||
”Each screen reader does things a bit differently, so testing real behavior is important.”

Correction: each screen reader + os + browser combo does things a bit differently, especially on multilanguage React sites. It is a full time job to test web sites on screen readers.

If only there was a tool that would comprehensively test all combos on all navigation styles (mouse, touch, tabbing, screen reader controls, sip and puff joysticks, chin joysticks, eye trackers, Braille terminals, etc)… but there isn’t one.

hnthrowaway121 1 day ago||||
Wouldn’t that run afoul of other rules like keeping visual order and tab order the same? Screen reader users are used to skip links & other standard navigation techniques.
striking 1 day ago||||
You want a hidden "jump to content" link as the first element available to tab to.
marcosdumay 1 day ago|||
Just to say, that makes your site more usable in text browsers too, and easier to interact with the keyboard.

I remember HTML has an way to create global shortcuts inside a page, so you press a key combination and the cursor moves directly to a pre-defined place. If I remember that right, it's recommended to add some of those pointing to the menu, the main content, and whatever other relevant area you have.

petecooper 1 day ago||
>I know this was a joke

I'm…missing the joke – could someone explain, please? Thank you.

SomeHacker44 1 day ago|||
Not a front end engineer but I imagine this boilerplate allows the JavaScript display engine of choice to be loaded and then rendered into that DIV rather than having any content on the page itself.
bitbasher 1 day ago|||
It's because "modern" web developers are not writing web pages in standard html, css or js. Instead, they use javascript to render the entire thing inside a root element.

This is now "standard" but breaks any browser that doesn't (or can't) support javascript. It's also a nightmare for SEO, accessibility and many other things (like your memory, cpu and battery usage).

But hey, it's "modern"!

mb2100 6 hours ago||
This. But hey, let's work on swinging the pendulum of technology back while keeping the DX. I'm doing that with https://mastrojs.github.io/
dinkelberg 1 day ago||
TFA itself has an incorrect DOCTYPE. It’s missing the whitespace between "DOCTYPE" and "html". Also, all spaces between HTML attributes where removed, although the HTML spec says: "If an attribute using the double-quoted attribute syntax is to be followed by another attribute, then there must be ASCII whitespace separating the two." (https://html.spec.whatwg.org/multipage/syntax.html#attribute...) I guess the browser gets it anyway. This was probably automatically done by an HTML minifier. Actually the minifier could have generated less bytes by using the unquoted attribute value syntax (`lang=en-us id=top` rather than `lang="en-us"id="top"`).

Edit: In the `minify-html` Rust crate you can specify "enable_possibly_noncompliant", which leads to such things. They are exploiting the fact that HTML parsers have to accept this per the (parsing) spec even though it's not valid HTML according to the (authoring) spec.

9029 1 day ago||
Maybe a dumb question but I have always wondered, why does the (authoring?) spec not consider e.g. "doctypehtml" as valid HTML if compliant parsers have to support it anyway? Why allow this situation where non-compliant HTML is guaranteed to work anyway on a compliant parser?
LegionMammal978 1 day ago|||
It's considered a parse error [0]: it basically says that a parser may reject the document entirely if it occurs, but if it accepts the document, then it must act as if a space is present. In practice, browsers want to ignore all parse errors and accept as many documents as possible.

[0] https://html.spec.whatwg.org/multipage/parsing.html#parse-er...

9029 1 day ago||
> a parser may reject the document entirely if it occurs

Ah, that's what I was missing. Thanks! The relevant part of the spec:

> user agents, while parsing an HTML document, may abort the parser at the first parse error that they encounter for which they do not wish to apply the rules described in this specification.

(https://html.spec.whatwg.org/multipage/parsing.html#parse-er...)

HWR_14 1 day ago||||
Because there are multiple doctypes you can use. The same reason "varx" is not valid and must be written "var x".
AlienRobot 1 day ago|||
Same reason <ahref="/page.html"> is invalid.
zamadatix 23 hours ago||
For anyone else furiously going back and forth between TFA and this comment: they mean the actual website of TFA has these errors, not the content of TFA.
theandrewbailey 1 day ago||
I often reach for the HTML5 boilerplate for things like this:

https://github.com/h5bp/html5-boilerplate/blob/main/dist/ind...

xg15 1 day ago||
There is some irony in then-Facebook's proprietary metadata lines being in there (the "og:..." lines). Now with their name being "Meta", it looks even more proprietary than before.

Maybe the name was never about the Metaverse at all...

zelphirkalt 1 day ago||
Are they proprietary? How? Isn't open graph a standard and widely implemented by many parties, including many open source softwares?
FoxBJK 1 day ago|||
They're not, at all. It was invented by Facebook, but it's literally just a few lines of metadata that applications can choose to read if they want.
kaoD 1 day ago||
Being invented by $company does not preclude it from being a standard.

https://en.wikipedia.org/wiki/Technical_standard

> A technical standard may be developed privately or unilaterally, for example by a corporation, regulatory body, military, etc.

PDF is now an international standard (ISO 32000) but it was invented by Adobe. HTML was invented at the CERN and is now controlled by W3C (a private consortium). OpenGL was created by SGI and is maintained by the Khronos Group.

All had different "ownership" paths and yet I'd say all of them are standards.

albedoa 1 day ago||
Did you mean to type "does not" in that first sentence? Otherwise, the rest of your comment acts as evidence against it.
kaoD 1 day ago||
Yep, it was a typo. Thanks! Fixed.
chrismorgan 8 hours ago|||
The Open Graph Protocol was thrown over the wall by Facebook and promptly abandoned. It’s an atrocious spec, a good chunk of what it did (and most of what people actually wanted from it) was already unnecessary (og:description, for example, is stupid), its data model makes several woefully bad choices, it’s firmly based around Facebook’s interests (especially pictures!), it’s built on standards that were already looking like they were failing and are definitely long abandoned now, and I don’t think I’ve seen a single page implementing OGP tags correctly in the last five years and I’m not confident that a strictly correct reader implementation even exists (the specific matter I have in mind pertains to the prefix attribute). Also a bunch of key URLs have been 404ing for many years now.
fud101 1 day ago||
how do you find this when you need it?
crabmusket 1 day ago|||
DuckDuckGo "html5 boilerplate", click on website, click on "source code", follow your nose to the index.html file
ilaksh 1 day ago||
Anyone else prefer to use web components without bundling?

I probably should not admit this, but I have been using Lit Elements with raw JavaScript code. Because I stopped using autocomplete awhile ago.

I guess not using TypeScript at this point is basically the equivalent for many people these days of saying that I use punch cards.

VPenkov 1 day ago||
37 Signals [0] famously uses their own Stimulus [1] framework on most of their products. Their CEO is a proponent of the whole no-build approach because of the additional complexity it adds, and because it makes it difficult for people to pop your code and learn from it.

[0]: https://basecamp.com/ [1]: https://stimulus.hotwired.dev/

evilduck 1 day ago|||
It's impossible to look at a Stimulus based site (or any similar SSR/hypermedia app) and learn anything useful beyond superficial web design from them because all of the meaningful work is being done on the other side of the network calls. Seeing a "data-action" or a "hx-swap" in the author's original text doesn't really help anyone learn anything without server code in hand. That basically means the point is moot because if it's an internal team member or open source wanting to learn from it, the original source vs. minified source would also be available.

It's also more complex to do JS builds in Ruby when Ruby isn't up to the task of doing builds performantly and the only good option is calling out to other binaries. That can also be viewed from the outside as "we painted ourselves into a corner, and now we will discuss the virtues of standing in corners". Compared to Bun, this feels like a dated perspective.

DHH has had a lot of opinions, he's not wrong on many things but he's also not universally right for all scenarios either and the world moved past him back in like 2010.

VPenkov 1 day ago||
Well you do learn that a no-build process can work at some scale, and you can see what tech stack is used and roughly how it works.

But regardless, I didn't mean to make any argument for or against this, I'm saying this was one of the points DHH made at some point.

christophilus 1 day ago|||
Dunno. You can build without minifying if you want it to be (mostly) readable. I wouldn’t want to give up static typing again in my career.
zeroq 19 hours ago|||
> not using TypeScript at this point is basically the equivalent for many people these days of saying that I use punch cards

I very much enjoy writing no-build, plain vanilla JS for the sake of simplicity and ability to simply launch a project by dragging HTML file onto a browser. Not to mention the power of making changes with notepad instead of needing whole toolchain on your system.

dinkleberg 1 day ago|||
Even with TS, if I’m doing web components rather than a full framework I prefer not bundling. That way I can have each page load the exact components it needs. And with http/2 I’m happy to have each file separate. Just hash them and set an immutable cache header so it even when I make changes the users only have to pull the new version of things that actually changed.
zeroq 19 hours ago||
This.

I'm old enough to have a first hand experience of building a Flash website that required to load couple hundred tiny xml files for configuration only to find out that some ~300kb was taking couple of minutes to load because of limited connection pool in old http.

Back then bundling and overly complicated build steps were not yet invented, so instead of serving one large XML (which would work out of the box, as there was a root xml and certain nodes instead of having data were linking to external files) I quickly decided to implement zip compression and bundle the package that way.

Fast forward to 2025 when most devs need an external library to check if number isEven and the simplest project need a toolchain that's more complicated that the whole Apollo project.

mb2100 6 hours ago|||
Definitely team #noBundler for most websites. But I didn't wanna give up TypeScript. With Deno and even Node.js supporting type-stripping now natively, all I had to do for https://mastrojs.github.io was to use ts-blank-space to transform client-components on the fly.
WorldMaker 1 day ago|||
I've been leaning that direction more and more every year. ESM loading in browsers is really good at this point (with and without HTTP/2+). Bundle-free living is nice now.

Even frameworks with more dependencies bundling/vendoring just your dependencies at package upgrade time and using an importmap to load them is a good experience.

I'm not giving up Typescript at this point, but Typescript configured to modern `"target"` options where it is doing mostly just type stripping is a good experience, especially in a simple `--watch` loop.

LelouBil 23 hours ago|||
Stopped using autocomplete ? I want to hear more about this.

I could never.

brazukadev 1 day ago|||
> Anyone else prefer to use web components without bundling?

Yes! not only that but without ShadowDOM as well.

nonethewiser 1 day ago|||
Can't say I generally agree with dropping TS for JS but I suppose it's easier to argue when you are working on smaller projects. But here is someone that agrees with you with less qualification than that https://world.hey.com/dhh/turbo-8-is-dropping-typescript-701...

I was introduced to this decision from the Lex Fridman/DHH podcast. He talked a lot about typescript making meta programming very hard. I can see how that would be the case but I don't really understand what sort of meta programming you can do with JS. The general dynamic-ness of it I get.

mariusor 1 day ago||
Luckily Lit supports typescript so you wouldn't need to drop it.
mock-possum 1 day ago||
God yes, as little tool chain as I can get away with.
notepad0x90 1 day ago||
I'm not a web developer, so if someone can please enlighten me: Why does this site, and so many "modern" sites like it have it so that the actual content of the site takes up only 20% of my screen?

My browser window is 2560x1487. 80% of the screen is blank. I have to zoom in 170% to read the content. With older blogs, I don't have this issue, it just works. Is it on purpose or it is it bad css? Given the title of the post, i think this is somewhat relevant.

harrall 1 day ago||
You'll notice newspapers use columns and do not extend the text all the way left to right either. It's a typographical consideration, for both function and style.

From a functional standpoint: Having to scan your eyes left to right a far distance to read makes it more uncomfortable. Of course, you could debate this and I'm sure there are user preferences, but this is the idea behind limiting the content width.

From a stylistic standpoint: It just looks “bad” if text goes all the way from the left to right because the paragraph looks "too thin" like "not enough volume" and "too much whitespace." It’s about achieving a ratio of background to text that’s visually pleasurable. With really wide widths, paragraphs can end really early on the left, leaving their last lines really “naked” where you see all this whitespace inconsistently following some paragraphs. I can't really explain why this looks bad any further though. It’s kind of like picking colors combinations, the deciding factor isn't any rule: it's just "does it look pretty?"

In the case of the site in question, the content width is really small. However, if you notice, each paragraph has very few words so it may have been tightened up for style reasons. I would have made the same choice.

That said, if you have to zoom in 170% to read the content and everything else is not also tiny on your screen, it may be bad CSS.

notepad0x90 1 day ago||
Newspapers have less than 5% margin for whitespace. they're smart enough to have multiple columns. It's also a side-effect of how every line costs money and they need to cramp as much content as possible in one page.

I get not having read all the way to the end and back, I even get having margins, but it should be relative to the screen size. Fixed width is the issue I think. To avoid paragraphs looking too thin, maybe increasing the font relative to the screen size makes sense? I'd think there is a way to specify a reference screen resolution to the browser so that it can auto increase the font sizes and/or adjust the div's width.

wonger_ 10 hours ago|||
For font size that increases with screen size, you can use some clamp() math, like:

  --step-0: clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem);
Taken from https://utopia.fyi/type/calculator?c=360,18,1.2,1240,20,1.25...
harrall 1 day ago|||
You're not wrong. Increasing font size is one method.

Another method I like to use is to adjust the amount of words per paragraph depending on the medium. I will literally write more or less just to attain my personal favorite of 3-6 visual lines per paragraph.

Or sometimes I will more readily join paragraphs or split them more often in a text just to achieve my target.

Decreasing width is actually just really easy and also works really well when the type of content can vary.

All of this seems like some serious overkill attention to detail I know, but I guess it's a big deal for some people. For example, most people don't really care about dressing nice regularly anymore when they get older and marry because it frankly doesn't matter anymore (and they're totally right), but people who like fashion still care up until the end.

Menu_Overview 1 day ago|||
Often times that is to create a comfortable reading width. (https://ux.stackexchange.com/questions/108801/what-is-the-be...)
Telaneo 19 hours ago|||
This breaks so hard with my own preferences it hard to believe it to be true, and relevant studies aren't all that convincing. The few websites I find that go to 150/200+ character lines are a blessing to read when I do. I only get to do this on my desktop on very odd sites or completely unstyled HTML pages (and there you don't get line-spacing, which is something I do want. I should probably write a script to fix that), and Hacker News, and I never want that to go away.

This wouldn't be the first thing I'm just weird about. Similarly, I find reading justified text to be just horrible, as I constantly lose track of what line I'm on. This one I believe has been debunked and raised as a genuine accessibility concern, but not all parts of the world have gotten around to recognising that. I'm also not a fan of serifed fonts, even in books. I'm not sure if there have been any studies made about that, as the serifs are supposed to be there to aid reading when printed on paper, but I consistently find a good sans-serif font to be better in all cases.

AlienRobot 1 day ago|||
I wonder if this research is really valid. It was published 20 years ago, there is nothing in the abstract about arcdegrees and I can't read the full thing, and it's cited with zero consideration for the actual content being presented.

If Wikipedia had 70 characters per line I would never read it.

notepad0x90 1 day ago||
That's a good point, 2560p wasn't a popular resolution back then. I'm sure people browsing in 4k suffer worse.
flufluflufluffy 1 day ago|||
Probably to not have incredibly wide paragraphs. I will say though, I set my browser to always display HN at like 150% zoom or something like that. They definitely could make the default font size larger. On mobile it looks fine though.
notepad0x90 1 day ago||
I have HN on 170% zoom too. this a bad design pattern. I shouldn't have to zoom in on every site. Either increasing the font or making sure the content is always at least 50% of the page would be great for me.
qingcharles 1 day ago|||
This site was designed many moons ago, for another age. That's both a blessing and a curse, but much more of a blessing. As you've found, you can fix the zoom.

It's rare to see a site as popular as HN which has made almost zero changes to the UI over its entire history.

majora2007 1 day ago|||
I'm not sure, but when I was working with UX years ago, they designed everything for a fixed width and centered it in the screen.

Kinda like how HackerNews is, it's centered and doesn't scale to my full width of the monitor.

notepad0x90 1 day ago||
I understand not using the full width, but unless you zoom in, it feels like I'm viewing tiny text on a smart phone in portrait mode.

You would think browsers themselves would handle the rest, if the website simply specified "center the content div with 60% width" or something like that.

scotty79 1 day ago||
Your pixels are too small. Enable system scaling for high dpi screens.
chroma_zone 1 day ago||
I usually add:

  <meta name="color-scheme" content="light dark">
which gives you a nice automatic dark theme "for free"
jimniels 23 hours ago|
Ah this is a good one! I should maybe start considering this as a default...
daneel_w 1 day ago||
For clarity and conformity, while optional these days, I insist on placing meta information within <head>.
chrismorgan 1 day ago||
> <html lange="en">

s/lange/lang/

> <meta name="viewport" content="width=device-width,initial-scale=1.0">

Don’t need the “.0”. In fact, the atrocious incomplete spec of this stuff <https://www.w3.org/TR/css-viewport-1/> specifies using strtod to parse the number, which is locale dependent, so in theory on a locale that uses a different decimal separator (e.g. French), the “.0” will be ignored.

I have yet to test whether <meta name="viewport" content="width=device-width,initial-scale=1.5"> misbehaves (parsing as 1 instead of 1½) with LC_NUMERIC=fr_FR.UTF-8 on any user agents.

cousin_it 1 day ago|
Wow. This reminds me of Google Sheets formulas, where function parameters are separated with , or ; depending on locale.
Moru 1 day ago|||
Not to mention the functions are also translated to the other language. I think both these are the fault of Excel to be honest. I had this problem long before Google came around.

And it's really irritating when you have the computer read something out to you that contains numbers. 53.1 km reads like you expect but 53,1 km becomes "fifty-three (long pause) one kilometer".

cubefox 1 day ago||
> Not to mention the functions are also translated to the other language.

This makes a lot of sense when you recognize that Excel formulas, unlike proper programming languages, aren't necessarily written by people with a sufficient grasp of the English language, especially when it comes to more abstract mathematical concepts, which aren't taught in secondary English language classes at school, but it in their native language mathematics classes.

fainpul 1 day ago||||
Not sure if this still is the case, but Excel used to fail to open CSV files correctly if the locale used another list separator than ',' – for example ';'.
eska 1 day ago||
I’m happy to report it still fails and causes me great pain.
haskellshill 1 day ago||
Reall? Libreoffice at least has a File > Open menu that allows you to specify the separator and other CSV stuff, like the quote character
LtdJorge 1 day ago|||
You have to be inside Excel and use the data import tools. You cannot double click to open, it outs everything in one cell…
mrguyorama 1 day ago||
Sometimes you double click and it opens everything just fine and silently corrupts and changes and drops data without warning or notification and gives you no way to prevent it.

The day I found that Intellij has a built in CSV tabular editor and viewer was the best day.

fainpul 1 day ago|||
Excel has that too. But you can't just double-click a CSV file to open it.
layer8 1 day ago||||
Given that world is about evenly split on the decimal separator [0] (and correspondingly on the thousands grouping separator), it’s hard to avoid. You could standardize on “;” as the argument separator, but “1,000” would still remain ambiguous.

[0] https://en.wikipedia.org/wiki/Decimal_separator#Conventions_...

WA 1 day ago||||
Try Apple Numbers, where even function names are translated and you can’t copy & paste without an error if your locale is, say, German.
neves 1 day ago||
aha, in Microsoft Excel they translate even the shortcuts. The Brazilian version Ctrl-s is "Underline" instead of "Save". Every sheet of mine ends with a lot of underlined cells :-)
troupo 1 day ago||||
The behaviour predates Google Sheets and likely comes from Excel (whose behavior Sheets emulate/reverse engineer in many places). And I wouldn't be surprised if Excel got it from Lotus.
noja 1 day ago||||
Same as Excel and LibreOffice surely?
KoolKat23 1 day ago||
Yes
simulo 1 day ago|||
Oh, good to know that it depends on locale, I always wondered about that behavior!
brianzelip 1 day ago|
> `<html lang="en">`

The author might consider instead:

`<html lang="en-US">`

childintime 1 day ago||
It's time for an "en-INTL" (or similar) for international english, that is mostly "en-US", but implies a US-International keyboard and removes americanisms, like Logical Punctuation in quotes [1]. Then AI can start writing for a wider and much larger public (and can also default to regular ISO units instead of imperial baby food).

Additionally, it's kind of crazy we are not able to write any language with any keyboard, as nowadays we just don't know the idiom the person who sits behind the keyboard needs.

[1] https://slate.com/human-interest/2011/05/logical-punctuation...

Telaneo 19 hours ago|||
en-DK is used for this in some cases, giving you English, but with metric units and an ISO keyboard among other things.

A dedicated one for International English, or heck, even just EU-English, would be great.

The EU websites just use en from what I can tell, but they also just use de, fr, sv, rather than specifying country (except pt-PT, which makes sense, since pt-BR is very common, but not relevant for the EU).

qingcharles 1 day ago||||
Isn't that what "en" on its own should be, though?
fijiaarone 20 hours ago|||
We should also enforce a standard where every website has to change their content to match the user’s preferred idiomatic diss, whether it be “yo momma”, “deez nuts”, “six seven”, or a series of hottentot tongue clicks recorded in Ogg Vorbiz.
Etheryte 1 day ago|||
Those two mean two very different things though, why would the author do that? Please see RFC 5646 [0], "en" means English without any further constraints, "en-US" means English as used in the United States.

[0] https://datatracker.ietf.org/doc/html/rfc5646

mobeigi 1 day ago||
Interesting.

From what I can tell this allows some screen readers to select specific accents. Also the browser can select the appropriate spell checker (US English vs British English).

More comments...