Jon Calhoun

calhoun.io · Personal blog · on HN since 2015

Jon Calhoun writes Go tutorials and essays on web application structure, testing, cookies and code generation, and also on remote work pay.

What HN saysHN links it for Go web development guidance, including testing conventions and MVC views, and the author joins threads to explain his posts.
26HN people shared it
7linked it in comments
45stories submitted
238story points
1 year agolast shared
2015people per year2026

Most-shared posts

  1. 1
    JSON APIs Are Just Web Applications
    4 people · 9 points · first shared 2018 · discussion on HN
  2. 2
  3. 3
    Homepage
    3 people · first shared 2017
  4. 4
    Securing cookies in Go
    2 people · 91 points · first shared 2017 · 21 comments on HN
  5. 5
    Using Signals with Go
    2 people · 8 points · first shared 2025 · discussion on HN
  6. 6
    How to test with Go
    2 people · 3 points · first shared 2016 · discussion on HN
  7. 7
    5 Useful Ways to Use a Closure
    2 people · 3 points · first shared 2016 · discussion on HN
  8. 8
    Golang interfaces
    2 people · 3 points · first shared 2018 · discussion on HN
  9. 9
  10. 10
    Using code generation to survive without generics in Go
    2 people · 3 points · first shared 2017 · 1 comments on HN
  11. 11
    Controllers and Views in Go
    1 people · 42 points · first shared 2015 · 14 comments on HN
  12. 12
    Let's Learn Algorithms: An Intro to Bubble Sort
    1 people · 18 points · first shared 2016 · 1 comments on HN
  13. 13
    An Intro to Templates in Go
    1 people · 8 points · first shared 2016 · 1 comments on HN
  14. 14
    Avoiding Common Sync.WaitGroup Mistakes in Go
    1 people · 4 points · first shared 2025 · 1 comments on HN
  15. 15
    Route prefix specific middleware in Golang
    1 people · 3 points · first shared 2016 · discussion on HN

What HN people wrote when they linked it

K0SM0S · 2019-11-08
Ahh, errors. A programmer's best friend or enemy or both? I may be a rookie, but I'll say this: - A few years ago I chose to learn Python "The Hard Way"[1] because I already had experience with scripting and a little bit of C++/Java/PHP/Js. While I fell in love with the flexibility of the language — how idiosyncratic it could be made, how quickly fluency came — error handling remained a mysterious dark space to me, a "TODO" for later. [which I didn't because I didn't program much after this first real training] - I later tried to become "Eloquent" in Javascript[2], and while I can never praise that book enough, the language's paradigm wasn't what made error handling 'click' for me. Now I see, but it took a trip far, far away. [Js isn't my problem space, and when it is I'd rather use TypeScript probably] - And finally Go. While I haven't finished once "The Go Programming Language"[3] yet — just followed a few great online books/courses so far (notably by Jon Calhoun[4], Xoogler), and only built a few basic things — I can say this: now I get it. I mean errors. I really do. I think these few points mattered: - Go has error checking 'in your face' indeed and makes it useful, because passing a value makes sense, and error type is no longer abstracted as in more OOP paradigms, it doesn't feel "otherworldly" to the present code, it's right there in the imperative flow. - Testing is well-integrated (`_test.go` files; I know, at a basic level, but that's what I expect from a…
usegolang · 2017-05-22
Over the last 9 months or so I have slowly moved from never blogging, releasing videos, or doing anything like that to fairly consistently releasing educational articles related to Go at https://www.calhoun.io , writing a book (+ videos for a complete course) teaching web development with Go, and releasing a few screencasts teaching algorithms with Go. I say all that to tell you that I didn't just magically start writing every day. I started slowly. Some days I was too worn out to write, but I would try to push myself to spend 10m doing SOMETHING nearly every day. Maybe that was writing up some quick code to see if it would make an interesting article, or maybe I would take an article idea and turn it into a rough outline, or maybe I would turn a small section of the outline into sentences and paragraphs. It didn't matter as long as I tried to build that habit of doing something. At first it was hard but it got way easier. And 10m a day really isn't a big commitment. As you figure out your own process you will find there are many small pieces you can work on each day that slowly help you turn whatever you want to do into a habit. So my advice is to start with small goals that you can achieve and build on them. Maybe instead of one video a week you should try one every two weeks. If you get an extra video out, great, but if you don't you won't feel like you failed. And regardless of what you do, don't feel like you have to do something. There are several great blogs out…
mtlynch · 2025-01-10
What I describe in the post isn't a particular tool, just a coding convention to follow in writing tests using Go's built-in testing tools. It's hard to say how to test your app without more information, but here's a good primer on testing in Go: https://www.calhoun.io/how-to-test-with-go/
kramer1416 · 2017-11-23
What is the slice of ints at the following URI about? https://www.calhoun.io/hire-me/
joncalhoun · 2017-02-10
Is https://www.calhoun.io/creating-the-v-in-mvc/ close to what you had in mind? I need to do a follow-up to that with the type I use to wrap that logic, but I am curious if this is inline with what you are looking for in the examples.

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close