Log inSign up
Jon Calhoun
6,233 posts
Image
user avatar
Jon Calhoun
@joncalhoun
Teaching #golang & building fun projects • Want to learn Go? Try gophercises.com and usegolang.com
Pennsylvania, USA
calhoun.io
Joined May 2008
404
Following
10.5K
Followers
RepliesRepliesMediaMedia

New to X?

Sign up now to get your own personalized timeline!

Create account

By signing up, you agree to the Terms of Service and Privacy Policy, including Cookie Use.

Terms·Privacy·Cookies·Accessibility·Ads Info·© 2026 X Corp.
Don't miss what's happening
People on X are the first to know.
Log inSign up
  • Pinned
    user avatar
    Jon Calhoun
    @joncalhoun
    Jan 6, 2025
    Interested in learning to code in 2025? Here's some of my tips & advice. 🧵
    6.3K
  • user avatar
    Jon Calhoun
    @joncalhoun
    Aug 23, 2019
    After 16 months of fostering my wife and I have officially adopted Danielle!  The journey here was challenging at times, but it was oh so worth it. Now I get to call her my sweet little daughter 🥰😍 Oh and I can finally share pictures of her!
    Image
    Image
    Image
  • user avatar
    Jon Calhoun
    @joncalhoun
    May 9, 2020
    Writing #golang code that needs closed (eg a DB connection)? Try returning the close function so it is harder for developers to forget.
    Image
  • user avatar
    Jon Calhoun
    @joncalhoun
    Jan 16, 2020
    🎉 I just released AlgorithmsWithGo.com 🎉 Want to learn how algorithms and data structures work? Struggle with coding algorithms? Just want some fun coding problems while learning #golang? Check the course out! And it is FREE! Yep, you heard me right. No💰 req for this one
    Image
    Algorithms with Go
    From algorithmswithgo.com
  • user avatar
    Jon Calhoun
    @joncalhoun
    May 25, 2020
    You don't need to manually add struct tags to your #golang types. Almost all editors support some fort of struct tag generation, which is really handy. Multiselect can also do the trick if you are familiar with it.
    Image
    00:00
  • user avatar
    Jon Calhoun
    @joncalhoun
    Aug 29, 2021
    If you use SQL and Go, how do you handle database migrations for your app? When do they run during a deploy, how are they rolled back, what tools, etc? I still don't think I've seen anything as smooth as Rails was in a Go app. Figured I'd explore options again.
  • user avatar
    Jon Calhoun
    @joncalhoun
    Jul 12, 2025
    Go's HTTP server is concurrent by default. That's right, every incoming web request is handled in a goroutine without any extra code! Handling requests concurrently is great because it prevents a web server from blocking. For instance, if your handler needs to use an external
    13K
  • user avatar
    Jon Calhoun
    @joncalhoun
    Feb 6, 2023
    Does anyone have recommendations for beginner-friendly open source projects written in #golang that are accepting new contributors?
    32K
  • user avatar
    Jon Calhoun
    @joncalhoun
    Apr 17, 2022
    It has been a long, but good weekend.
    Image
  • user avatar
    Jon Calhoun
    @joncalhoun
    Aug 30, 2025
    Using sync.WaitGroup in your Go code to track when goroutines are finished? Avoid the common mistake of calling Add inside of the goroutine. Go 1.25 has even added a check for this in "go vet", as well as a helper fucntion - WaitGroup.Go - to help avoid this issue. #golang
    Image
    9.6K
  • user avatar
    Jon Calhoun
    @joncalhoun
    Jan 1, 2023
    In 2022, I did this weird little experiment where I redesigned the net/http Handler in #golang. Rather than having a ServeHTTP(w, r) method, I instead broke it into two parts - a handler, and a responder that is returned from the handler. 🧵👇
    Image
    36K
  • user avatar
    Jon Calhoun
    @joncalhoun
    Sep 4, 2025
    Go's time.Ticker is a great tool for running the same code on a set interval. For instance, you could use it to check the health of a server every 5 minutes and send you a notification if it has any issues.
    Image
    8.4K
  • user avatar
    Jon Calhoun
    @joncalhoun
    Sep 27, 2022
    My #golang courses are on sale until Oct 5. - Web Dev w/ Go (usegolang.com) - Test w/ Go (testwithgo.com) My free courses are still free 🤪 - Gophercises.com - Algorithmswithgo.com If you know someone learning Go, please let them know. Thanks!
  • user avatar
    Jon Calhoun
    @joncalhoun
    Aug 28, 2025
    The "range" keyword in Go is incredibly versatile. It can be used to range over slices, maps, and even though I don't love it, it can also be used with a single integer to create a for loop that runs that many times. Did you know it can also be used to range over a channel,
    Image
    8.9K
Advertisement
Advertisement