
Show HN: I taught my little brother JS, and he made this videogame in a week - lovasoa
https://s-poony.github.io/Ultra-Square-Catcher-USC-/jeuvideo.html
======
juretriglav
Hasn’t been mentioned before: try this on a phone. It uses the gyroscope for
control and it quickly becomes second nature to balance/guide the square
around the screen. Also a very nice and rewarding discovery process, as it
starts out with squares speeding by, until you realize it’s the tilt of your
phone that is causing it. Congrats, super fun!

~~~
colordrops
Kind of disturbing that Chrome just provides gyroscope data without any
notification to the user.

~~~
manfredo
What would one feasibly do with this data? I guess an app could tell if
someone is holding their phone in their had, and maybe put together a
pedometer bases on gyroscope input. Maybe a concern if a app has access to
gyro input over a period of days.

But as long as it's only for actively open apps and web pages I don't really
see much harm.

~~~
JeremyBanks
With sufficiently high-frequency gyroscope data, it is possible to infer what
a user types in with moderate precision. In some cases, it has even been shown
to be possible to recover coarse audio data from the surrounding environment.

[https://bugs.chromium.org/p/chromium/issues/detail?id=421691](https://bugs.chromium.org/p/chromium/issues/detail?id=421691)

Browsers have added rate limiting to mitigate this threat. (Prior to that, my
former team in Google Ads added our own rate limiting to the gyroscope API we
provided for ads.) The risk now seems pretty minor, but I wouldn't be shocked
if someone clever still managed to find some way to abuse it.

~~~
gowld
> gyroscope API we provided for ads

Whaaaa?

~~~
JeremyBanks
Yeaaaaah. Our clients thought it was super-cool to add distracting battery-
destroying parallax effects to their mobile ads. :|

------
quadcore
Look at the code guys [1]. I love it. This is simple. There is not a single
line of bullshit. I hope he gonna become a great programmer and continue to
make beautiful code like that.

[1] [https://github.com/S-poony/Ultra-Square-Catcher-
USC-/blob/ma...](https://github.com/S-poony/Ultra-Square-Catcher-
USC-/blob/master/jeuvideo.html)

~~~
userbinator
Agreed. There are so many JS projects these days composed of a dozen
abstraction layers and barely-used libraries all mixed together and spread out
across multiple files with an insanely complex "build system" on top, that
it's very refreshing to see simple, self-contained JS.

~~~
beatgammit
You don't need complexity until you do.

Our company needed an internal tool, and they wanted remote access to it, but
it was basically just a tool to generate a file based on a few inputs. We
already had a command line program for it, so I wrapped it up in a web server
and had it take input as a form input without _any_ JS. It worked great for
years, and then someone got tasked with updating it (mostly just combining it
with other tools). He couldn't figure out how it worked, so he rewrote it to
use a ton of JS, using Angular and other stuff. And guess what? He took longer
to rewrite it than I spent the first time and made no functional changes
besides some CSS and a _ton_ of JS.

With all these fancy new frameworks and browser features, it seems that many
developers have forgotten (or never learned) how to do things simply.
Frameworks and browser features have their place (I built an interactive HTML5
app as my first project at that company), but they're often completely
unnecessary.

~~~
jb3689
To be fair, in my experience rewrites always take longer regardless of
technology choices. You are often reverse engineering requirements which is
really consuming both in time and energy. That said, I agree with the point
you're trying to make though (I strongly prefer software with less
dependencies/frameworks)

~~~
akuji1993
Also, he apparently had to update / upgrade the application, so it's kinda to
be expected that he will take longer for this.

------
carlosdp
This is... really impressive actually. Such a simple mechanic, but well
executed. I like how the red block concept is introduced to you after the
first few points are scored. The details of the implementation are really
impressive for a first project, or even for a game project in general tbh.

------
greenpizza13
Anyone noticed that you can click the game board to go full screen. This kid
is doing more with less than many developers do with years of training. I
think he's got a career in programming ahead.

~~~
dwild
Actually based on the commit message, that's from the big brother.

That's not actually the impressive part of the code though so it remove
nothing from him.

------
goldcd
That it? Presume I use the arrow keys OK, I pick up the other blocks.. Oh, I
do like the inertia and the smaller points give me more points _wakes up
screaming at 3am as the red terminator block endlessly hunts me down_

