
Show HN: Speedsums - refrigerator
http://www.speedsums.com
======
callum85
The 'motivational' comments were hilarious and refreshing. I strongly disagree
with the other advice you've been given here.

Don't 'turn it up to 11' to remove all the subtlety and ram the joke down
people's throats. And don't turn it into "Oops, try harder next time!" like
every other insipid thing in the world. Please. You made something that made
me laugh. As much as I love HN, it's a strange, unrepresentative community and
you should be very careful trying to appease the crowd here, which always
bristles at anything that breaks character. People here are sometimes too
focused on how to churn out templated startups, and not enough on art.

------
iandanforth
I think this kind of practice is great. However I don't think insulting
learners is ever a good idea.

"If you got below like 30 on your first attempt, you should probably practice
a little before embarrassing yourself again."

~~~
refrigerator
I thought it would motivate people to try harder, but I guess it's
backfiring... sorry! I'll change it

~~~
GuiA
The thing is, humans are using your app. And when humans are facing something
for the first time, if it's not friendly to them, they're going to be taken
aback and pissed off. Good products have friendly, warm, inviting copy.

You could spin it around by turning it to 11, and call it something like
"Speedsums for assholes". Then you could insult the user at every opportunity
you get, using over the top curses in a tongue in cheek manner ("4 seconds to
solve that? My guinea pig did better!"). If it's clear that it's meant in a
satirical way, it'd be less shocking. However, this is much harder to pull off
in a way that is funny and stays funny over time.

So either make a product with clean, friendly copy - or make one that does the
"evil coach" to the maximum. But certainly don't do a mix of the two- that's
just very confusing emotionally.

(recommended related reading: [http://www.abookapart.com/products/designing-
for-emotion](http://www.abookapart.com/products/designing-for-emotion))

~~~
refrigerator
Yeah I do see what you mean, I should have either gone the whole hog or not at
all, I actually read that book a couple of years ago as it turns out!

------
poopicus
This is incredibly user hostile with lines like "you should probably practice
a little before embarrassing yourself again" and "It should not take 4.18s to
solve that next time."

Is that part of discouraging procrastination or what? As it stands, I couldn't
show my sisters this without them getting upset with me.

------
Houshalter
I wonder if teaching people analog math would be better. This is more
practical if you don't need exact quantities, and more in line with how your
brain actually works. Symbolic math isn't "natural" and you learn it not by
generalizing but by memorizing a large number of facts and heuristics. But
your brain is really good at approximating continuous functions. Imagine how
much complex math goes on in your brain when you see a ball in the air,
predict where it's going, and coordinate hundreds of muscles to catch it.

I imagine it would work by seeing two bars or boxes and then drawing a third
bar/box with the correct area/length and getting rewarded based on how good
you do. Another exercise would train you to convert numbers to or from boxes
with the same length and at the appropriate scale.

~~~
to3m
This sounds a little bit like the sort of stuff `the eyeballing game' makes
you do:
[http://woodgears.ca/eyeball/index.html](http://woodgears.ca/eyeball/index.html)

------
lucb1e
I've always been extremely bad at things like this. Working quickly is one
thing I cannot seem to do. Which makes this extremely good practice of course!

Last week I cleaned up a lot my room and went through stuff from primary
school. Speedruns, where we had a sheet of sums that we had to solve as
quickly as possible, always showed I was within the bottom half of the class
(I don't remember the exact number), while mostly other tests' scores were in
the top 85% or something. "Slowly but steadily," I guess?

Oddly my typing speed is faster than everyone else I know, including in a
class full of coders. I'm not slowest in everything at least.

~~~
orbitur
I'm 30 now, and a little better at it, but I'm still relatively shitty with
timed thinking exercises, and being graded in general. Reminds me of
university where I did poorly on exams. I'd have graduated with a much better
GPA if it weren't for my anxiety over them. The worst classes were the ones
with finals worth 50% of the total grade.

I'd waste 2 hours pulling my hair out imagining what it would be like if I
failed, instead of working. Looking back I probably should've seen a doctor
about my anxiety issues.

~~~
lucb1e
Sorry to hear that, sounds like it might indeed have been helpful to speak to
someone about this. On the other hand, you did make it so far :)

Though I wasn't good at those speed tests, I'm generally not that frightened
to do them. If I fail, so be it, nothing to change about it at that point
except do my best. The period of anxiety is always just before starting,
doubting whether I put enough work into it and whether I could get any
studying done in 5 minutes.

Contrarily to most other students it seems, I'm hardly ever anxious to learn
the results of a test after I've made it. I'm curious of course, but not
anxious to know whether I failed or not. It even gets on my nerves to hear
everyone analyzing each minor detail of the test like a post-mortem. I usually
ask around if someone knows the answer to something I completely missed out on
(if anything) and that's about it.

------
kaahne
Cool little Game ! As a lot of people here, I threw together some JS to try
and 'hack' the challenge. As mentioned by OP, this is "staggeringly" easy to
do. Yet, I was wondering : How would you go around to preventing such a
behavior ?

I would try obfuscating the problem a little bit :

* Display an image instead of a text (using canvas for quick drawing ? You'd have to create the images server side to really be sure)

* If you really want to display text, use a custom made font (Reverse-engineering the characters match would take a little time)

* Changing the elements id (#answer and #question) every question.

Any ideas ?

~~~
refrigerator
since it's client side, it's physically impossible to completely prevent
cheating :( using images instead of text and changing element id's and things
would certainly make it harder to hack though!

~~~
asadlionpk
keeping questions captcha-like and calculating the score on server side, is
one solution.

------
webbedhands
Sometimes it's hard to differentiate between the addition and the division
sign. That's rather annoying.

~~~
refrigerator
yeah a lot of people have said this, it used to be a '/' instead of the
division sign but then everyone complained about that haha

------
beepp
I went all the way, simulated keydowns and all. (Thanks,
[http://stackoverflow.com/questions/4158847/is-there-a-way-
to...](http://stackoverflow.com/questions/4158847/is-there-a-way-to-simulate-
key-presses-or-a-click-with-javascript))

var element = document.getElementById('answer');var y =
document.getElementById('question');var dispatchKeyboardEvent =
function(target, initKeyboradEvent_args) {var e =
document.createEvent("KeyboardEvents");e.initKeyboardEvent.apply(e,
Array.prototype.slice.call(arguments, 1));target.dispatchEvent(e);};var
dispatchTextEvent = function(target, initTextEvent_args) {var e =
document.createEvent("TextEvent");e.initTextEvent.apply(e,
Array.prototype.slice.call(arguments, 1));target.dispatchEvent(e);};var
dispatchSimpleEvent = function(target, type, canBubble, cancelable) {var e =
document.createEvent("Event");e.initEvent.apply(e,
Array.prototype.slice.call(arguments, 1));target.dispatchEvent(e);};var
send_key = function (key) {var canceled =
!dispatchKeyboardEvent(element,'keydown', true, true, null, key, 0,
'');dispatchKeyboardEvent(element, 'keypress', true, true, null, key, 0,
'');if (!canceled) {if (dispatchTextEvent(element, 'textInput', true, true,
null, key, 0)) {element.value += key;dispatchSimpleEvent(element, 'input',
false, false);dispatchSimpleEvent(element, 'change', false,
false);}}dispatchKeyboardEvent(element, 'keyup', true, true, null, key, 0,
'');}; y.addEventListener('DOMNodeInserted', function(e){var z =
eval(y.innerHTML.replace(/[=\s]/g,'').replace(/x/ig, '*').replace(/÷/g,
'/')).toString(); for(var i in z){send_key(z[i]); element.value+=z[i];}});

~~~
wreegab
You beat by a few minutes. I wrote a Chromium extension for it:

cs.js:

    
    
        (function(){var b;var a=function(){if(b!==undefined){var e=document.querySelector("input#answer");
        e.value=b;e.dispatchEvent(new Event("keyup"))}};var c=function(e){var h=e.length;
        var f;while(h--){f=e[h];if(!f.addedNodes||!f.addedNodes.length)
        {continue}if(f.addedNodes[0].nodeType!==3){continue
        }var j=f.addedNodes[0].textContent.match(/^\s*(\d+)\s*(\S)\s*(\d+)/);if(!j){continue
        }var k=parseInt(j[1],10);var l=j[2];var g=parseInt(j[3],10);switch(l){case"+":b=k+g;
        break;case"-":b=k-g;break;case"x":b=k*g;break;case"÷":b=k/g;break}setTimeout(a,500);
        return}};var d=function(){var e=new
         MutationObserver(c);e.observe(document.querySelector("div#question"),
        {attributes:false,childList:true,characterData:false,subtree:false})
        };window.addEventListener("load",d)})();
    

manifest.json

    
    
        {
        "manifest_version": 2,
        "name": "Speedsums Helper",
        "version": "0.1",
        "description": "Help be good at SpeedSums",
        "author": "wreegab",
        "content_scripts": [{
            "matches": ["http://www.speedsums.com/*"],
            "js": ["cs.js"],
            "run_at": "document_start"
        }]
        }
    

Caveats: Need to answer the first question. Need a time out to prevent
exhausting the list of questions (it stops at 119)

It's Hacker News after all...

------
refrigerator
It's staggeringly easy to hack because it's a fully client-side app but that's
not really the point :)

------
agumonkey
Easy questions. This tests if you read/understand/type fast rather than think.
Funny anyway.

------
bbx
This reminds me of Case Interview Math:
[https://www.caseinterview.com/math/home.php](https://www.caseinterview.com/math/home.php)

Try with "Estimation Math", "Random", and "Hard".

A friend of mine told me about this website. He used it to practice for
interviews. I took it as a game. It's less about precision and more about
"close enough" but quick calculations. After a while, you learn to focus on
the most critical part of each question, which depends upon the operator and
the number of digits, and dismiss what's irrelevant.

------
3825
>> For future reference, 8 x 9 = 72. It should not take 3.04s to solve that
next time.

I really disliked learning the multiplication tables. When faced with 8 * 9,
my mind thinks 8 * 8 = 64 and adds 8 to it to get 72. :-/

~~~
mrkickling
I use to think of it like 10 and then subtract with the other factor. For
example if you have 9x7, think 10x7 and then subtract 7. 70-7 = 63.

And if you have 9x9 just think 90-9=81.

9x10 = 100-10 = 90

9x15 = 150-15 = 135 and so on..

------
lukaszg
// run in firebug and click & enter input... $('#answer').click(function(e){
var value = eval($('#question').text().replace('=', '').replace('÷',
'/').replace('x', '*').replace(/\s/g, '')); console.log($('#question').text()
+ value); this.value = value; })

------
peter_l_downs
This a great way to improve your touch-typing skills. I'm extremely accurate
on letters and the couple of symbols that I tend to use in programming, but
straight numbers are the class of character that I type the least. Pretty
cool!

------
CoryG89
This is cool. I would like to make it multiplayer with websockets. Similar to
an old multiplayer math game I made in school.
[http://get24.jit.su](http://get24.jit.su)

~~~
tbirdz
How do you play? I tried to click on the "Help" button, but it didn't work, so
I have no idea what to do.

~~~
CoryG89
Sorry about that. Fixed the help button.

------
dotneter
I created a similar site, but with different types of cognitive task
[http://www.brainexer.com/](http://www.brainexer.com/)

------
kjannis
Pretty easy to add a js script to do the work ;)
[http://pastebin.com/2FP7meUU](http://pastebin.com/2FP7meUU)

~~~
refrigerator
I know, but it's a client side app so it will always be possibly to hack no
matter what I do

~~~
kjannis
true, nice app though ;)

------
idiot900
FWIW I thought the insults were pretty funny. They put into context the
uselessness of learning to multiply and divide marginally more quickly.

------
fudgekludge
Just wanted to say that you should sanitize the leader board. Some of those
usernames completely turn me off from the concept.

~~~
refrigerator
yeah I agree, I've been trying to figure out a way to do it but people will
always be able to get past it

------
runekaagaard
And here's a cheat:
[http://pastebin.com/483UcMLx](http://pastebin.com/483UcMLx)

~~~
The_Double
shorter: document.getElementById('answer').onkeypress =
function(){document.getElementById('answer').value =
eval(document.getElementById("question").textContent.slice(0,document.getElementById("question").textContent.length-2).replace('÷','/').replace('x','*'));}

Just mash enter.

------
plus9z
Fun. But typos are BRUTAL. "For future reference, 3 + 1 = 4. It should not
take 2.69s to solve that next time."

------
yojo
cheat = function() { text = $('#question').text().substr(0,
$('#question').text().length - 3).replace('÷', '/').replace('x', '*')
$('#answer').val(eval(text)) }

~~~
selmnoo
Noob question: how would you... use that cheat?

~~~
jiggy2011
[https://addons.mozilla.org/en-
US/firefox/addon/greasemonkey/](https://addons.mozilla.org/en-
US/firefox/addon/greasemonkey/)

------
memming
Only if I had a keypad! Typing numbers in a mini keyboard is so slow.

------
jhuckestein
Ha! It redirects to the Wikipedia entry for computer hacking.

~~~
refrigerator
gotcha!

------
dpweb
"You beat 70.4% of people". Depressing..

~~~
callum85
Wait, what?

~~~
dvanduzer
Gotta be in the 95th percentile to be considered a Speedway Math Third Grade
Champion.

------
instakill
Woohoo, South African made stuff on HN :D

------
waxjar
This website it rude.

