We’re currently in the process of beta-testing RADOS Gateway with a view to producing a viable product, it’s an S3-compatible cloud storage solution. We’ve done a good amount of smoketesting and turned up our fair share of buggy behaviour, but what it really needs is a good shakedown.

Thus, Anchor’s first hackfest was held last Friday to show off what can be done with our deployment of RADOS Gateway, named Trove, and see if it really shines.

We wanted to keep things fairly low key for a first-attempt hackfest, so we only invited a small number of staff and their geeky friends, and put together several programming teams.

Hackfests are generally pretty freeform and light on restrictions, which is how we ran it. The rules:

Build anything you want, though it must make significant use of Trove

You’ve got from 6pm Friday until midday Saturday to make something cool

Entries will then be live-demo’ed, voted upon and prizes awarded

Usual laws still apply, so killer-robots-powered-by-Trove, while cool, may be disqualified

We got a great variety of submissions, showing that people have very different ways of thinking about how to best exploit cloud storage. Without further ado and in no particular order, the presented entries:

trovefs for Hurd

Everyone loves S3 storage with filesystem semantics, right? Steven saw no reason for Hurd to miss out on the fun, so he set about writing a translator that can mount an S3-compatible bucket.

Code can be perused in his repo, and cloned if you want to take it for a spin. It should build with make on a current Debian GNU/Hurd system after installing build-essential and libs3-dev.

It’s somewhat feature-limited at the moment, though Steven’s expecting to fix that up in the near future.

Shov3 – Drag-and-drop image sharing stuff in javascript

Geoff was puzzled and annoyed by the lack of simple Javascript libraries to push browser file uploads into S3, so he made one.

Shov3 is very experimental, but it does the job and makes it trivial to drag and drop a whole flock of files straight into a bucket.

Some of the demos also feature GeoSnappy, a little library for taking photos from webcams while recording geolocation coordinates.

LCARS/IMDB Ipsum

Anchor is mostly a Linux shop, but that’s to reason to say Windows can’t participate too! Katie got in on the action to generate random pages of quotes from B-rated movies and TV shows. In PowerShell.

Code can be found in her repo, and an active demo is also online

AoE-over-Trove

Unquestionably the most evil idea yet conceived for Trove, Matt Palmer decided to create a Trove-backed ATA-over-Ethernet block device. This is exactly as awful as it sounds.

If you’re game, Matt’s published the code to a repo on Github.

Surprisingly, it does work. Slowly. Sequential reads against a single volume were observed to run at about 20KiB/sec, with minimal network latency between the initiator and target – that’s faster than a 3.5″ floppy though! (about 15KiB/sec)

trovel2tp

NB: This wasn’t completed during the hackfest, and so technically isn’t a qualifying entry.

David wasn’t content to take Matt’s entry lying down, so he mashed another chunk of the OSI model into S3-compatible storage.

In his own words:

This is layer-2 getting tunneled over the top of Anchor Trove, or any other object store with an S3-compatible API. Your Trove is now an Ethernet.

Code can be found in his repo.

TorrentConsolidator

David’s real entry thankfully wasn’t part of a Trove-backed arms race, but something to scratch an itch.

Torrenting your legitimate Linux ISOs is so tedious sometimes. Especially when you’ve got a lot of ISOs to download, it’s too much effort to go and download all the torrent files, shuffle them over to your leeching box, wait for them to download, then pull down the finished files. There’s gotta be an easier/lazier way.

Well now there is. Once you’ve setup TorrentConsolidator, you give the magic box a magnet link and retrieve the files a little later.

It should be trivial to extend if you want to hook extra actions into the chain, code is in the repo.