~~~
jpeanuts
The red block reminds me of the monster in the film "It Follows". It very
slowly but relentlessly heads straight for you wherever you are. Surprisingly
unnerving.

------
bbno4
Wow... Thought I was going to play for 10 maybe 15 seconds... I've never
played a game for that long... This is seriously good. If you released this
game without "little brother" I would think this was one of those amazing
minimalist games. Thank you so much for making this!!

~~~
aerovistae
I don't understand, am I missing something? You just pick up blue and teal
blocks while a red block slowly chases you? Why are people so excited about
this? I feel like I'm missing something.

~~~
Drdrdrq
Did you try it on the phone, using tilt? Other than that - yeah, that's all
there is to it.

~~~
Darkphibre
The red block gets faster and faster, introduction of smaller squares worth
ten points, it became quite a challenge for me to keep a score above 100 on PC
with arrow keys.

------
GuB-42
Nicely executed game.

But looking at the source, the weird part is that it is half English, half
French. It definitely doesn't look like the work of a single person.

I also looked at the commit history and I liked the teaching comments.

Clearly, there is a story behind that code. I suspect you did the first part
together (moving square, ...) and that your brother played with it by himself
later, adding the enemy, etc...

~~~
dosshell
My code when i was kid was half english and half swedish, heck even today when
i write simple "run once"-code they often have some swedish named variable.

Funny story from ~2005, a company developed a jvm for a special cpu and was
aquired by a bigger company. After the aquasition 2 developers had to search
the code base for two weeks after swedish swear words, they replaced them with
the word of dandelion in swedish ("maskros").

What I want to say is that it is very common to mix english and ones native
language.

~~~
GuB-42
Yes, I've done it too (I am a french native). Especially common is writing
code in English and commenting in ones native language. There are other cases,
like when the english word is not known or to stay consistent with a data
source.

I've also seen the native word to avoid conflicts, like adding "2" at the end
of a variable. That's bad, don't do it kids ;)

But here, the "hero" has a "speed" while the "ennemi" (french for "enemy") has
a "vitesse" (french for "speed"). That's why I thought that the enemy is more
likely to be a later, less supervised addition.

And BTW, I didn't notice any french swear word in that code. That kid is more
mature than I was :)

~~~
aaronmdjones
It can also go the other way, of course (variables in native language, or just
single-letter variables, and comments in English). I seem to remember that
Linus Torvalds commented all of his code in English without ever thinking
about it.

------
baalimago
In "taught" did you mean "write 80% of the code"? This follows coding
conventions far too much for me to believe it's written by an complete
beginner.

To me it smells like karmafarming. How is everyone buying this? Where's your
reasonable doubt?

~~~
atilkan
I don't believe either.

------
OrBaruk
That's cool, also similar idea to a game I made some time ago for a lisp game
jam

