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
    N

    Nick Desaulniers

    nickdesaulniers.github.io · Personal blog · on HN since 2013

    Nick Desaulniers, a compiler and Linux kernel engineer, writes tutorials on C, assembly, JITs, debugging, and kernel development.

    Visit blogHN submissions
    Systems & PerformanceLanguages & CompilersProgramming
    What HN says

    HN commenters praise the blog as fascinating and use his posts on JITs, designated initializers, and kernel patch submission as references.

    Stats for nerds
    29HN people shared it
    37linked in comments
    871story points
    Jan 2026last shared
    2015people per year2026

    Top posts on HN

    1. 1
      F() vs. F(void) in C vs. C++
      1 person · 194 points · first shared 2019 · 67 comments on HN
    2. 2
      Let's Write Some x86-64
      2 people · 163 points · first shared 2014 · 44 comments on HN
    3. 3
      Intro to Debugging X86-64 Assembly
      1 person · 110 points · first shared 2016 · 16 comments on HN
    4. 4
      Additional C/C++ Tooling
      2 people · 98 points · first shared 2015 · 67 comments on HN
    5. 5
      Interpreter, Compiler, JIT
      4 people · 83 points · first shared 2015 · 38 comments on HN
    6. 6
      Running Clang-Tidy on the Linux Kernel
      1 person · 57 points · first shared 2017 · 14 comments on HN
    7. 7
      Why I’ll Be Marching This 4th
      1 person · 36 points · first shared 2013 · 2 comments on HN
    8. 8
      Object Files and Symbols
      2 people · 23 points · first shared 2016 · Discussion on HN
    9. 9
      Rust Pattern Matching and the Option Type
      2 people · 20 points · first shared 2013 · Discussion on HN
    10. 10
      Hidden in Plain Sight – Public Key Crypto
      1 person · 12 points · first shared 2015 · Discussion on HN

    What HN people wrote when they linked it

    • sargstuffOct 2023

      QEM[2][3] & write shell script with option to a) "compile latest source & run the just compiled OS under QEM emulation" OR b) run known working OS under qem with development environment/tools for messing with source used in part a.

      Advantage: on same box, one window can be the development environment. other QEM can compile/run in different window to test what was done via development environment. aka edit english paper in word processor & save. view/print the compiled results in different window.

      grub / uboot[1] would be what pc hardware bios would use in place of the above QEM shell/boot script.

      [0] : https://en.wikipedia.org/wiki/GNU_GRUB

      [1] : https://en.wikipedia.org/wiki/Das_U-Boot

      [2] : https://nickdesaulniers.github.io/blog/2018/10/24/booting-a-custom-linux-kernel-in-qemu-and-debugging-it-with-gdb/

      [3] : Helpful info QEM to kernel vs QEM to bios with bios booting/loading kernel : http://unix.stackexchange.com/questions/397939/turning-off-kaslr-to-debug-linux-kernel-using-qemu-and-gdb

    • ndesaulniersJul 2016

      I love it! I just finished a blog post on cross compiling [0] which alluded to needing to have crt*.o and friends available. I was just considering exploring them in a follow up post, but I think this talk was even better and I could just point people to it.

      My favorite quote from the video, paraphrased, is: "get locale is per thread, for looking up what decimal separator you'd need, so you can have a server with multiple threads where each thread has its own locale."

      Also, it's neat seeing the write syscall from the interpretation of the '\n' char; years ago when using Emscripten, sometimes it seemed printf wasn't working. Turns out, our implementation of printf also buffered writes up to '\n' characters. IIRC, write was implemented with JavaScript's console.log.

      [0] https://nickdesaulniers.github.io/blog/2016/07/01/android-cli/

    • ignoramousJan 2026

      > This is not what this article does.

      Discounting books, many other well written articles on JIT have been shared on HN over the years [0][1][2]; the one I particularly liked as it introduces the trinity in a concise way: Compiler, Interpreter, JIT https://nickdesaulniers.github.io/blog/2015/05/25/interpreter-compiler-jit / https://archive.vn/HaFlQ (2015).

      [0] How to JIT - an introduction, https://eli.thegreenplace.net/2013/11/05/how-to-jit-an-introduction (2013).

      [1] Bytecode compilers and interpreters, https://bernsteinbear.com/blog/bytecode-interpreters/ (2019).

      [2] Let's build a Simple Interp, https://ruslanspivak.com/lsbasi-part1/ (2015).

    • codezeroDec 2018

      I think I found this when I was reading a tutorial on JIT compilers: http://blog.reverberate.org/2012/12/hello-jit-world-joy-of-simple-jits.html

      Which I found in a simpler tutorial: http://nickdesaulniers.github.io/blog/2013/04/03/basic-jit/

      TLDR;

      It describes a programming competition/challenge that involves building programs in a self-contained VM that is built on its own programming language and system, meant to have been "discovered" as an ancient computing platform from thousands of years ago :)

    • bluejekyllMar 2018

      The process for submitting patches probably has an even larger deterrent effect than the personalities: http://nickdesaulniers.github.io/blog/2017/05/16/submitting-your-first-patch-to-the-linux-kernel-and-responding-to-feedback/

      I think I saw a quote from Linus that this is a good filter for non-serious contributors, but it is an additional barrier for anyone who might want to get involved.

    • cipher0Mar 2015

      These are called desginated initializers, they're part of C99.[0] This is a good read which discusses them and also devles into compound literals.[1]

      [0] https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html
      [1] https://nickdesaulniers.github.io/blog/2013/07/25/designated-initialization-with-pointers-in-c/

    Related

    Feabhas Blogblog.feabhas.com18 people

    ‘Abusing’ the C switch statement – beauty is in the eye of the beholder

    Feabhas Blog
    Company · last shared 2024
    Graham Jenkinsdarkcoding.net44 people

    Facebook’s code quality problem (2015)

    Graham Jenkins
    Personal · last shared 2025
    Philipp Oppermannos.phil-opp.com95 people

    Learn Rust by writing a small OS

    Philipp Oppermann
    Personal · last shared 2026
    John Regehrblog.regehr.org401 people

    Teaching C

    John Regehr
    Personal · last shared 2026
    Collabora Blogcollabora.com129 people

    Matt Godbolt sold me on Rust by showing me C++

    Collabora Blog
    Company · last shared 2026
    Futhark Blogfuthark-lang.org87 people

    Designing a Programming Language for the Desert

    Futhark Blog
    Company · last shared 2026
    Chris Siebenmannutcc.utoronto.ca/~cks388 people

    Go is Google's language, not ours

    Chris Siebenmann
    Personal · last shared 2026
    Nick Johnsonblog.notdot.net88 people

    Damn Cool Algorithms: Levenshtein Automata

    Nick Johnson
    Personal · last shared 2025