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

    Joshua Davis

    joshldavis.com · Personal blog · on HN since 2013

    Joshua Davis writes about programming tools, Vim workflows, Dijkstra's handwriting, and the culture of Hacker News and tech.

    Visit blogHN submissions
    ProgrammingWriting & ThinkingOpen Source & Linux
    What HN says

    HN mostly links his post on how he learned to write like Dijkstra, which commenters summarize as practice with a goal or example.

    Stats for nerds
    24HN people shared it
    22linked in comments
    376story points
    Mar 2026last shared
    2016people per year2026

    Top posts on HN

    1. 1
      The Path to Dijkstra’s Handwriting (2013)
      11 people · 176 points · first shared 2013 · 71 comments on HN
    2. 2
      Put Yourself Out There: The Myth of the Genius Programmer
      1 person · 145 points · first shared 2014 · 78 comments on HN
    3. 3
      Phil Zimmermann Quote on Government and Crypto (1996)
      1 person · 11 points · first shared 2013 · Discussion on HN
    4. 4
      Vim Tab Madness. Buffers vs. Tabs
      6 people · 9 points · first shared 2014 · 2 comments on HN
    5. 5
      The Similarity of the World in Gattaca and the World Elon Musk Envisions
      1 person · 7 points · first shared 2014 · Discussion on HN
    6. 6
      Heavy-handed HackerNews: This Title Should Differ from the Article
      2 people · 6 points · first shared 2014 · Discussion on HN
    7. 7
      Amazon’s Culture of Discomfort
      1 person · 5 points · first shared 2018 · Discussion on HN
    8. 8
      An Email from Edsger Dijkstra’s Son
      2 people · 4 points · first shared 2017 · Discussion on HN
    9. 9
      Oh-my-zsh is the Disease and Antigen is the Vaccine
      2 people · 3 points · first shared 2014 · 1 comments on HN
    10. 10
      Program to an interface, not an implementation. With Rust example code.
      1 person · 3 points · first shared 2013 · Discussion on HN

    What HN people wrote when they linked it

    • foobOct 2016

      These are all good tips but most of the anti-patterns seem to skew towards beginners (e.g. don't use the arrow keys, don't navigate in insert mode). One that I think is more common among intermediate, and even advanced, users is the misuse of tabs, windows, and buffers.

      A lot of people have a tendency to think of each tab as corresponding to a single open file. This is very understandable because it closely matches the paradigm of most IDEs but it's actually an anti-pattern in VIM. Tabs are really meant to be more like workspaces where you arrange multiple windows into a desired layouts. You then have one buffer for each file that you're dealing with and view them in your windows. It's perfectly fine for multiple windows to share a single buffer or to switch out the buffer that is being viewed in any given window. This StackOverflow answer [1] and this blogpost [2] both go into a fair bit more detail.

      If you're trying out this approach for the first time then you probably want to add `set hidden` to your configuration in order to avoid automatically closing buffers that aren't currently being viewed in a window. Coupling this approach with fzf.vim [3] makes managing very large numbers of files a breeze compared to using one tab per file.

      [1] - http://stackoverflow.com/a/26710166

      [2] - http://joshldavis.com/2014/04/05/vim-tab-madness-buffers-vs-tabs/

      [3] - https://github.com/junegunn/fzf.vim

    • folkhackJun 2021

      In the US we have a society where people walk around wearing suffering like a badge of honor. We worship work. I was brought up in a Midwest culture where "work ethic" was everything - if you worked hard enough, you would be successful. In contrast, if you were not successful it was because you didn't work hard enough.

      Then, I got into tech. I hear "war stories" from people about sleeping under their desk at their cubicles. I hear people tell jokes about how their career strains their marriage. I hear about people wasting their 20's working every hour they can for a FAANG to get ahead... It was like that whole "work ethic gets you ahead" culture from my childhood got turned up to 11.

      I'm meandering here but overall that poem reminded me of a blog post from long ago stating "Never Save Anything for the Swim Back. Ever." [1] which was introduced to me by a manager using it as justification to work a 60+ hour crunch week. I guess where I'm going here is these sort of idealizations of fiction where "work ethic trumps all" really clash with this poem. I feel like idealizations like this serve the interests of those who are capitalizing off of labor more than they do the general worker/person.

      [1] https://joshldavis.com/2013/08/31/never-save-anything-for-the-swim-back/

    • darthlucioMay 2018

      I know you said that you like maintaining a super minimal .vimrc, but fwiw there's a couple of plugins that really helped me with the workflow issues you mentioned struggling with:

      > Jumping around in longer texts: I know the basics, like searching (/), jumping to a matching bracket (%) or jumping to specific lines (for line 10, type 10G), but I still could use symbols more often for navigation.

      vim-sneak is real nice for this, and has turned into one of my most-used movement commands https://github.com/justinmk/vim-sneak

      > Using visual mode for moving text around: Sometimes it can be quite complicated to type the right combination of letters to cut (delete) the text I want to move around. That's where visual mode (v) shines. It highlights the selected text. I should use it more often.

      vim-move was a game changer for me https://github.com/matze/vim-move

      > Tabs: I know how tabs work, but all the typing feels clunky. That's why I never extensively used them. Instead, I mostly use multiple terminal tabs or an IDE with Vim bindings for bigger projects.

      This is worth a read: https://joshldavis.com/2014/04/05/vim-tab-madness-buffers-vs-tabs/. Buffers + vim fzf is a really nice workflow https://github.com/junegunn/fzf.vim

    • Sir_SubstanceFeb 2016

      Oh jesus buddy, there's always one of you. If you care that much go find a mod to ban me (or are you a mod? I don't care), and I'll go find some other corner of the internet.

      You're welcome to slowly turn this place into a dustbowl by bitching at people for having conversations if that's what you enjoy doing in a community, don't let me stop you, but let me remind you of this:

      You weren't involved in the conversation, and your comment history is nothing but wandering around sticking your nose in robust discussion and whining that people aren't talking to each other via the predefined rules that you like, as if human conversation is based on your two favorite links. You're not contributing here, and there's not a single post in the last several pages of your comments that implies you care about, understand or have an opinion on anything posted here, so please shush and let the rest of us get on with our sharing.

      edit: http://joshldavis.com/2014/10/03/heavy-handed-hackernews/

      Looks like you've been doing this for at least 16 months, congrats or something?

    • sethrinMar 2016

      Firstly, this isn't about me. I'm not the one who started this project, I don't have any stake in maintaining it, and I'm definitely not the only one to notice that the tickets are piling up. Frankly I thought it was widely known.[0][1]

      As it happens, I am probably in the running for worst/poorest developer on HN, and that's using the term "developer" broadly. To the degree that I have any resources that aren't being put towards subsistence, I'm not sure I could help anyone with anything. It doesn't feel particularly good to have to explain that, especially since everyone on here seems to be in a vastly different social situation, but either way, I'd appreciate fewer personal reflections.

      [0]http://joshldavis.com/2014/07/26/oh-my-zsh-is-a-disease-antigen-is-the-vaccine/
      [1]https://www.bountysource.com/issues/102375-move-plugins-to-separate-repositories-and-use-antigen-package-manager

    • carterehsmithMay 2018

      "they argued about whether it’s a big enough site to include"

      Wow. That sounds ridiculous. But if you try and track that site ...

      From https://twofactorauth.org/
      "Made with tea by Josh Davis..."
      Then you follow this "Josh Davis" link to https://joshldavis.com/

      ... and you find this:

      "
      Splootysplotty: Open Source Alternative to Lewis Carroll’s Jabberwocky"

      "
      'Twas haplex and kuffle problem.
      Projects Dalo and Jotts voluck.
      It's not folazy as Lablem,
      But merely fosts toontruck.
      "

      ...interesting.

    Related

    jwzjwz.org880 people

    Watch a VC use my name to sell a con

    jwz
    Personal · last shared 2026
    Josh's Blogwp.josh.com23 people

    Google AdWords Exploit Seen in the Wild

    Josh's Blog
    Personal · last shared 2025
    Matt Webbinterconnected.org128 people

    I wish my web server were in the corner of my room

    Matt Webb
    Personal · last shared 2026
    Herb Suttergotw.ca84 people

    Ritchie, Stroustrup, and Gosling interview

    Herb Sutter
    Personal · last shared 2026
    Daring Fireballdaringfireball.net1.8k people

    Facebook is an attack on the open web

    Daring Fireball
    Personal · last shared 2026
    Joshua Porterbokardo.com78 people

    Principles of UI design

    Joshua Porter
    Personal · last shared 2025
    Aphyraphyr.com551 people

    Hexing the technical interview (2017)

    Aphyr
    Personal · last shared 2026
    Gary Marcusgarymarcus.substack.com203 people

    ChatGPT went berserk

    Gary Marcus
    Personal · last shared 2026