[https://orbaruk.github.io/](https://orbaruk.github.io/)

[https://github.com/OrBaruk/squares-lgj](https://github.com/OrBaruk/squares-
lgj)

~~~
anonytrary
Your game is faster paced, I like it. One issue I noticed is that the red
blocks can spawn right in front of your block, making it nearly impossible to
avoid. Rage quit inevitable.

~~~
Wowfunhappy
> One issue I noticed is that the red blocks can spawn right in front of your
> block, making it nearly impossible to avoid.

...I'm having a strange amount of trouble describing what I'm doing, but
there's a strategy to avoid this that I got the hang of after a few rounds.
Basically, you can't move too fast at the moment you're collecting the green
squares.

------
sonofgod
... that is seriously fun.

The red block turning up later was AMAZING.

~~~
zild3d
don't forget the tasty light blue boxes

~~~
kemitche
I stopped after about 60 points, but the fact that new block colors had shown
up every dozen points or so made me want to get going for a while to see if
there were any more mechanics.

This really is a fantastic little game.

------
omni
I love that the red block doesn't understand the concept of wrapping. It
reminds me of playing with my dog.

~~~
Wowfunhappy
I was actually going to ask what the rationale behind this was. I found that
because of this, the best strategy was usually to wrap around to distract the
block. I personally felt like the game would have worked better without that,
although hard to know without trying it.

~~~
ubershmekel
I felt wrapping added a strategic depth for me to explore and a positive
sensation of "outsmarting" the red block.

------
megaman8
That's a neat little game. So creative, simple and intuitive to play. Best of
all I didn't have to read any tutorials to get started.

By the way, if you're interested in making your own tile based RPG game, I'm
developing some tutorials to help you learn how: [https://codeorc.com/learn-
web-development-by-programming-a-r...](https://codeorc.com/learn-web-
development-by-programming-a-rpg/)

------
icholy
Cool game, but am I the only one who's a little skeptical about the title?

~~~
sebringj
exactly i call bs

------
kelvin0
Simple, yet addictive. Great work!

Watch out for the red block ... took me some time to realize it's a 'bad'
block which subtracts from your score when touched.

~~~
Klathmon
I thought it was a really clever way to "teach" you about the game without
having an actual tutorial (which I personally always hate).

I especially like how it lets you build up enough of a score before
introducing the red block so that if you hit it a few times you are still in
the game and the only setback was some time!

I think with some additional effects on the score (like some red flashing and
showing it remove the score) when hitting a red one and it would be a lot
easier to understand very quickly that it's bad.

------
automathematics
As someone who founded a company based on javascript game development, looks
like I'll be hiring your little brother within a few years :)

~~~
airstrike
His little brother could be a 40-year-old for all we know!

------
phkahler
Nice game, shortly after I started it dawned on me... Because it allows wrap-
around you can just hold down the up arrow key and it becomes more of a 1-D
game and seemed easier to play. Then the red thing showed up and started
getting in the way and I found it easier to use all the arrows again.

------
maxmcd
So fun. I like the AI logic, if he wants a fun addition he should add more
enemies as the score increases and implement something like the pac-man ghost
logic so that they all behave differently:
[http://gameinternals.com/post/2072558330/understanding-
pac-m...](http://gameinternals.com/post/2072558330/understanding-pac-man-
ghost-behavior)

~~~
lovasoa
He hasn't learned about arrays yet : every element of the game is its own
global variable. But this is something I would love to implement with him !

~~~
jancsika
For a reasonable number of enemies-- e.g., Pinky, Inky, Blinky, Dot-- global
variables should scale just fine.

Maybe learn arrays if he wants to enter the realm of Robotron enemy count...
:)

------
rcarmo
This thing is deceptively subtle and fiendishly addictive. Well done!

------
cowpewter
Very nice. I had fun with it. Maybe a little description of the goals on the
page underneath the play area would be good? Took me a while to realize
picking up the red squares was actually reducing my score. I initially thought
they were just meant to be more challenging to pick up since they moved.

~~~
zild3d
I actually thought there was something really enjoyable about not have it
super obvious and shoving pointers and instructions at you.

It felt fun to explore and learn what it is

~~~
beatgammit
It might be nice to have something like:

Move arrow keys or tilt your phone. When I pulled this is on my phone, I
thought it wasn't working until I saw that someone mentioned that tilting it
worked.

------
nsxwolf
Finally, one of these stories that didn't make me feel like an utterly
talentless moron. This feels like what someone might be able to learn how to
do in a week, but so often it seems like what you see here are 10 year olds
writing real time ray tracing engines that use deep learning for some reason,
and have source code that just happens to be a radiation hardened quine.

~~~
ams6110
FYI the code is visible with "view source."

How old is your brother? Has he programmed before? The code doesn't look like
what someone with no programming experience could do in a week (unless perhaps
working from a similar example as a starting point).

~~~
z3t4
Right click and view source is probably the best thing about the web. You can
learn so much. The source code for this game is simple and straight forward. I
find it hard to come up with any critique - it looks like it's written by a
pro! I like that he use objects instead of "classes". The game should adopt to
window resize and aspect ratio.

------
backpropaganda
Very cool. Nice trick you guys did there with the lighter colored block, and
the red enemy not being able to follow across the boundary. A lot of game
developers I respect and whose games I've enjoyed started programming at a
young age with simple tools which allowed getting their hands dirty. While
javascript is a great language to do this, you might want to consider Game
Maker Studio as well.

------
cphoover
Wow this actually kinda fun. Tell your bro props.

------
mcintyre1994
This is a really fun game! I love how fast the player moves, it reminds me of
my max sensitivity trackpad and mouse :)

------
tchaffee
Maybe your brother would be interested in this contest?

