
Show HN: Gophercises – Coding Exercises for Budding Gophers - joncalhoun
https://gophercises.com/
======
fefe23
You lost me at "you need to create an account". Creating an account is a big
step for me, I don't open accounts on a whim. I need to be committed to
something to be willing to open account with them.

Your site wants me to open an account before it is willing to show me
something that would commit me.

Also, to be perfectly homest, I would never open an account to see some
videos. The only player in that area who can generate enough commitment from
me is Netflix.

Why, if I may ask, are you even asking me to open an account? Is this about
you teaching me Go or is it about you trying to monetize me? What are you
logging about me? Why not make account creation optional? I don't want your
site tracking my progress anyway (I'm paranoid that way).

~~~
joncalhoun
> Your site wants me to open an account before it is willing to show me
> something that would commit me.

I agree that an example video or two would be useful long term and I have been
planning to add those eventually, but they aren't there yet.

> Also, to be perfectly homest, I would never open an account to see some
> videos.

Once the course is 100% complete I intend to post most of the videos to
YouTube, but that will be gradual and I'll probably always have some sort of
"bonus" for signing up. I'm not certain viewing videos on YouTube would result
in you being tracked less, but at least it would give you options.

> Why, if I may ask, are you even asking me to open an account? Is this about
> you teaching me Go or is it about you trying to monetize me?

Being completely upfront here - both.

First, the course is in beta and I use email addresses to tell users about new
exercises, request feedback, and try to improve the course.

Second, I want to teach to as many people as possible, but I also need to make
a living. So far the best way I have found to do this is to occasionally
collect email addresses and tell them about paid work that I think they might
enjoy. I don't spam, I don't email often, and if you unsubscribe you will
never hear from me again.

If that bothers you, you can just skip this particular course. I won't be
offended and I get that not everyone is willing to provide an email address. I
also provide free content that doesn't require an email address to access -
both my blog and youtube channel are like this.

> What are you logging about me?

I don't track course progress right now - though oddly this is a requested
feature by many others. I don't even have Google Analytics on the page.

That doesn't mean I won't ever add some tracking, especially if users are
asking for a progress tracker, but for now I don't.

The videos _are_ hosted through Vimeo though, and they appear to have a
tracking pixel in their embed.

> Why not make account creation optional?

There are many reasons for this, most outlined above.

------
joncalhoun
I want to have 20+ exercises by the time the course is complete. There are
about 13 planned as of now, so if you have suggestions or topics that you
think would make good Go programming exercises I'd love to hear them =D

EDIT: And in other news, a few people have reported the welcome email going to
their spam so if it happens to you please let me know and I'll continue
looking into why it is happening.

~~~
indescions_2017
Image Processing and Analysis.

Goroutines, as well as the image package, are well suited to parallel
operations on bitmap data right out of the bag. From simple texture synthesis
routines such as sine-wave plasma generation or mandelbrot set fractals. To
advanced state-of-the-art techniques like super-resolution image enhancement
and frequency domain analysis. Golang is great for image science. Especially
parallel operations on separable kernels.

And it makes for a fun exercise as well ;)

~~~
joncalhoun
I'm not opposed to doing something in this space, but it is an area I have
pretty much zero experience in.

Can you recommend any language agnostic resources or really anything else that
would help me get started in exploring this as a potential exercise idea?

------
decker
Write 20 different variants of mapping elements in a slice from one type to
another. This will give you a fairly reasonable approximation of golang
development.

~~~
gizzlon
really? Think I've done that once or twice in the last 2 years... YMMV

------
ultrasounder
Signed up for the coding excercises!Awesome site!What path would you recommend
to someone who is coming from a bit of Python background. I see a lot of blurb
about how Golang is the perfect fit for low latency web applications. Think
“data intensive applications”. Also how good is the Golang tool chain for
Raspberry pi and such like? Thanks

~~~
dpflan
To answer your first question with regard to resources and getting into it
first; you can start with the Go tour, and then move on to other resources.
Absolutely install go and start playing around; maybe try to create a simple
server or port one an easy to medium Python project.

Have a look at these resources:

_

