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
    C

    Carl Johnson

    blog.carlmjohnson.net · Personal blog · on HN since 2016

    Carl Johnson is a Go programmer who writes about Go tooling, CLI design, web development, and programming history.

    Visit blogHN submissions
    ProgrammingLanguages & CompilersWeb Development
    What HN says

    HN commenters recommend his Go CLI architecture advice, praise his go:embed guide, and cite his argument against Gitflow.

    Stats for nerds
    23HN people shared it
    33linked in comments
    863story points
    Nov 2022last shared
    2018people per year2022

    Top posts on HN

    1. 1
      Never use a dependency that you could replace with an afternoon of programming
      1 person · 347 points · first shared 2020 · 328 comments on HN
    2. 2
      Three Minor Features in Go 1.18
      2 people · 226 points · first shared 2021 · 90 comments on HN
    3. 3
      The 2,500 year old history of why Python’s all([]) returns True
      2 people · 191 points · first shared 2020 · 210 comments on HN
    4. 4
      What’s New in Go 1.19?
      1 person · 53 points · first shared 2022 · 16 comments on HN
    5. 5
      I wrote my own Go HTTP client
      3 people · 7 points · first shared 2021 · Discussion on HN
    6. 6
      Writing Go CLIs with Just Enough Architecture · the Ethically-Trained Programmer
      5 people · 6 points · first shared 2020 · Discussion on HN
    7. 7
      Ten Years of “Go: The Good, the Bad, and the Meh
      2 people · 4 points · first shared 2023 · Discussion on HN
    8. 8
      Dropping Support for IE11 Is Progressive Enhancement
      2 people · 4 points · first shared 2020 · Discussion on HN
    9. 9
      The failed promise of Web Components
      2 people · 3 points · first shared 2020 · 3 comments on HN
    10. 10
      Even More Minor Features in Go 1.18
      1 person · 3 points · first shared 2022 · Discussion on HN

    What HN people wrote when they linked it

    • earthboundkidMar 2020

      I recommended avoiding Gitflow back in 2018:

      > There are more complicated systems for branching like Git flow that have a separate “develop” branch and distinguish between “features” and “hot fixes”. These systems are fine if they fit your use case, but if a project releases code quickly, the level of complexity involved in Git Flow is unnecessary.

      > Ideally, branches should be short lived. One strategy to allow merging a branch before a large feature is fully completed is to create a feature flag that lets the production system have the new code in it but in an inactive state.

      https://blog.carlmjohnson.net/post/2018/git-gud/

    • bokwoonJul 2020

      One of my favourite abstraction advice comes from this article: https://blog.carlmjohnson.net/post/2020/go-cli-how-to-and-advice.

      "You want one layer to handle user input and get it into a normalized form. You want one layer to do your actual task. And you want one layer to handle formatting and output to the user. Those are the three layers you always need."

      The "do the task" layer can be abstracted again further. But starting it off as a monolithic layer, separated from input and output, is always the right call.

    • kaushalmodiJun 2018

      I use this technique for cache busting with Hugo: https://blog.carlmjohnson.net/post/2017/hugo-asset-pipeline/. I am not a web developer, so have translated that flow to a simple Bash script which I run on Netlify.

      Hugo v0.43 has inbuilt cache busting on the roadmap, and Hugo v0.42 will probably be released in about a week.

    • 5e92cb50239222bNov 2022

      It's a bit more advanced than what Rust macros provided last time I checked. You can shove whole directories in there and then traverse them or serve as static resources with pretty much one line of code.

      Random blog post with a few examples:

      https://blog.carlmjohnson.net/post/2021/how-to-use-go-embed/

    • coldteaJun 2020

      They 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-generate/

    • daomanAug 2021

      Yes, and it's super easy to do nowdays with embed since Go 1.16
      https://blog.carlmjohnson.net/post/2021/how-to-use-go-embed/

    Related

    Chris Siebenmannutcc.utoronto.ca/~cks388 people

    Go is Google's language, not ours

    Chris Siebenmann
    Personal · last shared 2026
    Nate Finchnpf.io20 people

    3.5 Years, 500k Lines of Go

    Nate Finch
    Personal · last shared 2022
    David Givencowlark.com94 people

    Live coding a vi for CP/M from scratch

    David Given
    Personal · last shared 2026
    Axel Wagnerblog.merovius.de29 people

    Diminishing returns of static typing

    Axel Wagner
    Personal · last shared 2025
    Go Blogblog.golang.org529 people

    Go 2, here we come

    Go Blog
    Company · last shared 2026
    Jason Moironjmoiron.net36 people

    Go Performance Tales

    Jason Moiron
    Personal · last shared 2026
    Dave Cheneydave.cheney.net271 people

    Why Slack is inappropriate for open source communications

    Dave Cheney
    Personal · last shared 2026
    Russ Coxresearch.swtch.com554 people

    Timeline of the xz open source attack

    Russ Cox
    Personal · last shared 2026