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
    D

    David Crawshaw

    crawshaw.io · Personal blog · on HN since 2018

    David Crawshaw, a programmer and Tailscale co-founder, writes about Go, SQLite, networking, and working with LLM coding agents.

    Visit blogRSSHN submissions
    ProgrammingAI & Machine LearningNetworking
    What HN says

    Commenters praise his agent principal-agent post for framing code review as a trust problem, and point to his one-process programming and LAN posts.

    Stats for nerds
    63HN people shared it
    55linked in comments
    4.2Kstory points
    Jul 2026last shared
    2019people per year2026

    Top posts on HN

    1. 1
      How I program with LLMs
      4 people · 919 points · first shared 2025 · 332 comments on HN
    2. 2
      Software I’m thankful for (2021)
      6 people · 827 points · first shared 2021 · 509 comments on HN
    3. 3
      How I program with agents
      3 people · 617 points · first shared 2025 · 295 comments on HN
    4. 4
      Log4j: Between a rock and a hard place
      1 person · 553 points · first shared 2021 · 393 comments on HN
    5. 5
      Remembering the LAN
      4 people · 229 points · first shared 2020 · 74 comments on HN
    6. 6
      One-Process Programming Notes
      15 people · 197 points · first shared 2018 · 39 comments on HN
    7. 7
      Zero Trust Networks
      2 people · 165 points · first shared 2020 · 55 comments on HN
    8. 8
      Go 1.13: xerrors
      1 person · 157 points · first shared 2019 · 145 comments on HN
    9. 9
      UTF-7: a ghost from the time before UTF-8
      2 people · 153 points · first shared 2018 · 134 comments on HN
    10. 10
      Searching the Creative Internet
      1 person · 121 points · first shared 2018 · 46 comments on HN

    What HN people wrote when they linked it

    • apitmanMar 2025

      Tailscale is one of my favorite companies. They're clearly on to something. Here's a great post by their CTO explaining a lot of the motivation and vision behind it: https://crawshaw.io/blog/remembering-the-lan

      IMO the main outstanding questions/concerns are:

      * Is the VPN model really the way to go? If someone gets their hands on one of your Tailscale nodes, they can access every service on your tailnet, which are likely running with reduced security since that's a huge part of the appeal. This is exactly the situation BeyondCorps/Zero Trust was created to avoid. Tunneling services[0] are more of a Zero Trust approach, but they can't match the seamlessness of Tailscale once a node is connected to the tailnet.

      * Can it expand into the layman market? I wonder if the average person will ever be willing to install a VPN app on all their devices. On the flipside, I could see TS partnering with someone like Google to integrate TS tightly with Android and set up a private network between all your Google-signed-in devices.

      * The relay system - DERP is nice, but it's primarily intended for signaling/fallback. It feels like CGNAT adoption is growing faster than IPv6 is, and I wouldn't be surprised if fewer and fewer p2p connections succeed over time[1]. DERP forces everything over a single TCP connection (HOL blocking), and I'm not sure it even has any flow control.

      * Use in web browsers - They got a demo of this working, but it's pretty involved. You have to compile the entire…

    • exikyutJul 2021

      [ Woops, I went into GPT-3 mode. I'm really bad at rambling concisely, and fitting the result into a couple of comfortably short paragraphs. :/ ]

      Thing was, Alley Cat was the only (interesting) game on the machine in question... and when I (sadly) explained what I'd done to the person who gave me the system, they responded by promptly deleting the EXE file. While a bit of a tangent, my honest thanks for helping me realize (as I type this) that this memory was what kicked off the deep-seated negative associations I've had around gaming my whole life, and why I often lock up whenever I think about the subject. (!)

      I completely agree that filesystem recovery is somewhat of a more advanced topic, and entirely unfair to expect mastery of at ~10 :D. I kind of understand about 42% of https://marcan.st/2015/10/rescuing-a-broken-ntfs-filesystem/ myself, for example.

      I'm very curious how you managed to end up staring at a system with the DriveSpace driver un-loaded though; that just sounds broken. I wonder if you tripped over an uncaught bug/edge case in the setup process.

      (And yeah, the system I was using had DOS 6.20 on it, thus had DoubleSpace instead.)

      [TIL about the Dysan brand of floppy disks]

      How'd you figure out that BAS = QBASIC?

      In my case, the person who gave me the PC randomly decided one day that it needed a menu, "so we didn't need to type commands in". The PC sat in my bedroom, and Mum rarely used it... but okay, whatever works. Well, said menu ended up being a…

    • ncrucesDec 2023

      database/sql adds some overhead; in return, it gives you a connection pool, and tries not to have you worry about connections.

      A lot of the interesting features of SQLite are connection oriented, and compared to other databases, connections are cheap (because it's all local). So the things database/sql offers are (relatively) less valuable, and it makes other things harder.

      Yet (IMO) connection pools still offer some performance benefits, not having to worry about (re)preparing statements on new connections is still helpful, and many of the connection oriented things you might want to do can be exposed through database/sql with some imagination.

      I have a lot of respect for crawshaw and zombiezen; I started from their PoV. But I've since come around to database/sql.

      A lot of what is mentioned in [1] has been fixed in database/sql or can be fixed in drivers: parameter names now work in database/sql; their approach to statement caching isn't necessarily better, but can be added to a driver, or live in a compatible framework; panics vs. errors is contentious; savepoints can be made to work just fine [2]; and for contexts, I started with crawshaw and built an improved version of it into my driver, that is both low overhead, interacts well with the Go scheduler, and doesn't start additional goroutines.

      Living in database/sql land gives you access to other amazing tooling like SQLC, just to name a single one. And it doesn't need to be either/or: drivers should support both…

    • apiApr 2020

      I haven't been offended by it, and I'm the founder of a company that's been around longer and is probably the closest competitor: https://www.zerotier.com/

      I don't hate on people for doing similar things. If anything I am absolutely shocked it took someone this long, since to me the idea of a full mesh virtual network is how things should work, everything else is stupid and clunky, the fact that we have to bounce off servers to transfer things is dumb, and NAT is pure concentrated evil and must be destroyed.

      I absolutely loved David Crawshaw's Remembering the LAN post:

      https://crawshaw.io/blog/remembering-the-lan

      It echoes exactly the sentiments that motivated me to start working on ZeroTier, so I wish them well.

      As far as the upvotes go I just figured they have a lot of friends from their time at Google and their posts get upvoted a lot.

      I notice the same thing when any company that has a lot of HN users among its employee base does anything. When AWS, Apple, and Google do a bunch of product releases the front page gets bombed for days. The site practically turns into a news feed of new AWS Elastic Beanie Cap products when the ironically titled AWS ReInvent happens. If anything the FAANG companies get more free advertising here than anyone.

    • SomeoneMay 2023

      I don’t see any argument in this article for the claim of the cost being absurd.

      On the contrary, the final line

      > Maybe there is a way to do better, I hope there is, but I suspect not.

      to me, says the writer suspects that it isn’t absurd, but as good as it can get.

      I also think there’s broad agreement on the fact that finalizers almost always are a bad idea.

      For golang, there’s https://crawshaw.io/blog/tragedy-of-finalizers, which says:

      “So a common instinct we all have is to say "gee, it sure would be nice if the file descriptor were closed when the File is garbage collected, let's use a finalizer". This does not work.”

      and

      “It is a bug to depend on the GC to run before your resources are exhausted”

      and

      “What are finalizers good for? Nothing generally.”

      It also says “I believe I have one very small use for finalizers as they exist today, which I will talk about in a followup blog post”. I couldn’t find that post, though.

      Java even plans to remove them from the language (https://openjdk.org/jeps/421)

    • oopsFeb 2022

      Can you elaborate on what the app does and also prioritize your criteria?

      If simplicity is your main requirement you might find inspiration in this:

      > My focus has been on how to adapt the lessons I have learned working in teams at Google to a single programmer building small business work. There are many great engineering practices in Silicon Valley's big companies and well-capitalized VC firms, but one person does not have enough bandwidth to use them all and write software. The exercise for me is: what to keep and what must go.

      > If I have been doing it right, the technology and techniques described here will sound easy. I have to fit it all in my head while having enough capacity left over to write software people want. Every extra thing has great cost, especially rarely touched software that comes back to bite in the middle of the night six months later.

      https://crawshaw.io/blog/one-process-programming-notes
      https://news.ycombinator.com/item?id=17701882

    Related

    Dave Cheneydave.cheney.net271 people

    Why Slack is inappropriate for open source communications

    Dave Cheney
    Personal · last shared 2026
    Sketch.dev Blogsketch.dev18 people

    The unreasonable effectiveness of an LLM agent loop with tool use

    Sketch.dev Blog
    Company · last shared 2026
    Peter Coxpush.cx20 people

    What Comes After MVC

    Peter Cox
    Personal · last shared 2026
    Trail of Bits Blogblog.trailofbits.com278 people

    RSA is a fragile cryptosystem

    Trail of Bits Blog
    Company · last shared 2026
    fasterthanli.mefasterthanli.me236 people

    A half-hour to learn Rust

    fasterthanli.me
    Personal · last shared 2026
    Simon Willison's TILstil.simonwillison.net111 people

    One-liner for running queries against CSV files with SQLite

    Simon Willison's TILs
    Personal · last shared 2026
    Will Crichtonwillcrichton.net50 people

    Portable EPUBs

    Will Crichton
    Personal · last shared 2025
    Chris Wellonsnullprogram.com295 people

    Why Aren't There C Conferences?

    Chris Wellons
    Personal · last shared 2026