S

Stefan Judis

stefanjudis.com · Personal blog · on HN since 2018

Stefan Judis writes about what he learns in web development, including CSS, JavaScript, browsers, and developer tools, and runs a newsletter.

What HN saysCommenters call his web development newsletter pretty good and link his short today-I-learned posts, such as one on accessible CSS content labels.
49HN people shared it
28linked it in comments
50stories submitted
813story points
10 months agolast shared
2018people per year2026

Most-shared posts

  1. 1
    Say goodbye to resource-caching across sites and domains
    15 people · 77 points · first shared 2020 · 79 comments on HN
  2. 2
  3. 3
    TIL – How to exclude commits from Git blame
    3 people · 6 points · first shared 2022 · discussion on HN
  4. 4
    Safari allows to configure password autofilling
    3 people · 3 points · first shared 2023 · discussion on HN
  5. 5
    A Firefox-Only Minimap
    2 people · 123 points · first shared 2022 · 20 comments on HN
  6. 6
  7. 7
    Should DevTools teach the CSS cascade?
    2 people · 4 points · first shared 2021 · discussion on HN
  8. 8
    Homepage
    2 people · first shared 2022
  9. 9
  10. 10
  11. 11
    Stringly Typed
    1 people · 41 points · first shared 2025 · 70 comments on HN
  12. 12
    Highlights of the HTTP Archive Web Almanac 2021
    1 people · 29 points · first shared 2021 · 6 comments on HN
  13. 13
    Suffix Aliases (-S) in Zsh
    1 people · 22 points · first shared 2022 · 2 comments on HN
  14. 14
    New in CSS: Relative Colors
    1 people · 18 points · first shared 2024 · discussion on HN
  15. 15

What HN people wrote when they linked it