[https://js13kgames.com/](https://js13kgames.com/)

Like most everyone else, I was impressed. Way more interesting than I first
thought possible with such a minimal game. The little red guy made the
difference.

~~~
wensley
This one could easily be an entry to js1k:
[https://js1k.com/](https://js1k.com/)

------
giancarlostoro
Impressive, I wanted to make an RPG type of engine in Processing[0] and did
similar, just made blocks that could move around based on keyboard input.
Didn't continue on with it though.

[0]: [https://processing.org/](https://processing.org/)

------
coldtea
Didn't expect something significant when I opened the page, but it was great!

------
virtuexru
Super fun, your little brother did a great job!

Only criticism I would say is to add some directions if possible, even though
for most people it's common sense it took me a little while to figure out I
needed to use my keyboard :P.

~~~
goldcd
Admit it - you were tilting your monitor!

------
joshwcomeau
Amazing work. Your brother should continue pursuing this :D super impressed!

------
eagsalazar2
Wow I really enjoyed that! When I was still trying to "win" my eyes were
watering like crazy because you just can't blink once the score gets high. Am
I the only one who at some point got suicidal? You're like OMG I need a break
and the only way is to start chasing the red dot. When I got back below 10 and
the red dot disappeared I was like holy shit there is no way out! Felt like a
great twisted ending to some intense psycho thriller. Also my right (arrows)
hand is now aching.

Great job!

------
krozgen
Snowcrash mode :) (In console): setInterval(function() { hero.x = powerUp.x;
hero.y = powerUp.y; }, 50); setInterval(function() { hero.x = reward.x; hero.y
= reward.y; }, 100);

~~~
wrayjustin
I did the same, but played around a bit more and made an "AI" mode:

    
    
      maxScore = 0;
      setInterval( function() {
      	if (score > maxScore) {
      		maxScore = score;
      	}
      	if (distance(hero.y, hero.x, ennemi.y, ennemi.x) < (vitesseEnnemi * 15 + 30)) {
      		hero.y += (hero.y - ennemi.y) * speedLimit / distance(hero.y, hero.x, ennemi.y, ennemi.x);
      		hero.x += (hero.x - ennemi.x) * speedLimit / distance(hero.y, hero.x, ennemi.y, ennemi.x);
      	}
      	if (spawn > PowerUpspawnRate) {
      		hero.y += (powerUp.y - hero.y) * speedLimit / distance(hero.y, hero.x, powerUp.y, powerUp.x);
      		hero.x += (powerUp.x - hero.x) * speedLimit/ distance(hero.y, hero.x, powerUp.y, powerUp.x);
      	} else {
      		hero.y += (reward.y - hero.y) * speedLimit / distance(hero.y, hero.x, reward.y, reward.x);
      		hero.x += (reward.x - hero.x) * speedLimit/ distance(hero.y, hero.x, reward.y, reward.x);
      	}
      }, 25);
    

It's oddly fun to watch the little green guy pull off some sick dekes.

If you want your green guy to flat-out avoid the enemy, just wrap the second
set of conditions there in an else block.

edit: Formatting for readability/copy+paste

~~~
krozgen
I love when the red square comes close and the green one jukes in a tight
spiral around it, just thinking "Whoa nope nope NOPE ah it's okay"

~~~
wrayjustin
LOL yeah, it's like watching a sport. By about a score of 300 the enemy is
just too fast for our hero. =/

~~~
toabi
Interesting, I just watched it and for me the limit is around ~130.

------
undershirt
A great reflection on both the quality of the teacher and the promise of the
student. And I really liked all the subtleties captured in such simple code.
Refreshing!

------
schnevets
Simple game design really is a beautiful thing. You find a mechanic that is
fun to noodle with (like the slippery control logic), throw in a hook to get
people ("oh look! a green square!") and then you can refine and refactor into
a billion different permutations.

My favorite part about this was how the red square would get faster in bursts.
It was like the baddie was getting increasingly exasperated about his whole
damn situation.

------
Zelphyr
That's impressive. Can you provide more info such as how old he is, did he
have any kind of programming experience prior, and how did you go about
teaching him?

~~~
lovasoa
Of course I can. My brother is 15, he is smart and he had programmed before,
but only on his calculator (in TI-BASIC, I think). He already knew the basics
of programming. He got his first real computer for Christmas. I was with him
at my parents house, behind his shoulder as we created the skeleton of the
game together over a weekend. After that I left, and he kept adding features
on his own.

------
milesdyson_phd
Nice job, just an FYI it looks like movement speed is tied to refresh rate. I
was having a difficult time at 144hz but lowering to 60hz made it way more
manageable.

------
ccho
Congratulations to your brother and hope he continues to create and learn!

This demo reminded me of this tutorial livestreamed a few weeks ago:
[https://youtu.be/Z3OnwkPOfY4](https://youtu.be/Z3OnwkPOfY4)

While your brother's demo adds more advanced input and gameplay elements, I'm
just curious whether it helped inspire him.

------
hsnewman
Should it have some type of timer, perhaps a countdown for accomplishing a
mission, with time lessening each round?

------
deaps
I played so long, I forgot I was at work.

------
ninjakeyboard
You should show him nibbles - this was something I made in C when I was 17 or
18 - could be the next step in his production of this game!
[https://classicreload.com/qbasic-
nibbles.html](https://classicreload.com/qbasic-nibbles.html)

------
ilovetux
This is really nice, simple and fun game. Absolutely a great first project. I
love how the physics feel.

------
27182818284
Seconding everyone else. I was surprised by how dope this was. I played until
like the 70s or 80s.

------
Ancient
I thoroughly enjoyed the little distraction. Great job and keep on hacking it!
So much potential.

------
nfriend
Brings back memories of Squares 2, a Flash game I was addicted to in high
school:
[http://www.officegamespot.com/freegames/squares2.htm](http://www.officegamespot.com/freegames/squares2.htm)

------
kennybomber
Nice but damn long code block. Maybe ask if he can break it up into smaller
functions. Better to get him thinking about quality and reuse. Like that
comments though, better than most code out there.

------
PopeDotNinja
Pretty fun. Please make the score a little bigger so I can read it without my
glasses :)

------
TheGrassyKnoll
I'm an old man and a bad programmer. I will learn a lot from this game.
Thanks.

------
simlevesque
Toutes mes félicitations Noé ;)

------
maxwellito
French variables names <3 So nice to see, it reminds me some memories :-D Good
job! Big Kudos for your little brother!

PS: J'espere qu'il gardera cette curiosite et cette envie de creer!

------
mcnichol
This is awesome. Straight-forward mechanics, engaging, and it could really
just end there.

I hope to inspire in my own kids something you have shared with your little
brother. A true gift!

Thank you for sharing.

------
faissaloo
Why is this so enjoyable

~~~
michaelchisari
The elegant game design is easily the most impressive part of this.

~~~
scarejunba
Seriously. This is like when 2048 was posted on HN.

------
grendelt
When I was fooling around with JS, I made Conway's Game of Life.

[http://n5dux.com/life/](http://n5dux.com/life/)

------
dynamoa
Let him know there is a minor bug with the brake.

If you hold an arrow key and then hold brake, the square will slow down but
then speed up briefly and finally slow down for good.

------
runjake
Surprisingly fun game.

Seems pretty basic enough in the beginning, but then turns into a serious
predator/prey challenge and involves a lot of hand/eye coordination.

------
jotato
this is awesome, and very similar to what got me into dev.

when I was 11 an online friend showed me a "game" he was working on using VB6.
There was a little star you moved across the screen by clicking buttons for
u/d/l/r. His end goal was a top-down RPG.

Seeing projects like this always hold a special place in my heart. Best of
luck to your brother. I hope his passion grows and he does amazing things

------
tabtab
Sounds like my experience with BASIC in the early 80's. I made a cheesy Space
Invaders clone. Although, I think I was longer than a week.

------
cschep
I really enjoyed the "feel" of the movement!

------
greybox
Putting the - you made a game in a week and you only just started - aside

The mechanics in this are really well thought out! Great job!

------
hathawsh
This is really cool. It could be the next Flappy Bird / 2048\. Do more enemies
show up when you score 100? :-)

------
geetfun
Nice game! How old is your little brother?

------
aaronsnoswell
Amazing success story! The game is really fun! You should challenge him to add
mobile support via accelerator!

~~~
sid_maddy
It already uses the gyroscope in mobile!

------
Globz
This impressive!! I love the gameplay.

Are you guys from Québec or Europe? I noticed the french comments in the
source code hehe

~~~
lovasoa
we are from France :)

------
Smithalicious
I'm very impressed with how fun the game is. Your little brother has talent
for game design.

------
kahlonel
It's amazing how something so simple can be so fun. Really awesome
accel/deceleration feel.

------
pdpi
This is a great start, and, if you want, a natural progression from here is an
Asteroids clone.

------
sheikheddy
What I like about this project is that the game board is topologically a
torus.

------
bovik
there is a bug if you try to change direction by rolling over left and right
at the same time or up and down at the same time. hitting uo/down together and
left/right together when changing direction has a weird pause effect.

------
gsaga
How do I get this game working on my device. I have chrome on android
lollipop.

------
kowdermeister
Nice job, deceptively simple, yet has the fun factor.

Also notice the GH repo, it has 43 commits.

------
nikkwong
Your little brother ruined my day. Because I can't stop playing. :p

------
gboone
Yeah dude! Love this. It got difficult at 33. I'm hooked.

------
SomeT
From a game design perspective this is a good game.

------
vinitagr
Loved the Gameplay, haven't see anything like this. :)

------
mslip
Very fun game! I cheered when I got my first square.

------
rsgrafx
This is really Really cool. Hats off to little bro.

------
cwhsu
Somehow, I find it interesting, so not bad at all.

------
ttoinou
Wow, the maths are more impressive than coding IMHO

Bien joué Noé :)

~~~
lovasoa
Il est en première. Do not underestimate the french education system ;) What
you need for such a game are Pythagorean and Thales's theorems. I gave him
hints so that he poses the problem correctly, but he came up with the formula
for moving the red square on his own!

