Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    J

    Juho Snellman

    snellman.net · Personal blog · on HN since 2014

    Juho Snellman, a software engineer, writes about networking, Lisp history, data structures, puzzle generation, and past jobs.

    Visit blogRSSHN submissions
    ProgrammingSystems & PerformanceHistory
    What HN says

    HN commenters link his posts on the XXX/FIXME origin and the procedural puzzle generator, and point to his Terra Mystica web implementation.

    Stats for nerds
    56HN people shared it
    56linked in comments
    4.1Kstory points
    Dec 2025last shared
    2014people per year2025

    Top posts on HN

    1. 1
      Why PS4 downloads are so slow
      3 people · 716 points · first shared 2017 · 192 comments on HN
    2. 2
      I've been writing ring buffers wrong all these years
      4 people · 529 points · first shared 2016 · 167 comments on HN
    3. 3
      The most obsolete infrastructure money could buy – my worst job ever
      6 people · 474 points · first shared 2015 · 238 comments on HN
    4. 4
      LLMs are cheap
      8 people · 361 points · first shared 2025 · 309 comments on HN
    5. 5
      Hanging S3 downloads
      4 people · 236 points · first shared 2017 · 37 comments on HN
    6. 6
      Unit testing a TCP stack (2015)
      3 people · 232 points · first shared 2015 · 35 comments on HN
    7. 7
      The origins of XXX as FIXME
      4 people · 196 points · first shared 2017 · 86 comments on HN
    8. 8
      Mobile TCP optimization – lessons learned in production
      3 people · 116 points · first shared 2015 · 11 comments on HN
    9. 9
      Optimizing a breadth-first search
      1 person · 114 points · first shared 2018 · 38 comments on HN
    10. 10
      The hidden cost of QUIC and TOU (2016)
      3 people · 107 points · first shared 2016 · 60 comments on HN

    What HN people wrote when they linked it

    • SigmundAFeb 2020

      >And whatever you otherwise think about those languages, none of them will just make shit up when there is a syntax error in your program, they will simply reject it. And no, that does not mean that I am claiming that noone has ever made a syntactical mistake when writing code in those languages. But, you know, people are actually capable of fixing those mistakes when they are pointed out to them.

      Except its pretty common now for programming languages add quality of life changes that loosen some of the strict parsing rules, such as trailing commas or optional semi colons. Same with whitespace, many languages don't pay much attention to it then you have a formatter that is strict about it (gofmt). This is Postels law in action, liberal acceptance strict output. The alternative is strict adherence to whitespace then no need for a formatter, just have the compiler reject it and put the burden on the programmer.

      >Also, obviously, the "robustness principle" did not allow for a graceful update to the spec.

      Again your opinion is not shared historically, ECN is held up as an example of the robustness principle having been followed in most stacks, with some problem ones that did not causing some issues [1].

      >Then your points are just irrelevant?

      Then your points are just irrelevant? We can play this game forever. Just the fact the you are using HTML and not XHTML and TCP under that to write these should make some relevant point that you can't seem to see.

      >Yes, it was obvious…

    • jauntywundrkindAug 2023

      I personally think the upsides of WebBundles are huge. There's nothing that would stop the browser from being able to filter & ignore content coming from in a WebBundle, so I'm not sure what Brave's greivance is here. The adserving topic is complicated as heck, but everyone seems to acknowledge big change is necessary & Google and Firefox both have proposals to radically overhaul the system while enhancing user privacy; Brave's own primary distinguisher at this point is their BAT tokens, their own answer here. There's complicated topics here, but I see Brave following the standard pattern of trying to be a lightning rod of discontent.

      It's also surprising to me how almost no one has commented on Private Access Tokens shipping for Apple. Which do the same thing. Here's them bragging about being able to avoid catchpa's since the devices are all vouched for by Apple as unmodified & controlled by Apple: https://developer.apple.com/videos/play/wwdc2022/10077/

      There was a decent submission on this recently, but not much engagement. https://www.snellman.net/blog/archive/2023-07-25-web-integrity-api-vs-private-access-tokens/ https://news.ycombinator.com/item?id=36866355

      I think this is absolutely the worst shit, almost as bad as MV3 being a utterly neutered shitty hell hole version of what web extensions were. But it's notable to me that both Google didn't start this particular trend, Apple did, and more broadly - I have such a hard time picking words here - it feels like the…

    • panicJul 2017

      Here are a bunch of blogs from my RSS reader that I think are worth reading. Some of them haven't updated in a while, but the archives may be worth a look anyway.

      * Blogs with a math focus:

      http://blog.sigfpe.com

      http://bit-player.org

      http://mathr.co.uk/blog/

      https://www.johndcook.com/blog/

      * Blogs with a programming languages focus:

      https://existentialtype.wordpress.com

      https://bluishcoder.co.nz

      http://blog.ezyang.com

      http://akkartik.name

      http://lambda-the-ultimate.org

      http://mrale.ph

      * Blogs with a UI design focus:

      http://www.brandonwalkin.com/blog/

      http://ignorethecode.net/blog/

      http://interuserface.net

      * Blogs with a graphics / 3D rendering focus:

      http://c0de517e.blogspot.com

      http://diaryofagraphicsprogrammer.blogspot.com

      https://directtovideo.wordpress.com

      http://graphicrants.blogspot.com

      http://www.reedbeta.com

      http://www.realtimerendering.com/blog/

      https://blog.demofox.org

      http://eelpi.gotdns.org/blog.wiki.html

      * Other interesting / more general programming blogs (many of these have a "systems" focus):

      http://danluu.com

      http://ewontfix.com

      http://chneukirchen.org/blog/

      http://neverworkintheory.org

      http://apenwarr.ca/log/

      https://www.snellman.net/blog/

      https://www.pvk.ca

      http://psy-lob-saw.blogspot.com

      https://randomascii.wordpress.com

      http://fastcompression.blogspot.com

      https://fgiesen.wordpress.com

      http://blog.plover.com

      http://chneukirchen.org/trivium/

      http://rachelbythebay.com/w/

    • toast0Feb 2021

      Most physical transports don't pad packets to the maximum size. Ethernet only pads if you're below 46 bytes of payload, which is smaller than TCP packets with TCP timestamps; so if you're on Ethernet and have TCP timestamps enabled (which is very common), you'll certainly see the savings from any bytes removed from your certificate; unless your TLS layer is padding out to (path) MTU.

      Assuming that's in the neighborhood of a 20 byte savings, it's not very significant. Using EC keys rather than RSA keys if possible is a bigger savings. And disabling TCP Timestamps, which add 12 bytes per packet (including ACKs) would be bigger still[1].

      That said, shaving off bytes wherever possible adds up.

      [1] I've heard that disabling TCP Timestamps may disable receive window scaling on iOS (and maybe macos), see [2] for a report. It's also very useful to avoid problems with wrapped sequence numbers if your (bytes/time * assumed maximum segment lifetime) is anywhere near 32-bits; this usually requires around a gigabit on a single TCP connection. As the link mentions, tcp timestamps do make retransmits have different content than the original send, which can incidentally help if you have broken networking equipment on your path, depending on the details of the brokenness.

      [2] https://www.snellman.net/blog/archive/2017-07-20-s3-mystery/

    • takoidSep 2022

      https://jrock.us/

      https://jgc.org/

      http://kaledavis.com/

      https://aegir.sexy/

      https://www.gwern.net/

      https://jacquesmattheij.com/

      https://danwin.com/

      https://www.kalzumeus.com/

      https://www.magic.do/

      https://edweissman.com/

      https://jakeseliger.com/

      http://www.fogus.me/

      https://www.stavros.io/

      https://jasonlefkowitz.net/

      https://minimaxir.com/

      https://www.robinwhittleton.com/

      https://ciexinc.com/

      https://rongarret.info/

      https://williampietri.com/

      https://bpier.re/

      https://joshtriplett.org/

      https://ooer.com/

      https://feross.org/resume/

      https://www.brandons.me/

      https://benjaminpbreen.com/

      http://hokstad.com/

      https://www.scott-a-s.com/

      https://www.bermita.com/

      http://tlrobinson.net/

      https://ldpreload.com/

      https://dotat.at/

      http://xavvy.com/

      https://correa.in/

      https://adriann.github.io/

      https://leclan.ch/

      https://joeyespo.com/

      https://pius.me/

      https://adamierymenko.com/

      https://drewdevault.com/

      https://battlepenguin.com/

      https://chris.improbable.org/

      https://www.snellman.net/

      https://ocdtrekkie.com/

      https://www.cryptolotus.com/

      https://www.gregkogan.com/

      https://david.kitchen/

      In no particular order. From: https://jessimekirk.com/blog/hn_users_links/. I went through about half of the list looking for personal websites to use as inspiration for my own.

    • bazzarghAug 2023

      you don't need to run the puzzle backwards to generate solvable positions, you run it forwards and generate the pieces from the solution moves.

      Starting with the piece and square from the previous board, mark all squares but this one as unknown. Make a random move. Any unknown squares passed through get marked blank in the current board and in the puzzle. Randomly choose to keep the same piece (making this square blank in the puzzle) or switch (marking the chosen piece in the puzzle, but now blank in the current board). Continue making random moves (biasing slightly towards choosing unknown squares), eventually stop and randomly assign the remaining unknowns as obstactles or blanks. Because you've said you don't care if there's only one solution, this gives you solvable puzzles trivially.

      This isn't a new idea, eg https://www.snellman.net/blog/archive/2019-05-14-procedural-puzzle-generator/ talks about generating solvable puzzles using the forward moves, you'd generally pair it with a filter that weeds out puzzles that are not fun for some reason (eg, solutions that random walk blank squares; these can be avoided at generation time by having a budget for move-to-blank)

    Related

    Karl Matthiasrelistan.com19 people

    A Week with Mozilla's Rust

    Karl Matthias
    Personal · last shared 2026
    Steinar H. Gundersonblog.sesse.net33 people

    Leaving MySQL

    Steinar H. Gunderson
    Personal · last shared 2026
    Dan Luudanluu.com1.2k people

    We only hire the trendiest

    Dan Luu
    Personal · last shared 2026
    The Old New Thingblogs.msdn.microsoft.com/oldnewthing287 people

    A customer reported an error in the map used by Flight Simulator

    The Old New Thing
    Company · last shared 2020
    Trixtertrixter.oldskool.org63 people

    8088 MPH: We Break All Your Emulators

    Trixter
    Personal · last shared 2026
    Aphyraphyr.com551 people

    Hexing the technical interview (2017)

    Aphyr
    Personal · last shared 2026
    Erik Bernhardssonerikbern.com150 people

    Why software projects take longer than you think – a statistical model

    Erik Bernhardsson
    Personal · last shared 2026
    Cal Patersoncalpaterson.com102 people

    Firefox usage is down despite Mozilla's top exec pay going up

    Cal Paterson
    Personal · last shared 2026