Show HN: Codewars
codewars.com
codewars.com
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!
Only problem I'm hitting is 500 errors, which I assume is because the server is getting smashed. Good problem to have!
And yea, we've gotten crazy traffic, so the 500s/speed are load issues that we just pushed a fix for.
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 !
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. 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.-
We do load quite a few 3rd party libraries, though only to make the user experience even better. All of these services are pretty standard and most of these should be familiar with many web developers. Intercom allows us to communicate in real-time with our users, Rollbar allows us to monitor client-side exceptions, mixpanel and google for analytics, twitter and facebook for social. You bring up a good point though that for users who wish to disable these, there are integration points within our code that would most likely cause errors to be thrown. We can certainly work on decoupling our code so that it silently ignores calls to these APIs.
I can't believe this is the top comment.
There are reasonable amounts of external javascript to load, and there are unreasonable amounts. Please study the difference.
Critique really helps us improve, we love hearing it, everyone should feel free to reach out: nathan@codewars.com
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.
- 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.
The webcam comment had me laughing for a few minutes. Never really noticed, but it's an easy fix.
The join button just isn't clear enough, when it scrolls up it's just taking you to the challenges on the monitor, since you signup through there.
[1]: A Croatian (I'm Croatian, too) website made me submit my email for a Web purchase, but they started sending newsletters they have no unsubscribtion mechanism, and they send the newsletter from <newsletter id>-newsletter@..., which I could filter and send to spam (which I also do) , but instead, I forward the email back to them and also send a reply that I'd like to stop receiving these emails. Ironically, they asked me on a few occasions to stop emailing them, I simply respond with the same reply they sent me when I asked to be unsubscribe: "It's automatic, there's nothing I can do about it." There's always a way to fuck with those who try to fuck with you. :-)
Keep up the good work on it!
We want to make sure to keep the intrigue and flow going. So we're seriously thinking about how we can open more challenges while balancing it with a customized experience, great advice. Appreciate the help.
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.
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.
Here's the official explanation of what the word means:
Kata (型 or 形 literally: "form") is a Japanese word describing detailed choreographed patterns of movements practised either solo or in pairs.
Stop demanding the whole world adjusts to you and your solipsistic ways and try to be more tolerant of cultural differences and diversity. If I was the creator of the website, I'd probably have told the OP to fuck off because I don't want shit-stirrers and culturally insensitive people on my website.
This site's theme uses the gravity of the old "Oriental mystique" trope to seem a little more impressive - to make programming practice sound "exotic" or "badass". What the fuck does a ukiyo-e image have to do with programming? No Japanese site would choose this theme, in the same way that you have observed that no Japanese person would think of 形 as a militant word. The Western equivalent would be to plaster a Dutch Golden Age painting onto the background and substitute Dutch words like "drillen" and "uitoefening" for "kata". It would be ridiculous and nobody would take it seriously.
The problem is, we already have fine English words for what is being done: "exercise" and "practice". "kata" remains associated with McDojos that want to impress you - it's not a borrowed word that has entered everyday use. And we've grown into accepting that it exists in that context over time. But its usage can still be considered not just offensive but colonial, in any Western context. It's an outright theft of culture.
Also, you put "welcome", "excluded" and "offended" in quotation marks. Sandrae did not say any of those words. Whoever you were quoting isn't really relevant to this discussion.
Also, after all the site is called Code Wars, perhaps she was influenced by that as well.
We have a lot of female users on Codewars and want to make sure everyone feels welcome. The term "Kata" are what we call our challenges, it just means "form" in Japanese - it's used in calligraphy and martial arts to describe a way to practice a pattern to excellence. As for our name, it does hint at competition, though is meant as a metaphorical war on mediocrity and the status quo.
Performance-wise our site isn't going to be as fast since we run the code on our own servers (opposed to in your browser), which has lot's of advantages for better challenges/more versatility, but makes speed a little more of an issue.
I hope you do give the site a shot, and if you have any more feedback please email me: nathan@codewars.com
I'll admit that until signing up for a martial arts class which had women in it, I'd only heard men use the word Kata.
How could they make the site less aggressive?
They currently support CoffeeScript, Javascript, and Ruby, but are working on supporting a ton more. Definitely worth investigating.
The speed issue is optimization on our part, we boosted the servers so it should be a lot quicker now
But nevertheless: Great idea with a lot of potential! Maybe you can give more detailed compile errors, if the user wrote incorrect code.
If you want to get serious, there's actually a lot of research into cheating prevention :)
Thank you!
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.
"It already exists" is a terrible reason not to do something
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.
In short: Codecademy is meant for those who want to learn programming. Codewars is for existing programmers who want to get better at programming.
- 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
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.
The test will pass but I can't submit it, because the test doesn't pass. Meh.
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.
Edit: Though, it's not beyond the realm of possibility I'll give in and sign-up once there is python support.
#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.