If it’s like a larger course, like a web development or a testing one, I’ll pick a big project that I wanna build, and everything will sort of come from that. If I’m building a photo sharing application and that’s what the course teaches, everything sort of just stems from that. But for Gophercises, it’s a bunch of small exercises, so obviously that’s not the case… And that was a good mixture of just things I had built in the past, things I just thought would be fun to do, for one reason or another… Some of them were recommendations from people I’ve been interacting with and helping out with learning Go, and they would say “I’d really love to see you build this, or something like that.” So it really stemmed from a lot of those…
I could give you some examples… The “Choose your own adventure” — one of the exercises is you build a “Choose your own adventure” book… It’s really just a web server with a JSON file that describes this story, and at every different spot in the story you can click a link to decide what you wanna do. Maybe you wanted to go to Gotham Go, or you wanna go to GopherCon in Denver… I think that’s the way the story goes; it’s been a while.
[00:20:12.04] So you click on the link and the story progresses, and I don’t know if you guys have read those “Choose your own adventure” books when you were young, but it’s based off of that.
And the exercise was actually based off of — one year for Christmas I made my wife “Choose your own adventure book” that was… It was online, but it was a book that I took construction paper and crayons and I colored different artwork on them.
It basically told the story of our relationship, how we met and things like that; when we got engaged… And I had some variations, because it was a choose your own adventure story, but I played the obvious trick of no matter what route she took, she ended up married to me… That’s how that one went, and she really liked it, so I thought that’d be a cool, relatively simple exercise to introduce people to JSON and some of that stuff… So it worked out.
Another one of the exercises – you create a URL forwarder. This is something that almost any project can make use of. I used it in my book – or one of the books I wrote; it was a book that went along with the web development course – because I’d wanna link to like source code, or code differences, or I’d wanna link to an article that I thought might be useful… But when you write in a book, you’re worried that the link’s gonna break, or something, so I made a URL forwarder so I could control the server, and then if the URL ever does break, I can find something comparable, or a cached version and update the URL forwarder. Again, it was just sort of based off of what I thought might be useful and what would be fun to build and teach something new.