Yeah, using fill was just easier with the graphics library I was using. I've used pattern fills with SVG before, not sure how widely supported it is in browsers.
I didn't finish the tutorial. For impatient people it takes too long :D
Saying that you can need to put together the same or all different forms/colors/fills should suffice. Whoever doesn't understand that probably won't have much fun with the game anyway.
Thanks for the tip. I'll tinker with the animation speeds.
Yeah, you get the hang of it, but it's not easy when you start. Do you think it'd work to ignore fill at first and just have color and shape to match on?
That is a good idea. Limiting the options so that the first bit is like a tutorial helps I think.
About the animation speeds there were some that I just didn't need to see the animation at all but had no way of getting to the next page.
The only other annoyance was the buttons had a different cursor than is generally expected of a button but they functioned and that is really the biggest thing a button needs.
Hmm yeah I see where you're coming from. A lot of affiliate marketing seems really sleazy to me as well. Here I'm trying to provide a bit of value on top of the advertisement.
Rather than buying search ads and making money of pure arbitrage, I made a game that might inspire people to read about the technologies used in the game. Then I follow up with links.
Why not?
It is text only and at first I did not even notice it.
Hopefully not only the HN crowd will play the game so it would take a exrtra "Show HN only" landing page without adds to get rid of them.
I've certainly complained about affiliate links before, but at least in this case they were somewhat related to the reason HN might be interested in the post.
Small bug irrelevant to the main point of the article:
The very last golang example has a leak. If the timeout does occur, main will exit after a timeout and the spawned go routine will hang on the channel push.
I think the easiest fix is to make the channel buffered.
"make(chan string)" => "make(chan string, 1)"
Not sure if there is a more idiomatic golang way to accomplish this.