#2, Xmas edition

This contest has finished! This is the top 10:

  1. Christmas Tree by @romancortes
  2. Falling sand snow by @geckojsc
  3. Hanjie puzzle by @veubeke
  4. Quadruple demo by xpansive
  5. Ski free by Paul Mealy
  6. Scorched earth by @ejpbruel
  7. Snow scene with message by @100pxls
  8. Winter landscape by @p0unce
  9. Bad santa fixing presents by Alex Jeffrey
  10. Snowball fight by @Louis_A_T


  1. Must have an xmas theme
  2. Submissions may be up to 1k (1024 bytes)
  3. Submissions must consist of only js
  4. Any and all externals are strictly forbidden
  5. Must work on current browsers versions (ch, o, fx and sa)
  6. The eval family is NOT allowed this time
  7. You get canvas object, its context and body object for "free"
  8. Your demo must work in the "html5" shim provided
  9. Your demo must be submitted before xmas!

Submission form will open soon. Follow @js1k for updates.


No need for donations this time, thanks!


I will judge this one on my own. This compo is a short one, supposed to be just for kicks.

Clarification of rules

  1. Purely subjective, but if I don't smell at least some kind of xmas theme in your demo, I will reject it.
  2. Bytes, not characters. Note that js has 16bit character strings so make sure your submission is in fact 1024 bytes.
  3. Do not send me html or css unless it is embedded as js. It will be rejected otherwise.
  4. No externals also means talking to an api after the app loaded, sending data to an app (twitter, facebook) and of course including images or other media remotely. It should also not be dependent on plugins or whatever.
  5. For this compo, I'll be the only judge. That said, all compo's must work on my Windows system in firefox 3.6, chrome 8, safari 5 and opera 10. That means audio is out this round (and prevents me getting from getting headaches, thanks). Webgl is out as well. I'll probably notify you of problems though.
  6. This may raise some eyebrows but I'm restricting the use of eval(*), setTimeout(string, ..), setInterval(string, ..) and Function(..). Don't dynamically include a script either (good call @bga_!). This list may grow if I discover another way of getting eval in so please don't bother. This rule targets the dynamic creation and running of js only (creating dynamic animations or whatever is fine). Note that setTimeout and setInterval with function arguments are still okay! I'm doing this for aesthetic reasons, mostly. The most fun of creating a demo is hand tuning it!
  7. You canvas lot will get the canvas element and its context as embedded in your global as the variable c and a. For those not using canvas, you get the body element in the global as variable b.
  8. The shim has a little since last time, but it it should be backwards compatible as it's currently also used to host the demo's from the previous compo. The only addition is rule 7. Note that it will have to work inside the intended frame set and that it cannot "break out" of the frameset.
  9. The deadline is midnight on Christmas eve (so the midnight of 24 to 25 December ;) CET (that's +01:00). I will try my best to publish the results on xmas day. But you guys will be too busy visiting your parents anyways so no hurry, right? :)

Want to see moar?

Try one of these: