app /wiki

5Kapp/revision/35/

A competition to create an application using only 5K (5120 bytes) of code and resources.

Motivation

5K is pretty small. It's about enough to show an idea. Working the constraint will require some creative thinking. With a 5K app you ain't gonna need it, so you're forced to really pare down your app to make it just do what it's meant to do. It also shouldn't take long to write a 5K app, so it's a great way to try some experimental ideas out.

The Rules

  • 5K is the total size of the executable app:
    • The app must consist of a single "executable file" below the size limit.
    • As the app must consist of a single file all required resources should be embedded in the file.
    • The "executable file" may be, for example, a .jar file, .swf, html file (with embedded Javascript), Python, Perl, Ruby or PHP script (basically whatever makes sense as the "standard" distribution mechanism).
    • The "executable file" must be runnable "as is", without requiring an installation or decompressing step by the user (so self-extracting is ok, if the app then runs without further prompting from the user).
    • Obfuscators etc are allowed and may be needed to help reduce compiled code size.
  • Network access is allowed, but:
    • You will not load more executable code or resources over the network.
    • You must disclose all net access.
    • Your app should not break when no network access is available.
    • You may only access servers you do not run (no writing a webapp that does all the work for your 5K app).
    • Preferably all network access should use standard APIs (e.g. Flickr or Twitter APIs), though this is not a requirement.
  • All resources (images etc) count towards the 5K limit and must be embedded in the "executable file".
  • You may specify certain (reasonable) installation requirements (e.g. Java/.Net/Firefox/Greasemonkey/Python/Perl/Ruby)
    • Standard/Vanilla versions of whatever runtime you wish to use should be assumed.
    • MacOS X comes with a lot of stuff installed by default, so if in doubt assume that to be fairly "standard".
    • Additional "non-standard" libraries may be used, but they will count towards your budget.
    • No writing libraries that do all the work for your 5K app.
  • Browser-based apps must work in at least one major browser - cross-browser compatibility is a bonus not a requirement.
  • No buying yourself an advantage.

Language/Runtime Specific Notes

Java apps should be a single .jar file that may execute either as an applet, application or webstart app. For the applet and webstart app additional resources may be required (e.g. html file to embed applet, jnlp file for webstart) - these resources don't count to the budget, as long as they are not used to pass additional information to the app. If they do then they count to the budget. Effectively they are equivalent to invoking the app on the command line.

Flash apps embedded in html can be considered as similar to Java applets, so similar rules apply (not a Flash expert, so this may need changing). Flash Crunchers are only allowed if they are a freely available tool. Otherwise this would give an unfair advantage to those with the money to buy them. Freely available crunchers or home made crunchers are allowed (assuming you also make your home made cruncher freely available).

Javascript/HTML apps should be contained in a single file. To keep things clean it is recommended that a build script is used to take separate javascript, html and css and combine them into a single file. A compressor (e.g. YUICompressor) can also be used during this step.

C/C++ etc compile to executables, so that should be fairly obvious.

Python, Perl, Ruby and PHP can be turned into self-extracting scripts to save space (see notes I have on doing this in Python) and should take the form of a single file. Resources should be embedded in the script as needed (this may require you get friendly with your languages Base64 libraries and that you create build scripts to package things up into a single file).

PHP may assume the presence of mod_php (seeing as that's the standard way to run it).

Mobile applications are of course acceptable, whether J2ME, Python, Native (or anything else). FOr J2ME apps only the jar file counts towards the limit, if a jad file is required for installation it does not count. Obviously it only has to run on one handset, so don't worry about porting.

Feel free to be creative - 5K C64 apps, robot control programs etc. Just try and stick to the "spirit" of the rules.

Judging

The winner will be determined by a vote (possibly a preference vote) at the event.

Ideally the applications will be made publicly available prior to the event for everyone to see. Applications will also be demoed at the event, so everyone gets a chance to see them in action before voting.

If the number of entrants makes voting at the event impossible we will instead have a period of online voting prior to the event to determine which entrants will be shortlisted for the event.

Voters should judge applications based on their:

  • Utility/Fun - does the app do something useful or if it's a game is it good fun?
  • Awesomeness - does the app achieve something technically impressive within the 5K budget?

Applications will be reviewed before hand to ensure they meet the rules.

The 5K budget is a hard limit. Your application cannot be entered if it is over budget.

When

That all depends on how much interest there is. Once we have enough entrants we'll organise a £5app meet to do the judging (likely to be March).

Entry Submission

Put up your entries online somewhere with supporting info (list of features, screencasts of it in action etc), so people can easily get access to the app for judging. For applications that may not be feasible for all people to run (e.g. mobile or mac/win specific) I'd recommend you do some demo videos/screencasts. Thay way people can at least see what your app does/looks like if they don't have the right stuff installed to run it themselves.

Once you have your app online email demo AT fivepoundapp DOT com or else use the google group (or mail John or Ian directly if you know our addresses) with details of your app and the URL.

See Also

Apps

  • 5KTwit - example app by John (Twitter client in Java)
  • 5KTODO - another example by John (Javascript with local storage of TODO items)
  • 5KEdit - another example by John (Python Writeroom style text editor)
  • 5KTuner - another example by John (Guitar Tuner)

App Ideas

A few ideas to get people started (feel free to add some more if you have any spare):

  • Personal/Desktop wiki
  • Image editor (Photoshop in 5K)
  • Graphical calculator
  • File encrypter/decrypter (PGP in 5K)
  • P2P app (hard to beat 15 line P2P app in Python, though no GUI for it)
  • Library/Cataloguing app
  • Image effect apps (e.g. Tilt-shift)
  • Time-lapse photography app
  • Stop-motion animation app
  • Bug-tracker
  • Wireframe maker
  • Podcast downloader/aggreagtor
  • Podcast recording software
  • Games (most Java 4K contests seem to be for games, so see links above)

Discussion

The rules are open for amendment/discussion: £5app google group

Make a comment