Skullspace Hardware Programming Challenge

From SkullSpace Wiki
Jump to navigation Jump to search
Info.png This page has been archived. All information in this article is historical.

The Skullspace Hardware Programming Challenge is inspired by the puzzle solving spirit of the Skullspace Challenge -- but the major difference is that you have to show up at Skullspace, and write and run a program to operate weird and/or interesting hardware in order to solve each level. Specifically, there will always be a "secret message" that the participant must be access through an input/output device. You present the secret message to the challenge masters to show them that you've solved the level and they verify that indeed you did. (The level-master can be an automated web page eventually...)

In some cases, the secret message will be obtainable with just read I/O, at other times correct write I/O will be required to unlock or solicit a response from an attached system which then responds with the "secret message". And in some cases, even after your code has obtained the secret message, the problem setup will force you to use a specific kind of output device in order to get it out of the system and into a form you can present.

Always yield to the Hands-on Imperative!

Old hardware

The "weird or interesting" criterion can be a quality of either the hardware platform being programmed or the IO device involved. Many of the levels will pull this off by requiring the participant to program a retro-computer. This will provide an excuse for the retro-computing folks at the space to do their work of keeping old hardware operating. Developing the levels of this challenge is something real to work towards and a good defense against claim "why don't you just run an emulator".

In some cases the use of retro-computers will make interesting IO hardware available for programming that you can't even hook up easily to a modern computer and/or might not even be emulated in available emulators. Further, we're looking for this challenge to have tangible aspect -- you can emulate a "device" but you can't really emulate the experience of being in the presence of something weird that hums, clicks, and hisses at you as your code controls it and tries to extract a secret message from it.

Secrecy and Education

Like the Skullspace Challenge there will be an element of secrecy to create some excitement, "Rule 1, don't talk about hardware challenge". Each level will have solution code developed by the level masters to ensure the hardware actually works and the levels are do-able. But, this "official" solution code will not be published and neither will the secret messages.

One difference -- instead of leaving clues that require appropriate clue/guess follow-up, each level will come with complete links that provide development software (such as cross-compilers), documentation on how to use them, and documentation on the IO devices involved. Where possible, quality, generic, docs that are already published out there on the web on this hardware and software will be used over custom docs specific to the level. So, the path to each secret message won't require guessing, but careful reading and writing of compliant code.

But, this difference doesn't make the challenge easy -- it can take a lot of time and patience to get hardware code right, even when its documented. The requirement of having to program tangible platforms external platforms will in some cases make things more slow and frustrating compared to a purely emulated environment.

Anyone complaining about the levels can be told to RTFM -- and as such the "official" secrecy of the solutions (that is, Skullspace operated sites) can be kept in place -- there isn't the same compelling reason to release them that there is with a clue based challenge where people naturally just miss some clues and end up begging for published solutions.

For the most part, any underlying hardware or software work behind each level can be openly published without actually giving away the level solution or secret message. The creation of new levels will an open project open to all Skullspace members.

This never ending challenge can also serve as a permanent education fixture at the space -- an amusing entry point into hardware programming for new members, perhaps even a rite of passage.. The open hardware and software design behind the levels will further serve as interesting works of study.

Order, Difficulty, and Recognition

Each level has a difficulty rating of easy, medium, or hard. Levels will be ordered on this basis. There isn't really a way to force participants to do these in order, but in order to submit an answer to the level masters to confirm completion, you have to have done so for prior levels first.

The level masters will publish names or aliases of anyone who completes a given level to confer some recognition.

Newly developed levels will be inserted into the order, participants who already passed that point before will have go back and beat the newly inserted level before they can complete any further levels beyond what they're currently on.

Levels that are ready and available for members to solve

None, currently. Applying for project funding to accelerate the under development levels (below)

Levels that are under development

Feel free to propose your own level and/or write yourself in as a fellow level master to join the development effort on any of these.