Noops homepage
Noops challenge home
Group picture of all the noops

đź‘‹ Meet the Noops

We all spend most of our time making useful things with code. This summer, we want you to try your hand at making something not so… useful.

Meet the Noops. They’re twenty amazing machines tuned to do absolutely nothing. And we want you to work with them.

Each week we’re unboxing five Noops. They’re each a black box, an API that emits a stream of data we want you to work with. The first is the Hexbot. All it does it emit a hex code from #000000 to #FFFFFF—and all 16,777,216 colors between. You can do anything you want with the data. Show the color? Sure. Show the 80s movie poster with that hex as the dominant color? Better. We've got the documentation and few starter ideas in the repository.

Alongside Hexbot you’ll find Vexbot emitting a stream of coordinates and speeds, Directbot sending an endless sequence of instructions, Drumbot sending you delightful sequences of beats for you to work with, and, of course, Fizzbot, who will tirelessly give you FizzBuzz challenges and track how quickly you can solve them.

And that's just the first week. By the end of June, 2019, we'll have launched 20 Noops.

How it works

Each challenge is a prompt or a blackbox to get you started playing with code. Some of the challenges may only take an hour to "complete"—but they'll all reward hours of coding.

Most of our challenges have a simple API that gives you a stream of data. The Hexbot, for example, lives at:

Sending a GET request to that endpoint returns:


If you wanted 100 colors, you'd request:

And receive:


What do you do with 100 random colors? Well, that's up to you.

The fun of the challenge is that you can try anything—a new language, a new framework, or even an entirely new discipline. If you've spent most of your time working on databases, try making generative graphics. Or if you've spent your career designing, try writing a few sorting algorithms.

Getting started

Take a look at the "Challenge" list or dive straight into the code with our repositories on GitHub. Each challenge has a README and starter code. Fork the repository and start coding!

When you've completed an entry, show it off in the GitHub Community Forum or tweet us @GitHub. We'll feature the best entries.


We've tried to make the Noops accessible to developers of all levels of experience. All you need is a computer with an internet connection and an itch to play with code.

Each challenge has an associated difficulty. There are three levels:

Level 1: Accessible to developers just learning to code. Rewards setting up the basics (request data and doing something with it) as well as sophisticated manipulations of data and UI. You should be able to get something running in an hour or two.

Level 2: Requires a few years of experience writing code and might require more advanced topics like state management and algorithms. These challenges might take longer to solve.

Level 3: We have a few puzzles that are hard and require advanced understanding of encryption, pathfinding, or graphics. You'll find them in the last week of the challenge.

Look for the difficulty levels on the challenge homepage. If you're just learning to code, you might want to stick with Level 1—but it never hurts to stretch your legs and try a more difficult challenge!

We've provided starters for most of the challenges in JavaScript but you can work in any language you like—and we encourage you to submit your starters to the community.

Why "Noops"?

"noop" = noop()

In software development a no-op, or NOOP (short for no operation) is a function or statement that does nothing.

When you're writing code, you might add a noop() as a placeholder for something to come later, or to just note that this branch of the code does nothing.

Code that does nothing seems like the perfect name for this challenge!

Clock with randomly moving hands

What are you waiting for?

Connect to GitHub

Want to hear about new challenges and updates?

Meet the Noops

Sponsored by GitHub