------
greybox
Surprisingly well thought out mechanic!! Good job!

------
nyfresh
Good work. It's fun and has clean code too!

------
Avi-D-coder
Very cool. A high score counter would be useful.

------
WhtWsThtAgn
Fun! Wonder how high people will go. 69 points.

~~~
simongr3dal
I think I got to around 65 points before the red square began catching up to
me and taking away my points.

It's definitly a fun little game, I love the simplicity of the code with
regards to dependencies. If you look through the code, you can also find that
the shift key acts as a brake, definitly not something that is very
discoverable.

I wish there were more ways to control the green square, the arrows keys on my
touch bar macbook pro are pretty bad and my hand began to cramp a little bit.

------
maty13
Ha it’s dope The best games are so ‘simple’

------
xparadigm
Played for a while and it's very good.

------
jrochkind1
i would have no idea how to make this game.

------
Abishek_Muthian
You have taught him well, congratulations.

------
nwhatt
The mobile version is oddly satisfying

------
SilasX
Pretty good fun/complexity ratio.

------
ryantuck
so cool!

maybe dumb question - where's the link to the source code? adding that to the
actual page would be great.

~~~
ronilan
Source code: [https://github.com/S-poony/Ultra-Square-Catcher-
USC-](https://github.com/S-poony/Ultra-Square-Catcher-USC-)

It’s canvas based. Interesting choice as a starting point of a learning path.

~~~
Retr0spectrum
HTML5 canvas was where I wrote my first game, it has a relatively simple API,
once you've copied the boilerplate from somewhere.

------
systematical
Very nice. Bounds detection please.

------
inscionent
That's really fun and simple!

------
micah94
Nice work. Hope he keeps it up!

------
NKCSS
Very, very enjoyable! Amazing.

------
pabloacastillo
Ok, that was fun to play. Wow!

------
sebringj
how little is little? why didnt he post it here himself? feels a little
suspect.

~~~
lovasoa
Maybe because he is not on hackernews? I told him I did this post, and he
reads your comments, though.

He is 15. I should have written younger brother and not little brother;
english is not my native language.

~~~
sebringj
If he truly did it, that's great and seems like you guys could start an indie
studio and work part time on upwork or something until you get funded.

------
joelthelion
You're a good teacher :)

------
nidhalbt
isn't the game fun! :)

------
juniusfree
Great!

How did you teach your little brother?

------
spotlmnop
Does he want a job?

------
mikorym
Pretty cool.

------
jeffrallen
Awesome!

------
runnr_az
Nice!

------
xylon
wow, great game!

------
mamby
wow fantastic !

------
lyte
this is awesome

------
dotdi
Cool game! Congrats to your brother.

Doesn't work on current Firefox.

~~~
lovasoa
It should work on firefox :( Did you click on the page before using the arrow
keys ? Do you have JS errors in the console ?

~~~
jakelazaroff
Works for me on latest Firefox!

