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

    Gustavo Duarte

    duartes.org · Personal blog · on HN since 2008

    Gustavo Duarte writes illustrated explanations of how computers, operating system kernels, and memory work.

    Visit blogHN submissions
    Systems & PerformanceOpen Source & Linux
    What HN says

    Commenters call his posts great and awesome, recommending his writing on kernel memory management, CPU rings, and what a computer does while you wait.

    Stats for nerds
    87HN people shared it
    81linked in comments
    2.5Kstory points
    Nov 2017last shared
    2009people per year2017

    Top posts on HN

    1. 1
      What Does an Idle CPU Do?
      2 people · 565 points · first shared 2014 · 55 comments on HN
    2. 2
      Anatomy of a Program in Memory
      10 people · 434 points · first shared 2009 · 23 comments on HN
    3. 3
      How a computer boots up
      7 people · 273 points · first shared 2008 · 39 comments on HN
    4. 4
      How The Kernel Manages Your Memory
      9 people · 219 points · first shared 2009 · 18 comments on HN
    5. 5
      Linux internals
      1 person · 119 points · first shared 2011 · 5 comments on HN
    6. 6
      Cache Organization in Intel CPUs (2009)
      2 people · 95 points · first shared 2009 · 19 comments on HN
    7. 7
      Tail Calls, Optimization, and ES6
      1 person · 95 points · first shared 2014 · 59 comments on HN
    8. 8
      First Recorded Usage of "Hacker" (2008)
      7 people · 93 points · first shared 2008 · 12 comments on HN
    9. 9
      Lucky to be a Programmer
      6 people · 74 points · first shared 2008 · 13 comments on HN
    10. 10
      Feynman, Challenger Disaster, and Software Engineering
      2 people · 67 points · first shared 2009 · 7 comments on HN

    What HN people wrote when they linked it

    • timtadhNov 2014

      Does anyone, (the author?), know the best reference for x86-64 assembly? I have been a loath to teach it to students because there I haven't found great material for it. I use "Programming from the Ground Up"* as my main text for 32 x86 but haven't found anything comparable for 64 bit. I also use:

      * http://download.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-lettersize.pdf

      http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/

      Sun Microsystem Assembler Reference http://docs.oracle.com/cd/E19455-01/806-3773/index.html (not because we use that assembler, we use gas for gcc compat, but it very clearly describes all of the usual 32 bit opcodes)

      The Intel manuals http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

      Another Intel manual http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-1-manual.pdf

      EDIT: I agree with everyone one, I also learned via doing, decompiling small C programs, gdb, and manuals. However, I am looking for something a bit gentler. That process will work for the top 10% but the rest will struggle and at the end of the day they need to write an x86 code generator so without knowing how to write assembly they are in trouble.

    • nanerOct 2011

      http://stevehanov.ca/blog/ -- Updates infrequently. Very good programming articles.

      http://duartes.org/gustavo/blog/ -- Updates infrequently. Good articles on Linux and Programming. Start here: http://duartes.org/gustavo/blog/best-of

      http://catonmat.net -- He doesn't update much anymore since he's working on his startup but the archives are still good. Mostly unix tools and CompSci stuff IIRC.

      http://chneukirchen.org/trivium/ -- Curates unix and plan9 articles and some lower level/systems programming stuff with a few other peculiarities sprinkled in.

      http://www.foldl.org/ -- Curated programming/compsci stuff from certain subreddits. Didn't last long, archives still have some gems.

      http://lambda-the-ultimate.org/ -- I actually don't read the articles that often anymore but I scan the titles as if it were a ticker of what's going on in the programming world.

      If someone could point me to more curated sources like foldl, I'd appreciate it.

      Non-programming:

      http://ryanholiday.net -- http://www.ryanholiday.net/an-introduction-to-me/

      http://thelastpsychiatrist.com/ -- I skip the pharma articles that are way over my head. Cultural deconstructionism.

    • baneJul 2014

      No. ASM is just a slightly easier mnemonic version of the raw machine language. All software basically compiles down to this form.

      The OS functions are provided here. The "game" is just an application in the OS (kinda). The BIOS provides whatever the OS needs to hook into to use the hardware. Here's a high-level overview of how this works http://duartes.org/gustavo/blog/post/how-computers-boot-up/

      OS's don't need to be very complicated, just a few bytes in some cases depending on what you want to do. For example, you can just use the standard VGA modes (here, he's using 13h) to get something to display, and just write directly to the video memory. The BIOS helps handle some of the interface work to the various standard components.

      This is the real old-school way of doing things and the code is really well done and commented. If you know x86 asm basics, you can read through most of the system-level stuff without too much trouble.

    • nkurzFeb 2009

      I went back and forth on whether use read() or fread() in my example, and I wasn't sure which to choose. For the purpose of this example, I don't think there is a functional difference between them.

      In current Linux, I'm pretty sure both of them use the same underlying page cache. fread() adds a small amount of management overhead, but read() does just as much system level buffering. mmap() uses the same cache, but just gives direct access to it.

      But it's possible I'm wrong, and I don't seem to be able to find a solid source for this online. This page references this, though:
      http://duartes.org/gustavo/blog/post/page-cache-the-affair-between-memory-and-files
      I feel like I've read other more explicit descriptions, although possibly offline.

    • busterNov 2009

      Listing very old sites which may have still some perl fragments somewhere in there infrastructure doesn't mean perl isn't dead.
      I don't know of any major sites written in perl today.
      Also, i thought slashdot used perl a long time ago but have already written an new system, but i may remember that wrong...

      http://duartes.org/gustavo/blog/post/programming-language-jobs-and-trends has some interesting trends. From what i see there, i'd say perl is probably still alive but slowly dying.

      My hopes have been on parrot for perl. But after reading about the new perl version and its ridiculous new "features", i am convinced that perl will die when parrot breaks module compatibility with cpan, because noone will port modules, yet care for the new perl.

    • theoutlanderSep 2014

      Here are other resources that I'm tracking:

      http://www.sal.ksu.edu/faculty/tim/ossg/index.html

      http://joelgompert.com/OS/

      http://www.csi.ucd.ie/staff/jcarthy/home/alp/alp-05.pdf

      http://www.superfrink.net/athenaeum/

      http://www.cs.utah.edu/flux/oskit/html/oskit-www.html

      http://duartes.org/gustavo/blog/post/how-computers-boot-up/

      http://duartes.org/gustavo/blog/post/kernel-boot-process/

      http://www.ibm.com/developerworks/library/l-linuxboot/index.html

      http://www.osdever.net/bkerndev/Docs/title.htm

      http://sourceforge.net/p/oszur11/code/ci/master/tree/

      http://www.codeproject.com/Articles/737545/Writing-a-bit-dummy-kernel-in-C-Cplusplus

      http://freevideolectures.com/Course/2653/CSE-30341-Operating-Systems/1

    Related

    Ian Wienandtechnovelty.org16 people

    What actually happens when you plug in a USB device? (2007)

    Ian Wienand
    Personal · last shared 2022
    Agner Fogagner.org293 people

    An optimization guide for assembly programmers and compiler makers (2018) [pdf]

    Agner Fog
    Personal · last shared 2026
    Lundukelunduke.substack.com91 people

    The computers used to do 3D animation for Final Fantasy VII in 1996

    Lunduke
    Personal · last shared 2026
    Igor Ostrovskyigoro.com35 people

    Gallery of Processor Cache Effects

    Igor Ostrovsky
    Personal · last shared 2026
    Arm Community Blogcommunity.arm.com147 people

    An update on GNU performance

    Arm Community Blog
    Company · last shared 2025
    Chris Siebenmannutcc.utoronto.ca/~cks388 people

    Go is Google's language, not ours

    Chris Siebenmann
    Personal · last shared 2026
    Easyperfeasyperf.net36 people

    Precise timing of machine code with Linux perf

    Easyperf
    Personal · last shared 2026
    GNOME Blogsblogs.gnome.org490 people

    AirPods fast connect security vulnerability

    GNOME Blogs
    Company · last shared 2026