Go Challenge - 7


Winners have been declared

Winner #1 - James Scott

Winner #2 - Daniel Skinner

The October 2015 Go Challenge for developers (newbies included)

Francesc Campoy Flores: Author of the 7th Go Challenge

Francesc Campoy Flores The 7th Go Challenge author is Francesc Campoy Flores who joined the Go team in 2012 as Developer Advocate after several years as a Python and C++ developer. His mission is to make Go useful and fun.

Francesc has this to say about the challenge:

“Preparing this challenge got me so excited about the support for OpenGL and simple audio primitives that I had to concentrate on writing the description rather than hacking on my own virtual piano.

Event based applications are easily modeled using goroutines and channels, and I expect this project will be a chance for everyone to experiment with them.”

The Go Challenge 7

A piano on your phone

The latest version of Go 1.5 released last month includes, among many other cool things, experimental support for mobile platforms such as Android and iOS.

I have personally played around with the the golang.org/x/mobile packages and thought this challenge would be a great opportunity to see what great projects people could come up.

Goals of the challenge

The goal is simple: build a virtual piano for mobile devices.

The piano should display a set of keys (some white, some black) as in real traditional pianos (see image below). When the user presses a key a sound should be played. How and what exactly the key sounds is left to your choice and artistic freedom.


Requirements of the challenge

The resulting application should:

Bonus features:

  • use complex interactions other than simple taps
  • allow the user to save/export the music generated
  • create a web page where users can show their skills
  • provide a way for different musicians to colaborate/compete


There’s multiple ways to generate audio. You can use audio files quite easily, but it would be much more creative to provide a way to generate sounds “from scratch” with https://godoc.org/golang.org/x/mobile/exp/audio/al.

Challenge Rules and how to enter the Go Challenge?

By participating in this challenge, you agree to be bound by the Challenge Rules below:

  • The Challenge is open to individuals.
  • Evaluators cannot enter the challenge except under the “Just for Fun” category.
  • Each entrant shall indemnify, defend, and hold JoshSoftware Pvt. Ltd. (who has sponsored the domain and is the organizer of these challenges) harmless from any third party claims arising from or related to that entrant’s participation in the Challenge. In no event shall JoshSoftware Pvt. Ltd. be liable to an entrant for acts or omissions arising out of or related to the Challenge or that entrant’s participation in the Challenge.
  • Odds of winning depend on the number and quality of entries received.
  • All taxes, including income taxes, are the sole responsibility of the winners.
  • No prize substitution is permitted.
  • Create a zip of your Go source code and test cases and send the zip file to golangchallenge [at] gmail.com before 27th of October 2015 (6 am IST). Use this link to find the equivalent time in your city/country. No new solutions will be accepted after that. In the email mention **your full name, country of residence, twitter or GitHub id (if any) and participating under which category - Just participating Participating and exploring further Just for Fun Anonymous entry**. We are accepting anonymous submissions and will evaluate them too but then these participants are not eligible for the prizes.
  • We shall be publishing on this blog, a list of participant names. If you don’t want your name to appear kindly mention the same in your email.
  • You are allowed to re-submit your code if you feel it is necessary.
  • After the challenge is over, all submissions will be made available online on GitHub under the BSD 3-Clause License or the GNU General Public License, version 3 - GPL-3.0 unless a participant has indicated that his/her solution should not be made public before the challenge ends.

How will the challenge be evaluated?

Entries will be evaluated by the challenge author and a team of evaluators.


If you have any questions about this challenge, please join the golang-challenge channel on slack and ask your questions. This is a room for people who are going to participate in the Go Challenge. You can also send us an email at golangchallenge [at] gmail.com


Nathan Youngman had set the guidelines for evaluation for the first Go Challenge. Subsequently Dominik Honnef modified the guidelines based on his experience as an evaluator for the first challenge. Austin Riendeau, Cory LaNou, Edd Robinson, Gautam Dey, Jyotiska NK, Kevin Gillette and Pravin Mishra have agreed to go through all the submitted solutions of a challenge. They will comment and rank these solutions.

Best Solution

The author of the Go Challenge will decide the best five solutions. The author shall have the sole authority and discretion to select the award recipients.


The winning entries will be announced here on this blog. The winners will be sent their prizes by email/postal mail.


The author of the challenge will select 2 winners and prizes will be awarded to them.

Here are some great prizes provided by our sponsors for the event.

Winner 1:

Winner 2:

Challenge Solutions

All the solutions submitted by the participants will be available here after the challenge ends.

The Winners


James Scott

Winner #1 - James Scott works at 18F as an Innovation Specialist in Washington, D.C. where he is currently working on the cloud.gov project.

Throughout his career, he programmed in C++, Java, and Python. In early 2013, James first encountered Go and instantly fell in love. His passion for Go motivated him to integrate it not only into his personal projects but his professional projects as well. He is very excited about Go and looks forward to the language’s future.

His solution.

Daniel Skinner

Winner #2 - Daniel Skinner is currently working at The Smyth Group primarily as a lead android developer. He has been writing Go since mid-2012 and uses it for nearly all of his personal projects. Back when he was a budding engineer, picking a project to develop his skills was always problematic until he came across Victor Lazzarini’s SndObj Library. This challenge was a chance to get back to what he enjoys while SndObj served as an inspiration to provide something similar for Go.

His solution.


This challenge’s sponsors are: Anand D N, Apcera, Cube Root Software, Docker, InfluxDB, JoshSoftware Pvt. Ltd., Manning Publications Co., Packt Publishing and Qwinix Technologies.


  • The Gopher character is based on the Go mascot designed by Renée French and copyrighted under the Creative Commons Attribution 3.0 license.
  • GitHub for the yearly sponsorship of a GitHub Bronze Organisation plan for the Go Challenge.
  • The Go Challenge is being organized by JoshSoftware Pvt. Ltd. with help from the Go community.
Written on October 1, 2015