
Show HN: Codewars - exolxe
http://Codewars.com
======
mhoad
Reading through some of the comments here I feel like you just posted a video
series of running over cats in your SUV to Reddit.

Personally, I love it, I think its great, has a slick feel and experience to
it. The site wasn't as responsive as you might hope but to be fair you are
currently on the front page of HN so I am willing to let that slide.

Looks like a ton of hard work went into this and I think it comes across
really well!

~~~
glennos
I'd second that. Great site! Not understanding the reported concerns regarding
OAuth, usability, etc. Works for me.

Only problem I'm hitting is 500 errors, which I assume is because the server
is getting smashed. Good problem to have!

~~~
exolxe
Really appreciate the balanced perspective. We're a very small team and we're
constantly improving, so it's great to hear supportive feedback.

And yea, we've gotten crazy traffic, so the 500s/speed are load issues that we
just pushed a fix for.

~~~
halflings
Hi exolxe,

I'm working on an open-source framework for code challenge web apps, so I'm
really happy to see such a website done right :-) !

Sent you a mail asking for some help, hope you'll find time to answer.

Good luck !

------
majika
For the privacy-conscientious user, your site provides one of the worst
experiences I've ever seen.

To get anything to work, I had to allow scripts from www.codewars.com,
push.codewars.com, two CloudFlare domains, AND platform.twitter.com. While my
usual process to get JS-heavy web apps to work is load scripts from the domain
itself, plus any standard CDN domains (like CloudFlare), your site does not
work without widgets.js from Twitter, which is pretty crazy.

You depend on three different CloudFlare subdomains - one of which serves a
tracking script, _on top of_ you trying to load tracking scripts from
MixPanel, Google Analytics, Rollbar, Intercom, Twitter and Facebook. I only
loaded what I had to, but I think it's safe to assume that you would have
pushed more domains on to me had I loaded everything.

Edit: the complaints in the two paragraphs below are invalid (can't
strikethrough on HN) - I mistook the authentication form as requesting my
GitHub credentials, whereas the "GitHub" title is a link to GitHub's oauth
page, and they also provide the option for creating a CodeWars account without
linking your GitHub. The visual distinction between these two authentication
mechanisms is near-invisible on my laptop's monitor. Anyway, according to
guptaneil (below), they will still require you to create an account with them
after linking your GitHub, so don't bother.

