https://gophercises.com/ Already have an account? Let's code! [gophercise] FREE coding exercises for budding gophers [ ] Sign me up! Gophercises is free, but you need to provide a working email address to gain access. I won't spam you and unsubscribing is very easy. We've all been there before... You are just starting to pick up a new programming language (like Go!) and things are going great. The tutorials are clicking and you are making great progress... and then you run out of tutorials. "What should I build next?" you ask, and inevitably everyone tells you to "Pick a side project and work on it!" Great, but what side project should you work on? What project will provide you with the best learning experience? What happens if you pick something too challenging and get stuck? Nothing sucks more than getting stuck because you didn't know you were tackling a nearly impossible problem, and when you are just getting started how are you supposed to know what those are? Now take a deep breath and imagine having the confidence to evaluate a project and determine if it was within your grasp. Imagine knowing that even if you have never used a library before, you will be able to figure it out by reading through the docs. You can get there, but to do it you need to practice. You need to find projects that will challenge you, but won't leave you clueless about how to proceed. Enter Gophercises! Gophercises is a FREE course that will help you become more familiar with Go while developing your skills as a programmer. In the course we will build roughly 20 different mini-applications, packages, and tools that are each designed to teach you something different. In the course we will learn about and practice using: * Channels * Mutexes * Goroutines * Functional Options * Chaining Interfaces * Various parts of the standard library (io, time, and many other packages) * Reading input from the command line * And much much more! [gophercise] By completing the exercises in Gophercises you will slowly become more confident using the Go programming language. You will start to learn how to read the standard docs and make sense of them. You will even start to learn how to evaluate the difficulty of a project before doing much coding. In short, you will start to become a great Go developer. Ready to start working out with Go? I'm ready to sign up! [gophercise] [gophercise] What will we be building? Note: Sign up to get immediate access to the course and all of the published exercises. Exercise 1 Quiz Game Preview image Exercise Details & Source Code Create a program to run timed quizes via the command line. Topics strings channels goroutines flags CSVs time Length 36:52 Exercise 2 URL Shortener Preview image Exercise Details & Source Code Code an http.Handler that forwards paths to other URLs (similar to Bitly). Topics YAML middleware maps http-handlers Length 26:03 Exercise 3 Choose Your Own Adventure Preview image Demo Details & Code Design a choose your own adventure book renderer that shows the story via a web application. Topics http-handlers json templates functional-options Length 1:04:30 Exercise 4 HTML Link Parser Preview image Exercise Details & Source Code Build a package to parse links ( tags) from an HTML file. Topics parsing-html io-readers recursion Length 41:39 Exercise 5 Sitemap Builder Preview image Exercise Details & Source Code Use the HTML link parser from ex. 4 to build a sitemap of public websites. Topics xml web-requests bfs Length 1:28:53 Exercise 6 Hacker Rank Problem Preview image Exercise Details & Source Code Code the solutions to a few string-related hacker rank problems. Topics bytes strings regexp hacker-rank Length 51:11 Exercise 7 CLI Task Manager Preview image Exercise Details & Source Code Create a command line app to manage a TODO list stored in BoltDB. Topics Bolt DB CLIs Length 1:30:28 Exercise 8 Phone Number Normalizer Preview image Exercise Details & Source Code Write a program that will normalize an SQL table of phone numbers into a single format. Topics sql regexp testing Length 1:52:28 Exercise 9 Deck of Cards Preview image Exercise Details & Source Code Code a package used to build decks of cards with custom options, shuffling, and sorting. Topics testing go-generate iota sorting shuffling functional-options Length 1:15:51 Exercise 10 Blackjack Preview image Exercise Details & Source Code Using the deck of cards in ex. 9, create a blackjack game. Topics game-state copy loops Length 1:26:39 Exercise 11 Blackjack AI Preview image Exercise Details & Source Code Refactor the blackjack exercise into a package with an exported AI anyone can implement to create a bot that plays blackjack in a simulated game. Topics interfaces simulation bot Length 2:16:36 Exercise 12 File Renaming Tool Preview image Exercise Details & Source Code Build a tool used to rename files with a common pattern. Eg we might want to take many files with names like "Dog (1 of 100).jpg", "Dog (2 of 100).jpg", ... and rename them to "Dog_001.jpg", "Dog_002.jpg", ... Topics filepath os ioutil regexp Length 1:33:00 Exercise 13 Quiet HN Preview image Exercise Details & Source Code Given an existing web application that displays stories from Hacker News, we will look at ways to add concurrency and caching to the application while looking for race conditions and other potential issues. Topics concurrency channels caching race flag Length 1:23:09 Exercise 14 Recover Middleware Preview image Exercise Details & Source Code Build HTTP middleware that will recover from any panics in an application, even if the response write has been partially written to, and then output the stack trace if the application is in development mode. Topics panic recover defer middleware stack traces Length 47:27 Exercise 15 Recover Middleware w/ Source Code Preview image Exercise Details & Source Code Expand upon the recover middleware and add links to source code along with syntax highlighting of the source code in order to make a useful development tool. Topics strings middleware chroma Length 59:46 Exercise 16 Twitter Retweet Contest CLI Preview image Exercise Details & Source Code Create a CLI to help run a Twitter contest where users retweet a tweet for entry, and after some time you pick one or more of the users who retweeted as the winner. Topics twitter api net/http math/rand os sync Length 1:43:03 Exercise 17 Secrets API and CLI Preview image Exercise Details & Source Code Create a package that handles storing and retrieving encrypted secrets like API keys. Then use that package to create a CLI that can be used to set and get secrets stored in a file in your home directory. Topics crypto/cipher crypto/aes crypto/md5 io reader/writer interface chaining Length 1:58:45 Exercise 18 Image Transform Service Preview image Exercise Details & Source Code Create a web server where a user can upload an image and then go through a guided process of choosing various image transformation options they prefer to get a final version of their image. Topics os/exec io.ReadSeeker io/ioutil primitive CLI Length 2:11:30 Exercise 19 Building Images (png & svg) Preview image Exercise Details & Source Code Learn to create images in your Go code. First we use the standard library to build a simple PNG bar chart, then we explore how to use an awesome third party library to create a much more complex and compelling chart in SVG format. Topics image image/draw image/png SVGo Length 1:20:03 Exercise 20 Building PDFs Preview image Exercise Details & Source Code In this exercise we learn to create almost any PDF in Go. We start off by building an invoice with a dynamic set of line items, and then we move on to creating a course completion certificate for the Gophercises course! Topics PDFs jung-kurt/gofpdf Length 3:15:31 I'm ready to exercise my Go skills. If not, what can I do to convince you? Let me know! About the author Jon Calhoun is a full stack web developer who teaches about Go, web development, algorithms, and anything else he finds interesting. Jon has been a guest on Go Time, a popular Go podcast, and also spoke at GothamGo 2018 about building this course and focusing on simplicity in our Go applications. Previously, Jon founded EasyPost, a shipping API that many fortune 500 companies use to power their shipping infrastructure, and he worked at Google as a software engineer. You can find more of Jon's work (both free and paid) below: Calhoun.io - Jon's blog, which covers a wide variety of topics related to Go including the popular series, Using PostgreSQL with Go. All articles here are free, and are mostly text-based. Web Development with Go - This paid course spans over 33 hours of screencasts where Jon teaches web development using Go. The course covers everything from just getting started to deploying a real, production-grade web application. Let's Learn Algorithms - This free series covers various computer science algorithms and data structures, along with examples of how to code them in Go. Most of these articles are accompanied with screencast videos hosted on Jon's YouTube channel. A picture of the author - Jon Calhoun Photo compliments of Calhoun Photography. Here's what others had to say about the course Just finished the first gophercise... you did such an awesome job ! -- Adam Hartleb (@AdamHartleb) October 24, 2017 @joncalhoun Really enjoying https://t.co/hCLOTJ73Mt. One of the best resources for learning any new language. I struggle when tutorials are a blind copy, paste and "do as I say". You make the effort to encourage doc usage and push the users to try solve themselves -- John Maguire (@JONNI3DARKO) May 26, 2018 Thanks @joncalhoun for your free course ( https://t.co/0OVuQdn4TD ) #NewGopherIncoming -- Geoffrey (@g3offrey_) May 15, 2018 Hey @joncalhoun! Loving #gophercises. Was curious if you had a breakdown of the development environment you are using? Looks awesome, and I noticed it was auto adding imports, which was throwing me off a bit following along. Thanks! -- Ryan Peck (@RyPeck) April 7, 2018 @joncalhoun's https://t.co/4BKsFZs7oK is pretty good for that. Also @markbates' buffalo course on https://t.co/h7gEBF6EpD is another great option. -- KCA (@kcollasarundell) May 15, 2018 https://t.co/wtqPsD8HSm is one of those resources I feel like I should tweet about weekly. Soooo well done. Kudos and thanks to @joncalhoun. #go #golang -- Glenn Goodrich (@ruprict) May 8, 2018 New to #golang ? Train your golang muscles with #gophercises one step at a time. https://t.co/2yKHNuRrxt I wish I knew about this when I started off. -- Mithilesh Said (@MithileshSaid) November 15, 2017 Brand new option to improve your Go: https://t.co/Jj2ILHgYUp, lesson 1 looks great! #lgtm #golang #gophercises -- Peter Aba (@zpeteraba) October 24, 2017 You should have a "Donate" or "Support-Me" button on both of these sites @joncalhoun Someone may want to buy you a [?][?] or Great Free #golang Content & Videos https://t.co/YyZM9kHFj7 https://t.co/Yy2VIKfgO0 -- Ben Faught (@bhfaught) May 17, 2018 Your work is appreciated! -- Yves Muya-Benda (@yvesmuyabenda) May 15, 2018 After learning the basics of @GolangGo I am now practicing the # gophercises and really enjoying them. Thanks @joncalhoun for creating them and for the very clear explanations! -- Sebastien Loix (@sebloix) April 17, 2018 Check it. Jon is good people and this is a really rad service he walks through building https://t.co/V5LYsZ9EiQ -- Aaron Schlesinger (@arschles) May 22, 2018 I hope people try them in any language. I especially enjoyed your user timeout sub exercise. Truly an amazing resource. Thanks! -- youCodeThings() (@youcodethings) May 13, 2018 We'll be live in at Noon PT / 3pm US Eastern today with @joncalhoun talking about #gophercises and creating content for gophers! Listen here ~> https://t.co/wpNBc6iOvM #golang -- Go Time (@GoTimeFM) March 29, 2018 "Success is no accident. It is hard work, perseverance, learning, studying, sacrifice and most of all, love of what you are doing or learning to do." - Pele [gophercise] Gophercises was created by @joncalhoun. Artwork by Marcus Olsson ( @marcusolsson), animated by Jon Calhoun, and inspired by the original Go Gopher created by Renee French.