Top all-time · #163
Dave Cheney
Personal blog · dave.cheney.netprogramming
Dave Cheney's personal blog at dave.cheney.net covers programming. Since 2012, 272 different Hacker News readers have linked it 389 times, most often “cgo is not Go (2016)”. It is still writing: the last post was on 2025-12-18, and you can follow it by feed.
Rarely recommended · 4 of 40 sampled comments recommend it?
Why HN links it
HN readers link Dave Cheney's blog as a source of in-depth Go articles and practical Go advice, such as Practical Go, Functional Options and the error-handling posts.
- Recommended for · 4 comments
- Called 'very high quality' Go articles and 'great readings' on errors; listed among favourite blogs.
Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- cgo is not Go (2016)19 people · 21 mentions · first linked 2017-03-24
- Functional Options for Friendly APIs (2014)11 people · 11 mentions · first linked 2018-03-02
- How the Go runtime implements maps efficiently without generics9 people · 12 mentions · first linked 2018-05-29
- An introduction to cross compilation with Go8 people · 8 mentions · first linked 2012-09-08
- Don't just check errors, handle them gracefully (2016)8 people · 8 mentions · first linked 2017-12-11
- Channel Axioms6 people · 9 mentions · first linked 2017-06-09
- Functional Options for Friendly APIs in Go6 people · 6 mentions · first linked 2014-10-16
- A few bytes here, a few there, pretty soon you’re talking real memory5 people · 7 mentions · first linked 2021-01-05
- Resources for new Go programmers5 people · 6 mentions · first linked 2013-01-02
- Cgo is not Go5 people · 5 mentions · first linked 2016-01-18
What Hacker News says?
Time to pull up my RSS reader! https://drewdevault.com/ http://jvns.ca/ https://www.benkuhn.net/ https://danluu.com/ https://scattered-thoughts.net/ http://antirez.com/ https://www.kalzumeus.com/ https://neilkakkar.com/ https://zachholman.com/ http://rachelbythebay.com/w/ https://endler.dev/ https://www.expatsoftware.com/articles/ https://www.the-paper-trail.org/ https://tonsky.me/ https://dave.cheney.net/ https://b…
Comment linking /
on “Ask HN: Favorite Blogs by Individuals?”Submitted Why Slack is inappropriate for open source communications as a story · 847 points
HN discussionI think a useful iteration of that pattern is one called Functional Options : * https://dave.cheney.net/2014/10/17/functional-options-for-fr... * https://github.com/uber-go/guide/blob/master/style.md#functi...
Comment linking /2014/10/17/functional-options-for-friendly-apis
on “How I write HTTP services in Go after 13 years”Submitted Practical Go: Real-world advice for writing maintainable Go programs as a story · 688 points
HN discussionI think the parent was a bit tongue-in-cheek. It's in reference to the keyboard layout vi was developed with and the fact many vi users are obsessed with keeping their fingers on/near the home row (much like, "a /real/ vi user doesn't use the mouse"). Ctrl-[ is an equivalent to ESC on American English keyboards. https://dave.cheney.net/2017/08/21/the-here-is-key https://vim.fandom.com/wiki/Avoid_the_escape_key#Avoid…
Comment linking /2017/08/21/the-here-is-key
on “New 13-inch MacBook Pro”Submitted Clear is better than clever [pdf] as a story · 498 points
HN discussionConversely, more sophisticated algorithms, and particularly monomorphization, may bloat the code size, causing icache, L2/L3 cache, and TLB misses. (Also slows compilation.) I think this is under-appreciated because it doesn't show in microbenchmarks. (I wish I knew of an easy way to measure how much cache pressure you're causing from a microbenchmark.) I suspect for this reason it'd be better in Rust to use a Go-li…
Comment linking /2018/05/29/how-the-go-runtime-implements-maps-efficiently-without-generics
on “Rust is now overall faster than C in benchmarks”Submitted Clear is better than clever as a story · 365 points
HN discussionhttps://dave.cheney.net/practical-go/presentations/qcon-chin... > 8.3. Never start a goroutine without [knowing] when it will stop. 100% agreed with the concept, but even the final example is flawed. That'll unblock and continue immediately after `close(stop)`, without being able to do two important things: it can't tell you when it's done shutting down, and it can't tell you if it encountered an error. Fixing this…
Comment linking /practical-go/presentations/qcon-china.html
on “Practical Go: Real-world advice for writing maintainable Go programs”Submitted The Zen of Go as a story · 328 points
HN discussionI suspect that they borrowed this idea from Golang's "composite literal" spec. which is really nice feature https://dave.cheney.net/2014/10/04/that-trailing-comm
Comment linking /2014/10/04/that-trailing-comm
on “ECMAScript 2017 Language Specification”Submitted Go 1.7 toolchain improvements as a story · 248 points
HN discussionIf you use ARM devices, it might be worth pointing out that Dave Cheney has unofficial tarballs of _older_ versions here: http://dave.cheney.net/unofficial-arm-tarballs No 1.5 (yet), but if, like me, you do ARM stuff, you might want to bookmark this. And of course the cross-compiler works, but still. (edit: moved mention of ARM to first line)
Comment linking /unofficial-arm-tarballs
on “Go 1.5 is released”Submitted The ‘here is’ key as a story · 241 points
HN discussionif you do check it out, you can save some time and get Dave Cheney's unofficial go arm binaries http://dave.cheney.net/unofficial-arm-tarballs
Comment linking /unofficial-arm-tarballs
on “Lime – Experimental Sublime Text clone”Submitted Taking Go modules for a spin as a story · 229 points
HN discussionIt wouldn't be especially surprising to me. JSON's parsing performance is difficult, whether or not the language doing the parsing is fast or not. There's a reason that there are almost always libraries claiming faster JSON performance, regardless of the language. Go is marketed as a fast language, and they're still trying to build a high performance JSON parser [0]. Parsing JSON will always be slower than most of t…
Comment linking /high-performance-json.html
on “Xi-Editor Retrospective”Submitted Go’s hidden pragmas as a story · 221 points
HN discussionhttps://dave.cheney.net/high-performance-go-workshop/dotgo-p...
Comment linking /high-performance-go-workshop/dotgo-paris.html
on “Practices for writing high-performance Go”Submitted Be wary of functions which take several parameters of the same type as a story · 218 points
HN discussionI think Go can only be defined as "simple" in the New Jersey (worse is better) sense of simple, that is: "it is more important for the implementation to be simple than the interface." A lot of things about Go are not simple. In my opinion a simple language is not about how simple it is to write a parser or a compiler for that language, but it's about how many different non-trivial and arbitrary pieces of information…
Comment linking /2014/03/19/channel-axioms
on “Go is not an easy language”Submitted Never edit a method, always rewrite it? as a story · 199 points
HN discussionNot necessarily a collection of beginner tutorials, but for what they're worth, these are some very high quality in-depth articles on pieces of the language: - https://dave.cheney.net/practical-go - https://www.ardanlabs.com/all-posts/ If you're looking for more high-level, "get-things-done" stuff, this has been a great resource for getting off the ground: - https://github.com/astaxie/build-web-application-with-gola…
Comment linking /practical-go
on “Ask HN: Your favourite tutorial for total beginners?”Submitted How the Go runtime implements maps efficiently without generics as a story · 197 points
HN discussionThey use comments for compilation directives, build instructions, code generation and other such stuff. https://dave.cheney.net/2018/01/08/gos-hidden-pragmas https://dave.cheney.net/tag/build-constraints https://blog.carlmjohnson.net/post/2016-11-27-how-to-use-go-...
Comment linking /tag/build-constraints
on “25 Years of PHP”Submitted Understand Go pointers as a story · 189 points
HN discussionThat solved the hot split problem, but that was more of a once-in-a-while gotcha. The main downside for Rust specifically was the complications that arise when doing any sort of C interop in the presence of growable stacks. This mattered more for Rust than Go, since Rust is relatively more intended to freely intermingle with C code (and other languages via, C FFI), whereas the happy path for Go tends to involve excl…
Comment linking /2016/01/18/cgo-is-not-go
on “Falling in love with Rust”Submitted Cross compilation just got better in Go 1.5 as a story · 177 points
HN discussionGo is much easier to learn, and probably takes less time to develop with on average. Also, Rust is not really a Go competitor: https://dave.cheney.net/2015/07/02/why-go-and-rust-are-not-c...
Comment linking /2015/07/02/why-go-and-rust-are-not-competitors
on “Falling in love with Rust”Submitted Go 1.3 Linker Improvements as a story · 171 points
HN discussion