-Normally I would just dismiss such a privacy-flippant site as yours, but what pushed me to make a comment is that you prompted me to type in my GitHub password on your site, on a form with an action against your server. This is absolutely horrendous. You should only input your GitHub password on pages at, and send it to, servers at [https://*.github.com](https://*.github.com). I can only feel sorry for all the users who have fallen for this. I feel worse for those users without NoScript, who have unknowingly typed their GitHub password into a tab with scripts from about 10 different companies running - do you trust all of them to not log your password? Even the analytics companies?-

-I've flagged this post, and for anyone who typed their GitHub credentials into this site, I'd recommend you reset your password.-

~~~
tlrobinson
Maybe you should go full rms and only access the web via email.

I can't believe this is the top comment.

~~~
sneak
Stop setting up this dichotomy. It's not all or nothing.

There are reasonable amounts of external javascript to load, and there are
unreasonable amounts. Please study the difference.

------
winslow
Was anyone else put off by the link github/enlist to continue after only two
brainteasers? I felt like I was just starting to get really engaged in using
the site and enjoying it, to only have a "paywall type obstacle" in the way
and take away my good vibe feeling. Maybe rephrasing enlist to something like
login to track your progress would be better?

~~~
exolxe
Thanks for the feedback winslow - we didn't mean to dampen your vibe. The idea
is as the challenges get harder we want to make sure you get ones you care
about (interest area, difficulty) - that's a good idea on rephrasing it, we
could make that more apparent and give more challenges before requiring
signup.

Critique really helps us improve, we love hearing it, everyone should feel
free to reach out: nathan@codewars.com

~~~
1qaz2wsx3edc
A bit more feedback:

In chrome 32.0.1700.77, clicking join did nothing, it only scrolled to the top
of the page.

Also, I'd love to see a quick video introduction. I like the concept.

~~~
erik14th
Same here. Some points:

\- Navigation feels weird.

\- The main call to action should be "Try Codewars" instead of "Join Codewars"
so it'd feel like "no compromise just try it", also it'd be clearer that you
can actually try it out before signing up. I agree that the teaser should be
longer than the 2 small exercises.

\- The webcam in the monitor kinda creeps me out and draws my attention away
from the important stuff.

~~~
exolxe
Good point on the text - we'll make an update... The landing page navigation?

The webcam comment had me laughing for a few minutes. Never really noticed,
but it's an easy fix.

~~~
erik14th
Yep the landing page navigation, I actually didn't notice there was more to it
than the landing page. I felt kinda lost in the landing page cause there's no
much else than the "Join us" thing. I'm a programmer, my eyes have been
trained to ignore marketing copy and search for code examples and
documentation.

------
sandrae
I just finished the Javascript and JQuery course at codecademy.com three weeks
ago and since then I take challenges at coderbyte.com to continue learning.

So I was very interested in your site and signed up. Here are some of my first
observations and comparisons:

\- codecademy.com lists lots of males and females from young to old, from
different countries with all kind of professions on their Success Stories
pages. I felt very welcome their site. The name of your site and the constant
use of the word Kata indicate to me that your audience are young males. As a
woman in my thirties I don't feel I fit on your site. It seems a bit to
aggressive to me.

\- The second Javascript problem description was not very good. The second
problem basically says "Something is wrong - correct it". I like clearer
instructions like "write a function to reverse a string".

\- Compared to codecademy.com the site took longer to check my code.

\- I have no problem giving my e-mail address to anybody that provides a
service I want to try. I like to get the onboarding mails from codecademy.com
and think they should send out more because they are motivating. So I think
that it is good that you are asking for my e-mail address and I hope you make
good use of it by sending me interesting stuff. If not, I just filter you with
a click.

I'm going to spend some time on your site. If you want further feedback, just
send me a message.

~~~
angrycoder
Just curious, why does the word kata turn you off because you are female?

As someone who has studied martial arts for five years, there have been plenty
of female students and the vast majority of the people I study with are well
into their 30s.

~~~
dusklight
I don't think the word "kata" by itself is masculine or aggressive but the
site is called codeWARs, and they call signing up "enlisting" so ..

~~~
hobs
So they better change their entire branding!

------
stevenbrianhall
I can't recommend Codewars highly enough as a way to sharpen your skills. It's
like a slightly more verbose, prettier Project Euler.

They currently support CoffeeScript, Javascript, and Ruby, but are working on
supporting a ton more. Definitely worth investigating.

~~~
exolxe
This is awesome Steven - appreciate the support!

------
moron4hire
No! You may not have my email address after two woefully simple problems! I
don't need you sending me emails every day, "You forgot to come to
Codewars.com in the last 2 hours, why aren't you spending your entire life on
this site?!"

~~~
primitivesuave
I doubt _anyone_ , not even LinkedIn, would market their site that
aggressively.

~~~
moron4hire
it's called hyperbole

~~~
exolxe
It's all good - we may open it beyond members eventually. The main reason for
email right now is to foster a quality community... Just so you know we have
strict no-emails-every-2-hours policy.

------
jmtame
Cool idea. The Ruby code takes a long time to evaluate - even though I passed
the first two challenges without any issues, this would frustrate me if I were
a beginner. Why not use a Ruby REPL? Looks like you're evaluating the code
server side.

~~~
exolxe
Thanks and good catch. We do execute the code submissions on our own servers,
partially so that we can prevent cheating and make sure all solutions are
legit (the solutions list users see after finishing each challenge provides
some of the site's greatest value)... though second is because we plan to
eventually support full environments (challenges that utilize libraries,
frameworks, etc.).

The speed issue is optimization on our part, we boosted the servers so it
should be a lot quicker now

~~~
philippotto
You could make a first evaluation on the client so that the user gets quick
feedback whether his solution is right. To validate that the user didn't
cheat, you can make a second evaluation (server sided). The user shouldn't be
forced to wait for the server sided evaluation. Instead he should be able to
solve the next task immediately.

But nevertheless: Great idea with a lot of potential! Maybe you can give more
detailed compile errors, if the user wrote incorrect code.

~~~
gizzlon
If you do implement this, you can also avoid validating every submission
server-side. It should be enough to check a random sample. If you suspect
someone, you can start checking them more aggressively.

If you want to get serious, there's actually a lot of research into cheating
prevention :)

------
mgadams3
Saw you guys demo at a meet-up at Carbon5 almost a year ago, cool to see your
progress since then. I actually use the site regularly, nice work, especially
with the way your hide the spoilers so you can't just cheat if you get stuck.

~~~
exolxe
No way, this brings back some good memories. Glad you're using it regularly!

------
JacobJans
I love it! I'm a self-taught programmer, mostly working alone on my own
projects. This is a great way to expand my knowledge and have fun at the same
time. I particularly like seeing the other solutions after I've come up with
my own.

Thank you!

------
OverZealous
This is a very fun way to learn and get better. It's still in a very active
development stage, so things go up-and-down regularly (which sucks when you
want to get your fix), but it's mostly been awesome while I've used it the
last few months or so.

If you do try it out, one of the best parts is adding your own "kata" —
basically the games or tests. You will learn a lot by writing them (the
community is very active in helping users improve description text and test
cases). And there's nothing like seeing someone come in and absolutely blast
your best effort out of the water with something even more amazing.

------
damiongrimfield
The site looks great! I only have one comment: it'd be nice to get an idea of
which solution is the most efficient, and it'd be REALLY nice to be able to
sort solutions by speed.

~~~
exolxe
Awesome suggestion, that's actually one of our next features - stay tuned!

------
xixixao
The dashboard UI is pretty confusing, I switched to Chrome because I thought
it was broken in Firefox, and in Chrome the "preview" (now I know it is a
preview) has shadow on the bottom. It wasn't at all clear to me that clicking
'Train' would start the exercise with that preview. Otherwise, massive kudos,
I hope you upgrade to CodeMirror 4 with multiple cursors and improve the
CoffeeScript highlighting (I really feel Ace is more ready for what you're
doing). All the best!

------
ycmike
This feels like the Codecademy for programming gangsters.

------
davidddavidson
The name is pretty similar to CodeCombat
([http://www.codecombat.com](http://www.codecombat.com)) and I'm not clear on
how this site is better than Codeacademy
([http://www.codecademy.com/](http://www.codecademy.com/)). There are already
a bunch of programming koans/katas available on the internet.

~~~
shintoist
"The reason Google seemed a bad idea was that there were already lots of
search engines and there didn't seem to be room for another." \- Paul Graham

"It already exists" is a terrible reason not to do something

~~~
davidddavidson
The difference is that Google had a clear unique value proposition that was to
provide search results (and only search results) back extremely quickly and
were highly relevant when they other players were focused on creating "web
portals" and did not focus attention on search.

With CodeCombat and Codeacademy there UVP is very obvious (make learning to
code a game and teach to code online resp.) and had not previously been done.
With this site I don't understand what the UVP is (social programming
challenges?) that hasn't been already by something like TopCoder, Sphere
Online Judge, etc.

~~~
jhoffner
"Achieve mastery through challenge" is the tagline. The idea here is to push
yourself to solve problems you may have not attempted before, and to learn
from others by seeing how they solved theirs. I've have personally learned a
lot from seeing how other people solve problems, I even learned a lot from
creative uses of solving "Hello World" which was a bit of a surprise.

In short: Codecademy is meant for those who want to learn programming.
Codewars is for existing programmers who want to get better at programming.

------
elwell
can't wait for Clojure support

~~~
exolxe
Glad to hear it, it's in the works - we're just deciding the order to launch
them, so the voting feedback on next languages really helps us

~~~
tommmmmm
I'd also like to see Clojure or ClojureScript support. It would bring me back
a lot more often.

------
terabytest
I was pretty taken by this site, I did the teasers, signed up, selected my
skills and interests but then when I wanted to continue I started getting 500
errors. I had to leave quick so I didn't try to find a way around but I would
have had some fun if it wasn't because of that. Haven't managed to actually
use the site.

~~~
exolxe
We got hit with pretty heavy traffic, the load was causing the 500s and we've
pushed a fix for it - it's ready to go, so come back and check it out!

------
j45
Great idea -- interested to hear more about how you're handing all the
syntaxes, a combination of JVM and other things?

------
robin_garnham
Couple of bits of feedback

\- Server was unreachable when I tried to submit an answer, and the submit
button was then permanently disabled \- Not sure if my sign-in with Github was
successful, it just shows login still \- Now getting 'The code does not
execute properly. Try to figure out why.' and there is no code in the box to
enter

------
codonaut
This is really cool-- but I get so many "Submission timed out" errors that I
can't even do a problem...

------
tbirdz
Just wondering about how you are doing or going to do your sandboxing for
languages like c, c++, etc. If you are running arbitrary code from the user on
the server, it could be risky I would imagine, so I am wondering what steps
you take to make sure the user won't do anything nasty?

~~~
ssully
I would be pretty interested in this as well. I imagine that they only have a
loose idea at this point, if at all. If the list of "coming soon languages" is
any indication of priority, c and c++ are at the bottom of the pack.

~~~
exolxe
Great questions guys - we use locked-down language sandboxes on our own
servers right now (github.com/codewars) for JS and Ruby. Then we're developing
a Docker/LXC based server sandbox that will allow us to safely run each code
submission in any language in its own container... Another OSS option out
there is: [http://eval.so/](http://eval.so/)

~~~
biot
Also take a look at ZeroVM: [http://zerovm.org/](http://zerovm.org/)

------
binofbread
I would love to sign up, but when I click to create an account, I get
redirected to the home page.

~~~
exolxe
The sign in we have there is just for current users. To sign up just take the
challenges on the homepage - Good luck!

~~~
binofbread
I see. It was very confusing to click "Sign In" then click "Don't have an
account? Enlist Now." and be redirected to the home page. Looks cool though,
thanks.

Edit: I now see the intended flow, but there was no indication that I had to
complete the first 2 levels to be able to sign up.

------
Xymak1y
I ran into some bugs when testing, such as:
[http://imgur.com/B0VVnmn](http://imgur.com/B0VVnmn)

The test will pass but I can't submit it, because the test doesn't pass. Meh.

~~~
joshschreuder
That test doesn't pass for me in Chrome console.

I think it's because your isNaN check shortcircuits the other checks as you're
checking if the array element is NaN. Is that what you meant to do?

Also when you recursively call `numbers(args)` your `[].slice` will put your
array inside another array.

------
jaredandrews
FYI none of the buttons seem to be working on the homepage in Firefox OS X. On
Safari the formatting on the homepage is all off. Pretty cool nonetheless, I
plan on trying this out more later today!

~~~
exolxe
Sorry to hear that - we've done testing on Firefox/Safari and haven't gotten
that, though definitely want to fix it up... Good luck getting into it later,
and if you could help us debug just shoot me an email nathan@codewars.com.
Thanks!

------
epicureanideal
I like the concept, but I don't see how I can currently compete with other
coders on these problems. If I could pair up with a friend and do these
challenges I would enjoy it more.

------
codygman
I voted for Haskell to be included and plan on joining when it's added :)

Edit: Though, it's not beyond the realm of possibility I'll give in and sign-
up once there is python support.

~~~
Thirdegree
Those were my two votes as well. The site looks like a ton of fun, can't wait
for try it.

------
drivingmissm
This is awesome! You should seriously add PHP. Our community is probably the
largest and has many inexperienced programmers who would really benefit from
Codewars.

------
carise
Is there a way to go back to Katas that I've started working on, but haven't
completed? (Or is that something I shouldn't be doing?)

~~~
exolxe
Right now we save all your progress on the kata, though you need to find it
again by searching/list view... We're pushing a "favorites" list soon that
will allow you to earmark them for later.

~~~
carise
thanks!

------
derekchiang
I didn't expect much but ended up pretty impressed by the site. It's
beautifully designed and the flow is very natural. Lots of kudos!

------
deevus
Is the scoring only based on time-taken and LOC? The top script that I looked
at was more like code-golf. Is that the aim?

~~~
chilldream
The scoring is based on upvotes from other users. This often does translate to
the "top answers" being dubious one-liners.

~~~
exolxe
To start upvotes from the community was the best way to do it - though soon
enough we'll be benchmarking solutions so you can order them by execution
time.

------
mattholtom
Very cool, one of those sites you can very easily spend a 1/2 hour on without
realizing it...

------
antonius
Awesome. Can't wait till more languages become available.

------
iamwithnail
MOAR (some) PYTHON.

~~~
nilkn
Indeed, I'd be all over this if it had Python support currently.

~~~
exolxe
It's our next one - we're getting close to launching it, if you drop your
email in the voting, we'll make sure to let you know!

~~~
iamwithnail
Already done!

------
blakerson
I'm having fun with this. Thanks for sharing.

------
friendzis
Big plus for making tab work in editor

------
vdimarco
R isn't in the roadmap?

------
elwell
GitHub Sign In is a plus

~~~
elwell
However, did not work when pressing Sign In and going through that process. I
came back to homepage with no difference.

~~~
elwell
It only worked once I went through the few questions on the homepage, and then
it was a single click to connect my GitHub account. Finally, logged in now.

------
ninjac0der
Outstanding user experience throughout the account setup, I will continue
playing with this as it's quite enjoyable so far. Thanks for sharing.

#edit it's kind of sad (and telling) to see the complexity and cleverness in
the higher ranked solutions.

#edit2 rampant regex solutions, nested returns, oh my.

------
it_learnses
github sign in doesn't actually seem to sign me in.

~~~
ogreyonder
Yeah, I was confused about this too. They hook up your github then...don't
even use it?

------
it_learnses
once I link to my github, why do I need to select a username, password and
email to enlist?

~~~
exolxe
Yea right now it's not a full github sign-in, but allows us to let you auto-
signin when you return. We still need to other info to create the account.

~~~
it_learnses
why though? you've verified me via github. should simplify the process.

