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

    Russ Cox

    research.swtch.com · Personal blog · on HN since 2008

    Russ Cox, a Go team engineer, writes about programming languages, algorithms, versioning, and clever programming tricks.

    Visit blogRSSHN submissions
    Languages & CompilersProgramming
    What HN says

    Commenters call it a great blog and link his posts on QArt codes, Go's minimal version selection, and fast floating-point printing.

    Stats for nerds
    554HN people shared it
    279linked in comments
    9.9Kstory points
    Aug 2026last shared
    2018people per year2026

    Top posts on HN

    1. 1
      Timeline of the xz open source attack
      10 people · 1.1K points · first shared 2024 · 461 comments on HN
    2. 2
      The xz attack shell script
      8 people · 607 points · first shared 2024 · 312 comments on HN
    3. 3
      Our Software Dependency Problem
      13 people · 488 points · first shared 2019 · 171 comments on HN
    4. 4
      A Tour of the Acme Editor
      25 people · 367 points · first shared 2012 · 86 comments on HN
    5. 5
      Glob Matching Can Be Simple and Fast Too
      5 people · 337 points · first shared 2017 · 95 comments on HN
    6. 6
      Go += Package Versioning
      4 people · 336 points · first shared 2018 · 201 comments on HN
    7. 7
      My Go Resolutions for 2017
      7 people · 329 points · first shared 2017 · 197 comments on HN
    8. 8
      Programming Language Memory Models
      7 people · 320 points · first shared 2021 · 96 comments on HN
    9. 9
      Hash-based bisect debugging in compilers and runtimes
      3 people · 254 points · first shared 2024 · 45 comments on HN
    10. 10
      Updating the Go Memory Model
      3 people · 252 points · first shared 2021 · 189 comments on HN

    What HN people wrote when they linked it

    • GroxxAug 2023

      I'm guessing this is following the same / highly similar motivation as rsc's coroutines post about a month ago: https://research.swtch.com/coro

      I welcome people embracing function closures more, as I feel they're a drastically under-used language tool (particularly in Go where everyone crams everything into single-func interfaces which are almost exclusively far worse). More exposure to it helps people become comfortable with it, and now that we have generics it's finally not a pile of pain and agony at all times. And just using functions makes it very flexible / doesn't repeat the "X for me but not for thee" issues of past Go versions.

      I'm not entirely sure how I feel about this proposal though. It kinda feels like it's trying to put a round peg into a square hole. If you try hard enough, everything can go in the square hole! But that doesn't mean it's a good fit.

    • rscMar 2024

      It's not as exciting as it sounds. He wanted to play around with learning Paxos, which is a big state machine, and he used yacc to do it. I shared an office with him for a couple years in the early days of Go, and he was working on it while I was working on other things. I helped him track down at least one bug in the Go port of yacc that way. I think the grammar he was writing was completely regular, but yacc is nicer to use than lex.

      Ken discussed yacc briefly in Coders at Work, which I quoted at https://research.swtch.com/yyerror:

      Seibel: And are there development tools that just make you happy to program?

      Thompson: I love yacc. I just love yacc. It just does exactly what you want done. Its complement, lex, is horrible. It does nothing you want done.

      Seibel: Do you use it anyway or do you write your lexers by hand?

      Thompson: I write my lexers by hand. Much easier.

    • MonkeeSageApr 2024

      Essentially the code patches ifunc resolvers to call into a supplied malicious object by surreptitiously modifying c files at build time (when ./configure && make is run) and links the compromised object files with a `now` linker flag that causes the ifuncs to be resolved immediately at library load time, which calls the patched resolvers while the process linkage table is still writable, which is the important part that allows them to just hijack the RSA_public_decrypt function in memory when the library is loaded.

      There's an excellent technical breakdown of the backdoor *injection process here: https://research.swtch.com/xz-script

    • chasilOct 2021

      Stephen Bourne was a great fan of ALGOL, and had C preprocessor directives to "ALGOLify" C.

      https://research.swtch.com/shmacro

      The Bourne shell thus adopted ALGOL syntax, distinct from anything else in UNIX.

      David Korn brought a pile of C, and wedged it into a max 64k program space (for Xenix), and his upward-compatible Korn shell (ksh88) had many, many features.

      Then there were the "UNIX Wars"...

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

      The fallout of this was the choice of a few Korn features, but not all (no arrays, coprocesses, [some] eval, regex, et al.)

      The wars defined the POSIX shell. Yes, it can be infuriating.

    • cube2222Aug 2019

      For anybody wondering if vgo is production ready, we've been using it since it came out in go 1.11 and so far didn't have any problems.

      Existing workflows don't break because there's the vendor command and dependency management is instantaneous. You can also roll it out gradually as it doesn't have any problems depending on non-module repositories (using commit hashes and dates)

      There's a great blog post series too if you're interested in the internals of go modules: https://research.swtch.com/vgo (it's also one of the good counterexamples to people claiming go ignored x years of PL research and history)

    • maxmcdAug 2025

      For what it's worth I think Go's MVS somewhat meets the desire here. It does not require lockfiles, but also doesn't allow use of multiple different minor/patch versions of a library: https://research.swtch.com/vgo-mvs

      I believe Zig is also considering adopting it.

      If there are any dependencies with the same major version the algorithm simply picks the newest one of them all (but not the newest in the package registry), so you don't need a lockfile to track version decisions.

      Go's go.sum contains checksums to validate content, but is not required for version selection decisions.

    Related

    Dave Cheneydave.cheney.net271 people

    Why Slack is inappropriate for open source communications

    Dave Cheney
    Personal · last shared 2026
    Go Blogblog.golang.org529 people

    Go 2, here we come

    Go Blog
    Company · last shared 2026
    Securelistsecurelist.com368 people

    Operation Triangulation: What you get when attack iPhones of researchers

    Securelist
    Company · last shared 2026
    PL Enthusiastpl-enthusiast.net37 people

    Interview with Go’s Russ Cox and Sameer Ajmani

    PL Enthusiast
    Publication · last shared 2025
    Joe Damatotimetobleed.com39 people

    American Express fails miserably at basic security

    Joe Damato
    Personal · last shared 2022
    Chris Siebenmannutcc.utoronto.ca/~cks388 people

    Go is Google's language, not ours

    Chris Siebenmann
    Personal · last shared 2026
    jwzjwz.org880 people

    Watch a VC use my name to sell a con

    jwz
    Personal · last shared 2026
    Russ Allberyeyrie.org/~eagle26 people

    On time management

    Russ Allbery
    Personal · last shared 2026