PreInternet01 · 2024-03-17
So, I absolutely love htmx, and this new version offers some incremental improvements that make things even better (unless you were using WebSockets or server-sent events, I guess, but the plug-in model doesn't look too bad?). Unlike all-or-nothing approaches like React, htmx allows you to add just the right amount of partial updates to your web app, using just the technologies that were already there to begin with. I realize that this approach doesn't appeal to everyone, but being able to map simple requests to simple responses was an absolute life-saver for my projects many times over. Migrating to a truly-truly minimalist approach (see: https://www.stefanjudis.com/notes/htmz-a-176-bytes-htmx-alternative/) is still on my to-do list, but for now, I'm quite happy with the htmx status quo.
stefanjudis · 2022-04-18
https://www.stefanjudis.com I primarily write down and document what I learn in web development.
llui85 · 2022-04-11
Stefan Judis' newsletter about web development is pretty good: https://www.stefanjudis.com/
gnramires · 2023-01-10
> would it be feasible to include the compression dictionary along w/ the data In theoretical terms (in particular Kolmogorov-complexity perspective), I believe the inclusion of a dictionary wouldn't help, it would strictly increase size. It can help (specially from a Shannon information perspective) if the compression is too computationally demanding to build the data model (which is kind of what all compressors do); but it almost certainly doesn't help in the case of something as small as an URL. But then it's possible to just pack a common compressor with the website (and just refer to it with a version code). I think the web in general would benefit greatly from some kind of standard compression libraries. Compression tends to have a significant cold start cost to work well, if that were mitigated certainly something like an url could be far shorter. I believe HTTP2 has header compression (RFC 7541)[1] with 'static tables', which seems to be a form of dictionary, but surprisingly to me no html compression with such shared dictionaries. There is caching libraries (unfortunately cross-domain caching seems to be deprecated[2] due to security concerns) I believe which helps in other ways, but I think a true dictionary-style compressor would bring huge bandwidth savings. Major web entities should get together to develop those standard dictionaries (and which algorithms to use them with), so they are reasonably fair for everyone (maybe even language specific dictionaries…
lelandfe · 2025-08-23
I learned recently that you can provide accessible labels for content: https://www.stefanjudis.com/today-i-learned/css-content-accepts-altern… I haven’t yet cracked open a screen reader to see how it fares, though.
crabmusket · 2025-04-01
> if your'e using Tailwind CSS version XXX, why does the browser have to reload it every single time? Security: https://www.stefanjudis.com/notes/say-goodbye-to-resource-caching-acro…
jakub_g · 2025-02-17
FWIW, git now has options to ignore such commits. In a big codebase each big codemod sha should be added to the blame ignore file .git-blame-ignore-revs. It's supported by GitHub out of the box https://www.stefanjudis.com/today-i-learned/how-to-exclude-commits-fro…
XorNot · 2025-01-12
I use a .git-blame-ignore-revs file. So if you run the fix once, dump that commit in the file and use it when you use git blame, it'll exclude blame in that commit. https://www.stefanjudis.com/today-i-learned/how-to-exclude-commits-fro…
realityking · 2024-10-18
There‘s also some work to be able to indicate these rules via an HTML attribute but the work is a bit stalled. https://www.stefanjudis.com/today-i-learned/safari-allows-to-configure… https://github.com/whatwg/html/issues/3518 Another cool feature Apple spearheaded was the ability for websites to indicate the change password page in standard manner: https://w3c.github.io/webappsec-change-password-url/
nsp · 2024-02-07
This hasn't been the case for about four years. Since you can use cache status to track people, resources are now cached per hostname requesting as well. https://www.stefanjudis.com/notes/say-goodbye-to-resource-caching-acro…
CharlesW · 2023-10-29
> Especially if it's served from a CDN, and thus likely already cached. Browsers no longer do cross-site resource caching. https://www.stefanjudis.com/notes/say-goodbye-to-resource-caching-acro…
jdsleppy · 2023-08-07
It's fine if you don't want to call it a waste of bandwidth, but bandwidth is definitely still used because browsers don't share caches between domains https://www.stefanjudis.com/notes/say-goodbye-to-resource-caching-acro…
galaxyLogic · 2023-07-18
I just googled "What is the order of object-fields in JavaScript" and the bard-answer said nothing about the differences between ES5 and ES6 and ES2020 how by now the order of object-fields in fact is deterministic. It seems it is not aware of the notion of historic development, perhaps its world-model is "static"? Temporal reasoning is interesting , if you google for "news" do you get what was news last year because a website updated last year had a page claiming to contain "Latest News". REF: https://www.stefanjudis.com/today-i-learned/property-order-is-predicta…
kevingadd · 2023-07-17
It's impressive how well the minimap works for bigger articles, I clicked around randomly and ended up at https://www.stefanjudis.com/notes/should-responsive-images-work-with-c… and the minimap feels slightly magical since it appears instantly and updates synchronously if I do things like select text. It feels kind of disappointing that I can't interact with it to scroll around like in i.e. Sublime Text, but I imagine that's a little harder to do as the author of a website. It's still very cool to me that you can do something like this on the web, and I wonder how much work it would be to support this complex CSS feature in Chrome or Safari.
e12e · 2023-06-14
> The min.js will be cached if it’s a popular library. No, it won't any more: https://www.stefanjudis.com/notes/say-goodbye-to-resource-caching-acro…
cuu508 · 2022-01-30
> one could argue that it is less eco friendly as well given how much space is going to be used repeating the same file on a multitude of server Browsers don't share cache between sites: https://www.stefanjudis.com/notes/say-goodbye-to-resource-caching-acro…
karmanyaahm · 2021-08-02
> just stick your content on a static host and you're done 1 (relatively small) advantage is not needing to control the server, just the domain. The server then polls IPNS and updates things with the latest stuff. 2 There's the standardized (and perhaps more meaningful) cache busting aspect for assets. i.e. the IPFS Companion browser extension takes all /ipfs/<CID>/filename.ext urls and sends them from the local datastore instead of making requests. This way, assets aren't requested from a remote each time when they're the same on multiple websites. This helps since CDN's don't use common caches anymore. Though, it might come with the same privacy risks. https://www.stefanjudis.com/notes/say-goodbye-to-resource-caching-acro… > it's hard to embed and resource-hungry, which hampers adoption yes.
teddyh · 2021-07-28
I’m sure it’s not the only factor, but loading JavaScript from external domains (like from Google) changed from being good for caching – i.e. faster web pages – to being meaningless and usually slower: • https://www.stefanjudis.com/notes/say-goodbye-to-resource-caching-acro… • https://wicki.io/posts/2020-11-goodbye-google-fonts/
richeyryan · 2021-04-14
Safari and Chrome now use a combined cache strategy using the URL of the resource and the top level domain of the site loading that resource as the cache key. For scenarios that were previously popular like using the jQuery CDN, you won't get the benefit of the user having jQuery in their cache from another website. You will however still get the proximity benefit you describe. CDNs are obviously still quite useful, just not for getting cache hits on popular libraries. https://www.stefanjudis.com/notes/say-goodbye-to-resource-caching-acro…
ivosaur · 2021-03-02
> jQuery is ≈30k gziped and most likely already cached from CDN. This part isn't so true in reality anymore, due to revised browser caching systems[1]. Doesn't mean you shouldn't use jQuery, just that part of the benefits of a centralized CDN are no longer a factor and it's a lot more sensible to self-host. 1: https://www.stefanjudis.com/notes/say-goodbye-to-resource-caching-acro…
hn_throwaway_99 · 2021-02-09
There was the use case at one point that serving a version of a popular 3rd party JS framework from a CDN would result in the likelihood of that file being able to be served from the browser's cache, because there would be a decent chance the end user had visited some other site that used the same popular framework. That no longer works, see https://www.stefanjudis.com/notes/say-goodbye-to-resource-caching-acro… and https://developers.google.com/web/updates/2020/10/http-cache-partition…
pimlottc · 2020-02-07
For almost all intents and purposes, object keys have been ordered in JavaScript since ES2015. Map has always been ordered. https://www.stefanjudis.com/today-i-learned/property-order-is-predicta…
patrickthebold · 2019-08-16
There are multiple standards. https://www.ecma-international.org/publications/standards/Ecma-404.htm Is more relaxed. >The JSON syntax does not impose any restrictions on the strings used as names, does not require that name strings be unique, and does not assign any significance to the ordering of name/value pairs. These are all semantic considerations that may be defined by JSON processors or in specifications defining specific uses of JSON for data interchange. Also it's pretty clear that the keys must have an order going over the wire. And JavaScript objects (which aren't unrelated to JSON have an order now) https://www.stefanjudis.com/today-i-learned/property-order-is-predicta…
ubernostrum · 2018-04-04
Don't forget the fun you can have making JavaScript look innocuous: https://www.stefanjudis.com/blog/hidden-messages-in-javascript-propert…
replygirl · 2022-03-18
i mean, you forgot to change the structure of this blog post when you ripped it off: https://www.stefanjudis.com/today-i-learned/prevent-npm-install-for-no… -- you also didn't change the title sufficiently, so if i search your title in google, i get stefan's post right under yours. i also see that on your post just prior, you use an image that's stolen from this article: https://appuals.com/how-to-kill-process-on-port/ and of course, for that `kill-port` article here is the source you rewrote, which i found syndicated in a few different places: - https://softbranchdevelopers.com/terminate-process-on-a-port-from-comm… leaving aside that articles like these are basically just verbose refactors of official documentation, you could at least put in some effort. it's fine if you aren't original, but if you're just changing the phrasing of other people's articles and publishing that as your own work, for something as simple as `-prefers-color-scheme`, you're in the wrong field

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close