All Articles

Building Gophercises

This is a write-up of a talk I gave at the Gotham Go conference in 2018. It won’t be identical to the talk, but should cover the same topics and convey the same message. Whenever the videos from the conference are posted online I’ll also link to it from here. Slides from this talk can be found here. What is Gophercises? Gophercises is a free course I created that is composed of mini-exercises to help budding Gophers (Go developers) practice writing Go code and gain familiarity with different aspects of the language.

JSON APIs Are Just Web Applications

A common misconception is that a JSON API is vastly different from a web application that renders server-side HTML. In this article we explore how to convert an HTML-based web app into a JSON API in order to demonstrate how similar the two really are in a well designed app.

Why Cant I Pass This Function as an Http Handler?!

An incredibly common question I get when helping people learn web development is, "Why can’t I pass this handler function into a function that expects an http.Handler?" It is a logical question. The compiler can automatically convert those functions into the http.HandlerFunc type, so why can't it take the next step and infer that it also implements the Handler interface? Learn why (and more) in this article!

Gotham Go 2018

Slides from my talk at GothamGo 2018

Jon on the Go Time Podcast!

I was lucky enough to be invited onto the popular Go Time to discuss things like Gophercises, experiencing the joy programming, and more. If you want to check it out you can use the widget below to listen, visit the website (https://changelog.com/gotime/74) to download an MP3, and lastly you can probably find the episodes anywhere else you typically consume podcasts (I have only verified Go Time is on Google Music and Apple Music).

Go Experience Report: Interfaces with Methods that Return Themselves

I want to describe a scenario where there currently isn’t a good solution in Go (at least that I am aware of). Let’s say you have something like the template.Template type with methods like Template.Funcs: type Template struct { *parse.Tree // contains filtered or unexported fields } func (t *Template) Funcs(funcMap FuncMap) *Template If we wanted to use an interface for this type, it is impossible to express in Go now.

Avatar of Jon Calhoun
Articles and Tutorials by
Jon Calhoun

Jon Calhoun is a full stack web developer who also teaches about Go, web development, algorithms, and anything programming related. He also consults for other companies who have development needs. (If you need some development work done, get in touch!)

Jon is a co-founder of EasyPost, a shipping API that many fortune 500 companies use to power their shipping infrastructure, and prior to founding EasyPost he worked at google as a software engineer.

Jon's latest progress update: Writing Course Notes

Recent Articles All Articles Mini-Series Progress Updates Tags About Me Go Courses

©2018 Jonathan Calhoun. All rights reserved.