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
    F

    Forrest Smith

    forrestthewoods.com · Personal blog · on HN since 2012

    Forrest Smith, a game programmer, writes about game engine tech, performance, algorithms, and visualizations, in hand-written HTML.

    Visit blogRSSHN submissions
    ProgrammingGamesSystems & Performance
    What HN says

    HN links it for his Simpson's Paradox explainer and technical posts on game networking and performance; he also describes his hand-coded HTML site in comments.

    Stats for nerds
    57HN people shared it
    85linked in comments
    2.2Kstory points
    Apr 2026last shared
    2016people per year2026

    Top posts on HN

    1. 1
      Simpson’s Paradox (2016)
      5 people · 371 points · first shared 2019 · 82 comments on HN
    2. 2
      Memory Bandwidth Napkin Math
      6 people · 322 points · first shared 2020 · 54 comments on HN
    3. 3
      Learning Rust via Advent of Code
      1 person · 286 points · first shared 2019 · 83 comments on HN
    4. 4
      Should small Rust structs be passed by-copy or by-borrow?
      2 people · 265 points · first shared 2019 · 107 comments on HN
    5. 5
      Failing to Learn Zig via Advent of Code
      2 people · 253 points · first shared 2022 · 329 comments on HN
    6. 6
      The Unbalanced Design of Super Smash Bros
      1 person · 203 points · first shared 2014 · 79 comments on HN
    7. 7
      The Tech of Planetary Annihilation: ChronoCam (2013)
      4 people · 95 points · first shared 2020 · 38 comments on HN
    8. 8
      Benchmarking Malloc with Doom 3
      2 people · 76 points · first shared 2022 · 30 comments on HN
    9. 9
      The Eighth Dirty Word – “Just”
      2 people · 55 points · first shared 2016 · 56 comments on HN
    10. 10
      Reverse Engineering Sublime Text's Fuzzy Match Algorithm
      5 people · 32 points · first shared 2016 · 1 comments on HN

    What HN people wrote when they linked it

    • hajileAug 2022

      I implemented a fuzzy search a few years ago and here's some things to look into.

      Damerau-Levenshtein is a significant upgrade from the default Levenshtein algorithm used as it also picks up the very common transposition error much more efficiently for not a lot of extra code.

      https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance

      Typed arrays would also probable speed thing up quite a bit.

      Tokenizing may not be faster. Set the first row of weights to ZERO. When you're done, look for the lowest value in the final array. This also saves the trouble of trying to tokenize properly for every language as it's only concerned with the bytes themselves.

      https://stackoverflow.com/questions/8139958/algorithm-to-find-edit-distance-to-all-substrings

      Performance of that algorithm also suffers a LOT with very long strings. For those, we went with one more like the fuzzy search used in Sublime text. Basically, you iterate the string one time and look for the search characters to appear in order. To go more advanced add a weight to each match type. Stuff like consecutive characters that match, cases match, or immediately transposed characters next to each other give higher weights to the resulting string.

      https://www.forrestthewoods.com/blog/reverse_engineering_sublime_texts_fuzzy_match/ (this looks like a decent overview of sublime fuzzy search).

    • bob1029Oct 2017

      To clarify - In many cases you are actually running your physics or game loop at a different rate from the render loop. For instance, in CS:GO you can have a frame rate of well beyond 300, but the game loop (physics/ai/net/logic/etc.) is ticking at 60 (by default) due to the client-server architecture. This type of non-synchronous engine architecture is very complex to build reliably, so unless there is a hard requirement for it (e.g. client-server multiplayer model w/ advanced latency compensation) you will usually find a simpler synchronous approach used unless the underlying engine comes with the async architecture OOTB (UE4).

      Some additional reading on the topic:

      https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

      https://blog.forrestthewoods.com/synchronous-rts-engines-and-a-tale-of-desyncs-9d8c3e48b2be

      https://gafferongames.com/post/fix_your_timestep/

    • oarabbus_Mar 2019

      Reminiscent of Simpson's Paradox, the most famous example being a gender discrimination lawsuit alleging UC Berkeley discriminated against women in admissions (57% men vs. 43% women).

      It turned out there WAS bias - in favor of the women!

      "The lawsuit triggered a study. The study results showed that not only were women not discriminated against, but that women had a statistically significant advantage!

      Here’s what happened. Some departments had high acceptance rates and some had low acceptance rates. Women applied to more competitive departments. Men applied to more accessible departments. Taken on the whole men had an advantage. When broken down per department it was women who were more favored."

      https://www.forrestthewoods.com/blog/my_favorite_paradox/

    • forrestthewoodsNov 2020

      Oh no. I'm the "weird dude who writes raw html".

      Artisanally hand-crafted HTML + CSS + JS. Hosted on Netlify. A+++ would recommend. My content works locally just by double-clicking a .html file. I can publish or edit live content by pushing to my private Git repro. Super easy.

      Static site generators suck balls and are 10x more trouble than they're worth. I always know exactly what I want my blog posts to look like. Static generators can make it extremely difficult to generate the precise output html I know I want. It's radically simpler to just add some extra padding if it is more aesthetically pleasing for that specific content.

      If you'd like to judge for yourself: https://www.forrestthewoods.com/

    • sillysaurus3Apr 2016

      If the HN front page consisted of your content alone, I would be very happy. https://news.ycombinator.com/submitted?id=forrestthewoods

      https://blog.forrestthewoods.com/reverse-engineering-sublime-text-s-fuzzy-match-4cffeed33fdb#.ovs3w0fqv

      https://gamedevdaily.io/four-ways-to-create-a-mesh-for-a-sphere-d7956b825db4?gi=7b9c7b2c0996#.5lzblag34

      https://gamedevdaily.io/advanced-behavior-tree-structures-4b9dc0516f92#.95kzyvwwh

      Speaking purely for myself, I hope to see them resubmitted. The post about reverse engineering Sublime's fuzzy matching algorithm is an overlooked gem, I think.

    • SXXJul 2018

      Same thing already done in spiritual successor for Supreme Commander/Total Annihilation called Planetary Annihilation. Basically there is authoritative server that work exactly that way.

      Only downside of this is that when you have few thousand units on screen game will use abysmal about of bandwidth like 8Mbps for each client. So when there is 10 players in-game server-side must have these 80Mbps.

      Oh and it's also used as replay / save system. Amazing tech:

      https://blog.forrestthewoods.com/the-tech-of-planetary-annihilation-chronocam-292e3d6b169a

    Related

    Gaffer On Gamesgafferongames.com159 people

    UDP vs TCP

    Gaffer On Games
    Personal · last shared 2026
    PhobosLabphoboslab.org123 people

    QOI: Lossless Image Compression in O(n) Time

    PhobosLab
    Personal · last shared 2026
    Deno: The Complete Referencemedium.com/deno-the-complete-reference17 people

    Is Bun much faster than Node.js?

    Deno: The Complete Reference
    Publication · last shared 2025
    JT Oldsjtolio.com22 people

    Problems with Go channels (2016)

    JT Olds
    Personal · last shared 2026
    #AltDevBlogADayaltdevblogaday.com163 people

    John Carmack on the importance of Static Code Analysis

    #AltDevBlogADay
    Publication · last shared 2023
    Wingologwingolog.org237 people

    FFS SSL

    Wingolog
    Personal · last shared 2026
    fasterthanli.mefasterthanli.me236 people

    A half-hour to learn Rust

    fasterthanli.me
    Personal · last shared 2026
    Alex Russellinfrequently.org165 people

    If not React, then what?

    Alex Russell
    Personal · last shared 2026