1\. _A Tour of Go_ :
[https://tour.golang.org/welcome/1](https://tour.golang.org/welcome/1)

>> A nice step by step introductory guide through the language.

_

2\. _Go by Example_ : [https://gobyexample.com/](https://gobyexample.com/)

>> A concise collection of fundamental concepts, expressions, and
implementations.

_

3\. _The Go Programming Language_ : [http://www.gopl.io/](http://www.gopl.io/)

>> The text by two authors of the language. You may view as the "KnR" for C
but for Go.

>> It has end of chapter problems and the solutions are hosted on github:

>>>
[https://github.com/adonovan/gopl.io/](https://github.com/adonovan/gopl.io/)

_

4\. _Effective Go_ :
[https://golang.org/doc/effective_go.html](https://golang.org/doc/effective_go.html)

>> Advice on writing solid Go.

_

5\. _Official Go Page of Documentation and Other Resources_ :
[https://golang.org/doc/](https://golang.org/doc/)

_

6\. _The Go Language Specification_ :
[https://golang.org/ref/spec](https://golang.org/ref/spec)

~~~
tomclive
I've signed up and will give this a shot. I followed the Tour of Go and was
wondering where to head next.

I haven't watched the videos yet but the site looks really simple and
attractive.

------
msla
Go programming language, not the Gopher Internet protocol.

I wonder if there's a Gopher server written in Go yet...

~~~
hactually
I see a lot of these dismissive corrections when talking about Go and Gophers
and just wondered how relevant the original gopher protocol was in your day to
day? Like, when did you last request data using gopher?

~~~
badsectoracula
I don't know about msla, but i have my Gopher client right next to my Web
browser[1] (yes the workspace is called Web, but they are both in the sort of
same category of applications so i have them together :-P) and i use it quite
often.

I mainly read "phlogs" though, but there is generally a lot of stuff to read
when bored.

[1] [https://i.imgur.com/Ck1UDhg.png](https://i.imgur.com/Ck1UDhg.png)

~~~
huntie
What gopher client is that? It looks really nice but searching for "Little
Gopher Client" didn't bring up anything.

~~~
badsectoracula
Mine :-), you can find it here:

[http://runtimeterror.com/tools/gopher/](http://runtimeterror.com/tools/gopher/)

~~~
trqx
Hi,

Care to join #gopherproject @freenode? I think I found a small display bug.

------
thecupisblue
Thank you a ton for this one! I find Golang amazing and have done all the
tutorials and can kinda use it but I've never build anything real in it,
mostly because of lack of ideas. Thanks!

------
jetblackio
Looks great! I've been running through exercises on exercism.io, but this
looks like a good next step in my Gopher journey.

------
ratbr
This is fantastic. The exercises are non-trivial enough to be useful. One
minor suggestion: if you can have the favicon set to your gopher, it can be
great. Mine is a potentially narrow use case, but after logging in, I pinned
this to a tab in safari, and the G throws me off a little.

~~~
saagarjha
Pinned tabs actually have their own icon:
[https://developer.apple.com/library/content/documentation/Ap...](https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/pinnedTabs/pinnedTabs.html)

~~~
joncalhoun
Thanks. I'll have to go create an icon for this. So many custom icon formats
:\

Edit: I believe I have an icon set here now. I might need to tweak it but it
should work in the meantime.

~~~
merlincorey
I recently got turned onto RealFaviconGenerator.net after researching the
various icon formats I might need to support and finding a nice in-depth stack
overflow answer [1] from the author of that website. I would be surprised if
it did NOT support pinned images.

[0] [https://realfavicongenerator.net/](https://realfavicongenerator.net/)

[1] [https://stackoverflow.com/questions/4014823/does-a-
favicon-h...](https://stackoverflow.com/questions/4014823/does-a-favicon-have-
to-be-32x32-or-16x16)

~~~
joncalhoun
This is indeed the site I used to fix the issue :)

------
ArmandGrillet
Great website, the exercises look interesting and the focus on topics makes
things clear.

I was looking for something like this but for C++ a few months ago and was
quite disappointed by what I found. If someone here has some links to share,
that would be great!

------
reacweb
I think the idea is excellent, but I have (almost) no interest in Go and I
struggle to improve my javascript. Do anyone knows about a similar experience
for javascript ?

~~~
tomclive
Try Javascript 30 by Wes Bos.
[https://javascript30.com/](https://javascript30.com/)

He's a good educator and this is a fun series of exercises to practise your
JS.

------
kramer1416
What is the slice of ints at the following URI about?

[https://www.calhoun.io/hire-me/](https://www.calhoun.io/hire-me/)

~~~
ranebo
Its a hex/base64 encoded string that will get you a discount on his book.

------
potta_coffee
I'm definitely going to be doing this. Your other sites and courses look
badass too.

If I could afford your algorithms course I'd buy it immediately. I'll have to
save up.

~~~
joncalhoun
The "algorithms course" isn't really a course at this point but is just a
series of blog posts and youtube videos. I want to do more with it eventually,
but there are only so many hours in a day :(

Anyway I hope you enjoy it!

~~~
potta_coffee
I was mistaken. I meant to say, I'd buy the web development course you're
offering. The algorithms material looks great too. Thanks for putting it out
there!

~~~
joncalhoun
Email me - jon@calhoun.io

I'll see if there is a way I can help you out :)

~~~
potta_coffee
Message sent =)

------
e12e
This looks interesting - but is it usable without the videos?

I much prefer text - to the point that simple transcripts might be preferable
to videos for me. So if the essential information is available as text and
source code, I might want to give this a shot - but not if I can't really get
started without having to listen to//watch videos.

~~~
joncalhoun
You can try to code each exercises on your own just by reading the GitHub
repos. Eg
[https://github.com/gophercises/quiz](https://github.com/gophercises/quiz)

If you want to see my solution and how I coded it then you have to watch the
video and there aren't any transcripts yet :(

There are branches with solutions for each exercise tho, so you could just
look at the diff to see if that is enough.

------
sethammons
I think I need to get these exercise gophers as stickers... The barbell gopher
is great!

~~~
joncalhoun
I want to get a run of 3" die cut stickers using all 3 designs but that will
probably be a couple months. :/

------
pkrefta
Awesome graphics man :-)

~~~
alexjikim
+1. boxing gopher even brings up his right hand to guard his face :P

~~~
joncalhoun
I'll just pretend I know all about boxing and it was intentional :)

------
aoeuasdf1
I'm getting

    
    
      "Sorry

Because of its privacy settings, this video cannot be played here."

in both Chrome and Firefox. What's up with that?

~~~
joncalhoun
It is probably an extension of some sort.

I have heard this can happen with Privacy Badger, but I'm sure other
extensions can cause the issue. I think it is a fairly common issue with
embedded Vimeo videos, but I haven't had a chance to look at alternative
options/settings and hosting videos myself comes with a whole other set of
issues.

Just FYI I am not personally doing a bunch of tracking here. I don't even
think I have Google Analytics setup on this domain. Instead it is a byproduct
of Vimeo having at tracking cookie :(

~~~
bhrgunatha
I turned off NoScript, and uBlock doesn't show any blocked requests (the only
privacy add-ons I have.)

Still no video.

The player loads and shows an image, the video bar shows background video
loading progress and even clicking to certain parts of the video shows
different image clips. Just no video. So I've just given up.

~~~
joncalhoun
That sucks. Email me? jon@calhoun.io

I'll happily work with you to figure out the issue, even if it means giving
you a link to download some videos in the meantime.

~~~
bhrgunatha
I discovered the problem after I managed to break video playback while
configuring the newly installed browser.

Firefox has an "advanced" setting (about:config only) to prevent media
automatically playing which was preventing playback - even with the video
player's buttons. about:config | media.autoplay.enabled | true -> breaks the
player.

However there's another anti-tracking option that prevents embedded videos
even being displayed - Preferences | Privacy & Security | Tracking Protection
| _click_ [Change Block List...] -> 'Basic' works, 'Strict' doesn't .

------
chetanahuja
I'm getting "Sorry, Because of it's privacy settings, this video cannot be
played here" for every video.

------
samueldavid
this looks really nice, i have been looking for something newbie friendly to
learn go

------
zapperdapper
Impressive artwork - did you outsource that Jon?

~~~
joncalhoun
Yes. There's a link in the site footer to the artist, Marcus, though I did
animate them myself.

~~~
zapperdapper
Oh thanks - I missed that link at the bottom. The tutorials look interesting
too!

