Show HN: Codecademy.com, the easiest way to learn to code - <AUTHOR> http://www.codecademy.com I've been a longtime member @ HN, but I haven't been a developer.  In fact, my only HN submission has been one asking how to learn to code (http://news.ycombinator.com/item?id=820741).  My cofounder and I decided to solve the problem by making a simple, interactive way to get started with Codecademy.  We'd love your feedback.  If you're interested in helping us to get more courses up (on any topic!), please send us an email at firstname.lastname@example.com. <comment><AUTHOR> I've been a longtime member @ HN, but I haven't been a developer. In fact, my only HN submission has been one asking how to learn to code (<http://news.ycombinator.com/item?id=820741>). We decided to solve the problem by making a simple, interactive way to get started with Codecademy. We'd love your feedback. If you're interested in helping us to get more courses up (on any topic!), please send us an email at HN (at) codecademy.com.

<comment><USER3> Awesome, thanks! I've always thought the use of books to teach programming was a bit ironic, especially for interpreted languages.

Back in the early '90s I had a book called Master C, which came with a floppy that ran a similar type of tutorial.

[http://www.amazon.com/Waite-Groups-Master-Book- Disks/dp/1878...](http://www.amazon.com/Waite-Groups-Master-Book- Disks/dp/187873900X)

Seems like a long gap between then and now.

Also, please let me request a course on Clojure. That would rule!

<comment><USER4> <http://www.try-clojure.org/>

<comment><USER5> (+ 3 3) is really how arithmetic is performed in Clojure? Okay, I'm done with learning Clojure.

<comment><USER6> It may look like a weird way to type things, but it has hidden advantages when you try to do more complex things, like treating data as a program... or programs as data.

It's a small price to pay, really, for the power to make some really complex things a lot easier, even if it's a bit weird at first.

After a while, it won't even seem weird any more.

</comment></comment></comment></comment></comment><comment><USER7> Interesting feedback: I had my gf do it, and she got stuck in the .length portion, because she kept typing:

        "name".length.

This is because the prompt said:

        Well done! How long is your name? Find out by typing your name in quotes and ending it with .length.

        For me, that'd be "Ryan".length.

Apparently its not clear enough what is code and what isn't. While you and I can tell that the last period belongs to the sentence and not the code, it was a bit confusing for her. Perhaps putting the code in a different font (as well as the current highlighting) would do the trick?

<comment><USER8> I am no one's girlfriend, and I am stuck on lesson five :P

I think that if this is aimed at beginners it needs to be dumbed down more--I am a reasonably intelligent absolute beginner curious about coding and whether I'm interested in learning some, and in this lesson you have completely lost me; I no longer understand what I am doing or why, and I don't know how to proceed:

 _Everything we've talked about so far has one value. But what happens when you need to store an ordered list of values? You use a data structure known as an array.

The editor now has an array named numbers with the numbers 1, 4, and 6 (look at how we set the values). To access a particular value, you can use the name of the array and its position, or index (they start with 0). To get the number 4 from the array numbers, you would write numbers[1].

Try writing a line that will set the value of a variable called six to third number in the array._

I feel like there is not enough building on the previous lesson and not enough practice/repetition for me to get a toehold on what I'm doing/learning before moving on to the next thing. Here you have already moved me up to a level of abstraction where I cannot continue the exercise without seeking outside help (from Google, a book, a friend...).

And my hint is: _To do this exercise, you have to declare a new variable (using var six =) and set it equal to the value of the array (done with numbers[2]). Remember: array indexes start at 0, not 1._

I'm totally lost. This hint is not helpful to me and there are no more hints. I'm stuck and can't continue within the lesson itself without more hints, exercises or explanation.

Also, I think this is brilliant <3\. Keep going.

<comment><USER9> The way I would describe an array to a novice is that it's a more complex and potentially useful type of variable, similar to the ones you've been making so far, only instead of having a single "slot" for data, they are organized in a way that allows for multiple slots for information, and you can reference each slot by their position in the array, starting with position 0 (0, 1, 2, etc. describing the first, second and third. etc. positions in the array).

An array is a variable declared with square brackets around all the data, with a comma in between (delimiting) each positioned slot of data.

Example:

        var array = ["data1", "data2", "data3"]

In this case, we've created an array containing text strings. It could just as easily contain integers, or as you will see demonstrated a little later in the course, other variables, including other arrays.

Then, in order to retrieve or modify a piece of information from the array, you reference the array variable with the array position you want in square brackets.

Example: To get the "data1" string from the above array, use the variable like this:

        array[0]

To get an alert dialog with the "data2" string, the code would look like:

        alert(array[1])

You can easily modify a piece of data in the array using this technique. For example, to change the string "data3" in the array to "third", the code would be:

        array[2] = "third"

If you would like to add a new piece of data to the array, you could do the following:

        array[3] = "fourth"

Note that this would require that you know the size of the array and that the position [3] is an available slot. A simpler method of adding data to an array is to use the .push function as such:

        array.push("fourth")

<comment> buff-a I need some milk! Let me add that to my shopping array.

Back in the real world, I see non techies deal with lists every day. Ordered lists. Given a list, with numbers in the margin, they can easily answer "Who came first?" or "What's next on the list?", or "What's item 5 on the agenda".

But noooo. We have to call them arrays. Lists are something else. o_O

 _The way I would describe an array to a novice is that it's a more complex and potentially useful type of variable_

Fuck me no!!!! Shut up Moss!

<comment><USER9> That's because arrays do get more complicated than flat lists like the example I gave above. You can actually have multiple organized data points in each position of the array as well, making arrays function more as a 2D relational database than as a flat list of data.

For example, I could make an address book array with multiple data points as such:

        var addressbook = [{"firstname": "John", "lastname": "Doe", "phone": "555-555-5555", "email": "email@example.com"}, {"firstname": "Jane", "lastname": "Smith", "phone": "666-666-6666", "email": "firstname.lastname@example.com"}]

Then, I can retrieve a piece of information like Jane's phone number like this:

        var janesnumber = addressbook[1].phone

Arrays are very powerful tools, especially once you start referencing other arrays in them, as it allows complex organization of data without always needing to resort to a database solution, with a whole new language to learn.

</comment></comment></comment></comment></comment><comment><USER10> Beautiful! But if I keep trying to explore after the _"You've completed this lesson! Start the next one."_ message, I get

        ERROR: Cannot read property '_id' of undefined

In my opinion, exploration in this context is extremely important. The guided tours are nice, but I'm confident that you don't want to limit people's use of the site

Also, _"You're doing great! To continue, you'll need to register or sign in. Otherwise all that awesome progress you've made will be lost. Sign In\Register (it's free)"_ was a complete surprise, and felt like a roadblock (in spite of the "it's free" message.

If a user types through enough of the pages to get this message, they probably are enjoying the site and want to keep working with it. Why not include a "Not now" option in this dialog?

That way they can choose to join when they step back when _they_ are done and say "Wow, that's a nice site! I want to come back later and keep working on this. I guess I ought to register!", rather than a "Meh, I've only invested 2 minutes, guess not".

<comment><USER11> Agreed with all of the above points. Beautiful and easy to use.

The "You're doing great! To continue, you'll need to register or sign in. Otherwise all that awesome progress you've made will be lost. Sign In\Register (it's free)" dialog is most definitely a road block as there were no links available to go back to the home page.

Only two options were sign in or register. So yeah, there should be a cancel, or return to homepage

<comment><USER12> Nope, not a road block for me. By the time you get to that point, the user has already got a taste of the fruit; it's decision time. I registered.

I love this. Keep doing what you're doing, expand the library in a few months and contact foundations like Rockefeller for financial support if you need it.

Kudos! I'm excited.

<comment><AUTHOR> awesome. we're adding the option to skip registering but we hope most people do what you do.

<comment><USER13> good idea, but just a thought - why not have registration go through the terminal as well? It seems you're only collecting email and password - why not just prompt for that without interrupting the flow of the lessons?

<comment><AUTHOR> thanks, morrow, this is a great suggestion. we'll implement it once we finish adding more capacity and rewriting some of the stuff to lessen load.

</comment></comment></comment></comment></comment></comment><comment><USER14> Very nice. Really well made. Love the fact that I could just dive in and engage with the product from the homepage without having to dance through the usual annoying sign up routine.

One thing I'd change is this error message which is not really an error message : "ERROR: Sorry, that's not correct. Please try again."

It appears every time I try some command which is not exactly the next step defined in the tutorial. It kind of feels like an old school tutor forcing me to follow a rigid book exercise and discouraging experimenting.

If you want me to complete the tutorial, don't move the progress indicator until I complete the next step, but please don't scold me with fake errors :-)

One thing I've been craving for is a place where I can jump in and get a quick primer on some random topic from another programmer. Think SO in real-time. I know there's IRC, but it's not very user friendly and I don't want to hop around different channels to ask different language questions.

If you build a truly social and interactive site for learning programming, I'd use it a lot.

Good luck!

<comment><AUTHOR> thanks!

we're opening it up to free programming asap and we're going to stop the fake errors thing.

this is exactly what we're planning on doing - let me know if you'd be interested in creating a lesson or if you have other feedback - zach (at) codecademy (dot) com.

<comment><USER14> For now, I'll be selfish and only want to learn and seek help when I get stuck while programming.

Are you on twitter?

<comment><AUTHOR> yep, i'm @zsims and we're @codecademy.

</comment></comment></comment></comment><comment><USER15> I actually had a similar idea to this and you guys have executed wonderfully on it!

Starting with Javascript is definitely the way to go, as I strongly believe it's the language of the future (and right now actually). One request for courses would be intermediate/advanced javascript for people that already know how to program.

Also I think you should reach out to library developers (backbone, underscore, jquery, etc) so that instead of having a static readme/how-to they can create a course on how to use their library. I know that would get me up to speed on them a heck of a lot faster and would be super useful.

<comment><USER10> Agreed. Looks like you can submit courses from <http://www.codecademy.com/programming-intro>: There's a mailto link that points to contact at codecademy.com with the body "Hello, I'd like a create a lesson on ...". (Note that the OP asks here: <http://news.ycombinator.com/item?id=2901163> that responses from this submission be directed to 'HN at codecademy.com')

@zds: Any plans to make this an online course submission, or do you want to filter everything through emails?

<comment><AUTHOR> yep, expect online course submission in the next couple of days (with some other cool stuff sprinkled in). we're taking emails now so that people who want to get started right now can do so (we haven't built the form but we'll show you how to get started). feel free to shoot us an email if you want to get started before we have it built out.

</comment></comment></comment><comment><USER16> This new fad of providing interactive/iterative consoles for learning technologies (e.g. redis[1], mongodb[2]) is brilliant.

I really well done flow (like this one) reminds me just how fun it is to learn something when it is presented well. I am ashamed to say that if I had to teach someone, say Java, I wouldn't know how to present it in a fun, non- crushing manner.

I am glad there are people out there working on resources like this.

[1] <http://try.redis-db.com/>

[2] <http://www.mongly.com/tutorial/index>

<comment><AUTHOR> thanks! we're hoping to help you learn a lot more than javascript soon.

</comment></comment><comment><USER17> This is a wonderful start - kudos. If you're targeting beginners/novices, which it looks like you are, your current approach looks ideal. I wonder how this scales to more advanced topics/languages. I think there is a market (a much smaller market though) for advanced learning, and if done right a lot of beginners can be encourages to deepen/broaden their skills. Crowdsourced lessons, simplified to fit in with a successful learning framework like Khan Academy or Codeacademy.com is probably what will make this possible.

Any thoughts/plans to go that route?

<comment><AUTHOR> you'll see soon enough ;) thanks for the feedback!

</comment></comment><comment><USER18> This reminds me of (what was previously _why's) "try ruby!" at <http://tryruby.org/>

I always loved that, and I think this has a lot of potential. Tomorrow being Whyday, I think I'll send this to some people to try and spread the joy of programming.

I do think that the parentheses and semicolon stuff might appear sort of abruptly for the completely non-technical, but it's hard for me to judge, really.

<comment><AUTHOR> thanks! we love tryruby too. thanks for celebrating whyday!

</comment></comment><comment><USER19> Too much social networking clutter on that homepage. All I see is "Email Facebook like 3K Send Tweet +1 715", then on the right another Facebook logo and another Twitter logo.

Imagine a customer that is really happy with what you provide. Do you really believe that this person is unable to recommend it to others without your help?

What these logos tell me is this: You believe your site isn't good enough that people will take the 2 minutes to talk about it, but you hope that if you make it easy enough to just click a button, masses of these low-involment- recommendations would somehow make up for it. Which they never do.

Great concept otherwise, congrats.

</comment><comment><USER20> Lesson 6, exercise "Otherwise..." is wrong. Here's the code:

      var number = prompt("Guess what number I'm thinking of between 1 and 10!");
      if(number === 7) {
        print("You got it!");
      // Change the following line.
      } else if () {
        print("Close! Try guessing a little higher.");
      } else {
        print("You were way off! Sorry...");
      }

prompt returns a string, but then attempts to compare it with === with an int, which clearly doesn't work.

This is a really awesome site though, and I'm really excited to see it grow with more and more lessons.

<comment><USER20> It also seems a bit too eager to accept solutions as correct. For example, you can pass Lesson 6, exercise "Dot your I's and cross your T's" without fixing the = vs == confusion. I put this in to test, and it passed:

      var response = prompt("Do you like me?");
      if (response = "yes") {
        print("i like you too!");
      }

It passes because assignments return the value of the variable assigned, but it should fail the exercise, since it's conceptually wrong.

</comment></comment><comment><USER21> Great work so far! I would suggest that when you have enough lessons, you create a knowledge tree instead of just a list, similar to what Khan Academy does (<http://bjk5.com/post/1664635835/constellation-knowledge>).

<comment><USER22> Hope it is possible to reuse the knowledge tree from khanacademy in your application directly... Maybe even the credits system... maybe even user accounts... just imagine a world where every feature does not have to be reinvented... All the best! Awesome product!

</comment></comment><comment><USER23> The hardest part of learning to program for me (thinking back many many years to THINK C) was learning the environment and what all the terms and messages meant.

I think basic programming is actually conceptually easy. I remember being frustrated by not understanding the lingo and I think that's where a lot of people starting off get hung up, too. What's the difference between a syntax error and a runtime error? Or an exception? What happens when the compiler spits out some gobbletygook, and now I'm digging through a manual written for people who already know how to program.

In this sense the Codeacademy poses similar hurdles. It will report an Error, without giving more context. Why is it an error? Did I quote something I shouldn't have? What does unexpected token mean? OH, I _left off_ a quote.

i.e. instead of "Error: Unexpected token ILLEGAL", a better message (perhaps linked from the strict message) would be "The program interpreter couldn't understand what you meant because it was expecting to see some syntax or punctuation that didn't exist. Common reasons are unpaired quotes, braces or parentheses"

Because the environment is already somewhat controlled, the helpful messages can have a narrower, clearer scope. Overall Codeacademy is great; I'm recommending it to a lot of people.

</comment><comment><USER24> You guys are onto something here, my Wife is trying to learn to code and finds books really tough to get instant feedback from. Also, that little intro on the front page getting people to code without them knowing is genius!

</comment><comment><USER25> This is really similar to the "getting started" feature in our product, Handcraft.com. It's a HTML prototyping tool so you have to write code, but we're aiming it at interaction designers so we've taken care to address the fact that some designers aren't too familiar with writing HTML to do prototyping.

We ended up initially putting you into an introductory prototype when you first start an account where we bring you up to speed on what our tool can do in terms of writing HTML before we go further and show you more about how our tool is special.

Strangely, after launching in the Chrome Web Store, we started getting a lot of feedback from people who had stumbled into it and were discovering HTML for the first time through our getting started guide. They don't have a clue what "HTML prototyping" or "interaction design" is, but they love learning about "how to make websites" with Handcraft.

Just thought I'd share. Great work with Codecademy! I'll be keeping my eye on it and might start forwarding people over if they get stuck with what we have on offer.

</comment><comment><USER26> Excellent work! This is the first interactive coding tutorial that I actually like.

Small bug: On <http://www.codecademy.com/programming-intro/4#!/exercise/3>, it says "We've given you an example for the first one", but there is no example.

<comment><AUTHOR> looking into and fixing this now. thanks!

</comment></comment><comment><USER27> Awesome! This is using my console library, jqconsole <https://github.com/amasad/jq-console>

<comment><AUTHOR> indeed it is, thanks so much!

<comment><USER27> Glad you like it. Feel free to submit any bug reports and/or feature requests!

</comment></comment></comment><comment><USER28> Well done. One suggestion is to use the Socratic Method (<http://en.wikipedia.org/wiki/Socratic_method>) like "The Little Schemer". I would love to see "The Little Schemer" implemented on your site.

<comment><USER28> I just completed the course and it is very well done. If you want to teach to young children (especially boys), then a Khan Academy approach could be used where you narrate the course. Most of Khan Academy's success comes from Sal himself, his personality. It is hard to find natural teachers who show heartfealt enthusiasm for their subjects. Ryan Bates of Railscasts also achieves this. Just my C$0.02. Again, thank you for your work. This is a wonderful direction for education.

</comment></comment><comment><USER29> This is definitely genius. Even for programmers the service could be very valuable in learning new languages. I love my O'Reilly books, but I would throw all of them away in a heartbeat if the content was wrapped up in an interactive console like this.

<comment><USER22> Coffeescript and other languages that compile to Javascript could be an interesting starting point and would need the least work for u guys...

</comment></comment><comment><USER30> It isn't completely clear what Variables -> CaSeS wants me to do. It seems like it's asking for:

        myFullName = "Thomas Edison"

But it's reminding me of making sure my variable names are correct, so maybe:

        myFullName = myName lastName

That doesn't work.

Because I'm a programmer, I know that the + operator concatenates strings, but I don't think everyone will think consider that, and it hasn't been mentioned at that point.

<comment><USER31> It was looking for var myFullName = "First Last";

<comment><USER30> Why does the hint suggest making sure case is right then? I can't imagine a mistake someone would make where that would be a helpful hint.

<comment><USER31> Dunno, I didn't write it. I actually refreshed once because I thought there was an error. I then realized it was my fault after looking at the previous question.

<comment><AUTHOR> Looking into fixing this tomorrow as soon as we get the load under control. Thanks!

</comment></comment></comment></comment></comment><comment><USER32> I find it kind of odd that it doesn't actually say what language I am learning. (I mean, yes, I can tell, but if I were learning I wouldn't.)

Was that on purpose?

<comment><USER33> You have to get through the first lesson before it tells you that you're learning JavaScript. This isn't terrible considering the audience this seems to be targeting -- the name of the language is an implementation detail to a beginner.

<comment><USER34> No, it is absolutely not an implementation detail.

When I was setting out to learn programming, I bought every book I could lay my grubby teenaged hands on about the language. Knowing the _name_ of the programming language allows you to ask questions about it of other people and the Internet.

<comment><USER33> It's an implementation detail _to a beginner_.

<comment><USER34> I _was_ a beginner.

</comment></comment></comment></comment></comment><comment><USER35> When I click on "Get Started", nothing happens. It made me think it was just a stub site. Is it just me? Chrome on OS X 10.6.

<comment><USER10> In Chromium, an alert bar stating "Follow the directions in the console to begin" pops up, and the console is highlighted while everything else is grayed out.

It's a CLI-based interface, not a click-based interface, which is a welcome change and a good thing for beginning programmers to learn.

<comment><USER35> Oh, thanks. It's odd, the CLI doesn't even appear here. Had to go to Firefox to see it. Probably some blocking extension getting on the way.

But still there were problems: the CLI did not recognize my keyboard layout. I could not type quotes, so I couldn't even say my name... Too bad, looks cool.

<comment><AUTHOR> looking into this now - hope you'll check us out again in a day when we have it fixed!

</comment></comment></comment></comment><comment><USER36> Looks great guys. It might be useful for new developers to be able to reset the code in the textarea to its original state if they mess up or get lost (I was looking at <http://www.codecademy.com/programming-intro/7> when this thought came up)

</comment><comment><USER37> I love tools like this. I was using a mongoDB one the other day which was pretty nice, too.

No better way to learn than by example, and you can take a lot more from it than reading a 20-odd page tutorial.

This may be a matter of opinion, but I think the order in which new concepts are introduced could be tweaked. You're first introduced to string literals. Then variables are introduced. Then it's back to string literals. Then some variables. Then a tiny bit on numbers which suddenly shifts back to string literals in the same lesson.

It seems that introducing the concept of variables is a little premature in those first four lessons considering they're rarely, if at all, manipulated, and aren't applied consistently enough to really understand what they're for.

</comment><comment><USER38> Amazing stuff! Slow and buggy, but as a guy who can't program for shit, this is awesome!

<comment><AUTHOR> working on ironing out the bugs and upping the speed, thanks for the feedback!

</comment></comment><comment><USER39> This is great. Especially now, Javascript's a great language to learn and possibly is directly useful to many people.

A suggestion is to gently scold users who do a variety of "bad javascript" things. You may want to let them know that what they did works, but may cause problems somehow.

The first item that comes to mind is accidentally making global variables by leaving out the `var` when creating new variables.

Also encourage users to end lines with semicolons (maybe only when using an editor).

Currently, if you do these things you can pass the exercises anyway. Arguably you shouldn't be able to pass "Let's Try That Again" in "Variables" if you do it with a global variable.

</comment><comment><USER40> I don't think you determine a passing result correctly.

I made several attempts as "Lesson 8: Take a While", all fulfilling the brief, and all telling me "Oops, try again".

I wasn't even being particularly perverse on all of them. In fact, when I did try being perverse, I got it to pass even though it technically should have failed.

This is an example of perversely passing:

        var times = 0;
        while (true) {
          print( "hello" );
          if(times >=100) {
              times = 2;
              break;
          }
          times += 1
        };

The brief is "Your turn! Let's make a while loop that prints "hello" twice. It's outlined in the editor."

</comment><comment><USER41> Chrome 13 / OSX 10.6.8 - I can navigate the courses pages, but don't see the CLI interface (just the section list, and the Disqus discussion). Also it's not redirecting to any shebang URLs. Works fine in Firefox.

(nice work btw)

<comment><AUTHOR> bug noted - we're on it! thanks.

</comment></comment><comment><USER42> This is an absolutely fantastic idea and is really well executed.

What I find to be even greater is that as you run through the thread of comments, zds is responding to feedback and then going back to Codecademy.com to actually incorporate it on the fly.

It's 10 hours since this was first posted and I just read some comments on "you should be able to skip registering until later" and it's already available when you get to Lesson 3.

A great way to listen to and incorporate the right user feedback into your application quickly and effectively.

Really good stuff!

<comment><AUTHOR> Thanks so much for the compliments, Omar! We're trying to fix all the errors as soon as we can and get more lessons up ASAP.

We need help though! If anyone wants to contribute lessons, feel free to drop me an email - contact (at) codecademy (dot) com.

</comment></comment><comment><USER43> Not sure what's wrong with the site, but the top left is just one big empty area of white space and the get started button does nothing at all. I've tried both FF 6.0 and Chrome.

<comment><USER44> You have to enable/allow javascript (for the host itself as well as for facebook)

<comment><USER43> Ah, well if it requires FB, that would explain it. I was behind a corporate firewall that blocks FB.

<comment><AUTHOR> Sorry about that! Working on fixes to decrease our dependence on FB. Let us know if you check it out at home - would love to hear your comments.

</comment></comment></comment></comment><comment><USER39> A typo is the hint in "UpperLowerCase" reads `just type .toUpperCase after it` missing the parenthesis on the function.

Additionally if the user actually does this, they don't get an error and instead get something they probably don't expect:

        > "asdf".toUpperCase
        ==> function toUpperCase() {
            [native code]
        }

Maybe sometimes don't always output the evaluated result of what the user typed. Or just output an error also with it.

</comment><comment><USER45> This is great. As a designer, I've wanted to find some sort of learning mechanism that walked me through coding and really explained what each part does. I found TryRuby the other day and loved it. This seems to be in the same vein but Javascript focused (which is awesome because I want to develop a better knowledge of front-end dev). Really enjoy this and hope it sticks around for a bit, I think it will be really helpful.

</comment><comment><USER46> FYI - found a bug: Yesterday I started doing some exercises, but I guess the site was getting hammered and some of them were never marked as completed. So today I finished the exercises and re-completed the ones that were never recorded as completed. Now I have two "Getting Started With Programming" badges and two "25 Exercises Completed" badges. Just wanted to let you know.

</comment><comment><USER47> Just FYI, since I assume it doesn't come up in the lessons, your REPL doesn't like objects that self-reference, even though it isn't trying to print them out.

      > o = {}
      > o.o = o
      ==> [object Object]
      ERROR: Maximum call stack size exceeded

This isn't totally unusual; `window` has several self-references, for example, and hangs for several seconds.

<comment><USER27> @zds inspect.js should fix this issue, which was written by the Node people to inspect objects in the terminal and take care of circular references. I edited it to make it work on the web <https://github.com/amasad/jsrepl/blob/master/util/inspect.js> Just pass all results from eval to the inspect function and you'll get a nice pretty printed output!

<comment><AUTHOR> thanks, amasad. looking into this now!

</comment></comment></comment><comment><USER48> I first thought this is going to be another site with a bunch of long tutorials.

But I was wrong. My instinct tells me this can be the way to get wanna-be young coders excited about programming. Reason being is teenagers/young adults can feel like they are actually talking to a _person_ , not a machine.

(I am the programmer of 5 websites/apps/plugins and a high school sophomore.)

</comment><comment><USER49> This is awesome. It definitely revolutionises learning programming.

One thing to improve, make the program sound the nice guy it sound when the user does things right. I tried doing something wrong and presented with just an error. Probably not good for the type of audience that would embrace this.

`> 2w2 ERROR: identifier starts immediately after numeric literal`

Wishing very good luck.

<comment><AUTHOR> We'll try to wrap the errors with something a little more user friendly. Thanks!

</comment></comment><comment><USER4> I like it. I am however not the target user.

Also it is not that original:

<http://tryhaskell.org/> <http://tryruby.org/>

In fact theres already a javascript one: <http://tryjavascript.devfu.com/>

But it does seem friendlier somehow that the others.

<comment> mkr-hn I think what sets this apart is the curriculum format. You can go back through and review lessons. I don't see something like that on the sites you linked.

<comment><USER4> Ahh yes very good point.

</comment></comment></comment><comment><USER50> Great idea, excellent execution....some slow server and unresponsive consoles, but that's normal for a launch!

Overall, an amazing website!

<comment><AUTHOR> working on making sure it's up to speed ASAP, thanks!

</comment></comment><comment><USER51> Really nice. I just did all of the exercises .

2 bugs I hit were the lessons not saving upon completion & if it hits an error, it froze the window which I had to close (Chrome running on Lion)

Proof of completion: <http://www.codecademy.com/users/4e4da1c233a5480001000221>

<comment><AUTHOR> looking into these now. thanks!

</comment></comment><comment><USER52> Somewhat newbie programmer here. On lesson 6, "Otherwise", the default code seems to be wrong to me. It takes input from prompt() & assesses it as if it were an int/float, not a string. The lesson progresses with an incorrect solution (answer is "not even close" for 6 and 7"). Works if u look for "6" or "7".

</comment><comment><USER53> I like the interface a lot - clean and easy. How much will someone be able to do after going through the training?

</comment><comment><USER54> Transcendentally useless. ^_^

Please, visit [http://ocw.mit.edu/courses/electrical-engineering-and- comput...](http://ocw.mit.edu/courses/electrical-engineering-and-computer- science/6-00-introduction-to-computer-science-and-programming-fall-2008/) instead.

</comment><comment><USER55> Feels great, well done on the UX side. Although I do wish you would focus on particular languages and use cases. Suddenly, "I'm learning Javascript". A normal reaction would be- "Why am I learning Javascript? What is it useful for?" for non-technical users

<comment><AUTHOR> yep, planning on adding some more context as soon as possible. thanks!

</comment></comment><comment><USER20> I suggest, to make this easier for beginners, that instead of having a single hint for each exercise, instead provide a series of hints, culminating in just giving the complete solution. That way people aren't stuck forever on one exercise.

</comment><comment><USER56> 7/8:ths into it hung chrome and I had to kill the page. All my progress disappeared. :(

<comment><USER57> Same thing happened to me while I was testing it out, page crashed so there's no error message for me to paste from dev. console.

</comment></comment><comment><USER58> Hah, it even keeps the cursor from blinking. I wonder if it's hardcoded or if it actually picked that up from my system settings.

I've never done Javascript before (although I do or did Python/C/C++/D/Pascal/AHK), this will be interesting. Great job!

<comment><AUTHOR> Thanks! Hope you can pick up Javascript and add it to your arsenal with Codecademy.

</comment></comment><comment> mkr-hn This has the hidden benefit of being great for review when you forget a concept. I gave up on programming as a trade after almost 15 years of false starts, but I do have to dip into code from time to time.

Having this to review with will be handy.

<comment><AUTHOR> yep, that's what we're trying to help with too. just wait until we have some more advanced topics!

thanks for checking us out.

<comment> mkr-hn License this out for things. It can do anything a textbook can do better. Do you know how much easier math would be with this? So much potential. There's your monetization model.

<comment><AUTHOR> Thanks for the suggestion! Keep an eye on the site ;)

</comment></comment></comment></comment><comment><USER59> Hey great job! (And just in time for whyday) Intermediate coders might also want to try this similar site I recently found: <http://nathansjslessons.appspot.com/>

</comment><comment><USER60> awesome i proposed a similar idea yet a different way of teaching one of the popular web languages at a Start-Up Weekend.

Most there dont know how to code, but none too surprising none were interested in creating a service to learn how to code. I'm not bitter that my idea wasn't selected as these non-coders wanted to create a fashion site or the AirBnB for restrooms (HA) :)

Well Im going to get started on that idea I proposed a few months ago. Besides this Ive seen some other things popping up that show a real need for such a service.

My wish for your site is to have a log in option so I can save my scores and it remembers what I did with each lesson.

Good luck!

<comment><AUTHOR> good luck with the idea! looking forward to seeing how it develops and thanks for checking us out.

<comment><USER60> cool be on the look out for <http://tymecrunch.com> \- nothing there just yet. But were working on it now locally :)

</comment></comment></comment><comment><USER61> I'm a bit grumpy that the site kills my meta key (command, on OS X 10.7) when focus is in the "terminal", so I can't open new tabs or pages in my browser via hot-key. (cmd-n; cmd-t) Can't use the clipboard either.

</comment><comment><USER62> I definitely think the hackers of the HN Community should help create lessons for the site, it'd be really beneficial for the non technical folk. I think if more lessons were added it'd be even more powerful.

<comment><AUTHOR> we'd love that! if you have something you'd like to teach, drop us an email - zach (at) codecademy (dot) com.

</comment></comment><comment><USER63> @zds, it's difficult for users of foreign layout keyboards to access certain symbols, for example '@', which on some european keyboards is achieved using alt + G.

It'd save a lot of annoying c'n'p if you could fix this. Cheers

R.

</comment><comment><USER64> A little buggy. I seem to have lost my session and logging in produces an error (Invalid email or password.). Also, after completing the courses, some courses showed as incomplete.

<comment><AUTHOR> Working on fixing user registration and login - we're having issues because of all of the traffic. Try us again soon and everything should be working. Thanks!

</comment></comment><comment><USER65> As an "average" non-programmer I love this. I'm teaching myself to code and this looks like a framework for learning that's perfect. I'll send feedback as I go through the lessons

<comment><AUTHOR> thanks! looking forward to getting it.

</comment></comment><comment><USER23> This is very nice.

Some more informative messages would be helpful. Some errors are genuine errors while others are simply an issue of not typing in precisely what the lesson wants you to type in.

<comment><AUTHOR> We'll fix the messages and errors ASAP. Thanks for the feedback!

</comment></comment><comment><USER66> I like the idea. Did you borrow inspiration from www.tryruby.org ?

<comment><USER67> Perhaps that and <http://CodeSchool.com> ?

</comment></comment><comment><USER68> This is awesome. I really, really like interactive tutorials like this. I do have some programming experience, but being pretty weak in JS I found it educational. Thanks.

</comment><comment><USER69> I am on Linux_x64 and chrome. Can't click the GetStarted button.

<comment><AUTHOR> checking this out. thanks prayag!

<comment><USER70> I am running linux x_64 and chrome and had no problem.

</comment></comment></comment><comment><USER71> Is this affiliated to (or a domain change) of hackercs.com?

Or a new competitor?

<comment><AUTHOR> not affiliated with hackerCS - we love what they do though!

</comment></comment><comment><USER72> Any reason that I simply can _not_ type quotes? Is it dependent on the keyboard layout? I'm using US Alternative International layout, Firefox 7, ubuntu 64-bit.

<comment><AUTHOR> we're looking into this now - thanks for the tip.

</comment></comment><comment><USER73> This is great -- very intriguing so I got pulled in. Was a non-coder myself 6 months ago (still don't consider myself one) and this is great. Thanks for doing it!

</comment><comment><USER74> A 15 year old work experience person I have just ran through this, with no prior programming experience ... seems to have worked very well, grats to the authors!

</comment><comment><USER62> I'm a total noob and was able to complete this and really enjoyed it I think you just need to start adding courses so people can actually start using it a lot.

</comment><comment><USER75> Fantastic - I am going to see how my daughter goes with this (8 years old) - previously has been python which was great - but she could do this on her own.

<comment><AUTHOR> Terrific, thanks Michael. Let me know how she does and if you run into any problems - I'm contact (at) codecademy (dot) com.

<comment><USER75> Well she did pretty well, need to spend more time. The problem is the lure of "moshi monsters" (which I am realising is a social network by stealth) - <USER2> one tab over ;)

It is really fantastic - the subtleties of dealing precisely with a computer (syntax) are often hard to get across, but I like how this eases them into it - but doesn't hide it away with visual programming. One of the greatest pieces of advice I was given before I started programming was that a computer will not tolerate mistakes, fuzzyness, vagueness. It will do your bidding, but no more.

</comment></comment></comment><comment><USER76> Seems like a good app to get beginners started with learning to code. What stack is this built on? What language are you teaching with, is it javascript?

<comment><USER77> They are teaching javascript

</comment></comment><comment><USER78> Nice to see that there is a market for this because I've had an idea for about a year now around an .it domain that I bought last year. Good work

<comment><AUTHOR> Thanks!

</comment></comment><comment><USER77> Lesson 4 "which number" instructions is lacking which name you should use, it should specify the variable name "number" clearly.

</comment><comment><USER79> Would you let me translate it to coffeescript?

<comment><AUTHOR> Would love you to! Drop me an email at contact (at) codecademy (dot) com and we'll get you started. Looking forward to it.

</comment></comment><comment><USER80> Very nice design. You can almost compete with the adult education colleges if you can get certification.

By the way, the design is very nice.

<comment><AUTHOR> thanks!

</comment></comment><comment> mkr-hn Did you wipe accounts? It's not letting me login, and I get "Email not found" when I try to send a password reset e-mail.

</comment><comment><USER81> comparable to: <http://eloquentjavascript.net/>

<comment><USER82> Eloquent Javascript was painful for me. As a beginner, I had so much trouble understanding what was going on.

On the other hand, I've had a great experience with Codecademy, though I haven't spent a bunch of time with it yet.

</comment></comment><comment><USER83> Well done. I like it. I especially like the interface. I hope this idea catches on. Continued success. :)

<comment><AUTHOR> thanks!

</comment></comment><comment><USER84> Hi I have problems running codecademy. Using windows XP, mozilla 6.0. Anybody with advice? Peace

</comment><comment><USER85> It's very addictive. One of the few use cases where I actually enjoyed the game-like features.

<comment><AUTHOR> thanks, max! hoping you'll come back for more.

</comment></comment><comment><USER86> Absolutely wonderful. This is the successor to TryRuby I always hoped someone would build.

<comment><AUTHOR> thanks!

</comment></comment><comment><USER87> Great work - I've got loads of non-techy friends who are looking for an intro to coding.

<comment><AUTHOR> thanks tom! would love if you sent it to them.

</comment></comment><comment><USER88> Have to agree with the sentiment so far, looks and works great!

What are you plans with it for the future?

<comment><AUTHOR> thanks! at the moment fighting fires and working on getting more curriculum up.

</comment></comment><comment><USER62> This is a genius, i'll be doing this tomorrow (not a developer) and will bring feedback.

</comment><comment><USER89> Clearly a good idea... make programming a game. And very good implementation. Nice!

</comment><comment><USER90> That's really kick ass. The rewards (simple numbers/badges) work well for me.

</comment><comment><USER91> I hope you can add Android/Java programming later on. But until then you should probably focus on web languages. Very nice site. When I'll decide to learn Javascript, yours will be the first I'll try. Great name, too. I hope you can expand it quickly. Good luck.

<comment><AUTHOR> definitely in the pipeline. keep coming back to the site to see what's next!

</comment></comment><comment><USER92> Getting Started with Programming: _100% completed_

Please add more courses :D

</comment><comment><USER21> I'll get back with what my 12-year-old brother says about it.

<comment><AUTHOR> Would love to hear it. Shoot me an email at contact (at) codecademy (dot) com.

</comment></comment><comment><USER93> very nice! but I have problems working this on my IPAD, appears you cant type in that box on the virtual keypad...

<comment><AUTHOR> unfortunately the iPad is unsupported at this time. we're working on getting it out the door as fast as possible!

</comment></comment><comment><USER94> Going to share this with my 8-year-old!

<comment><AUTHOR> Terrific. Let us know how your child likes it! feedback (at) codecademy (dot) com.

</comment></comment><comment><USER95> I love it. Well done. And thanks.

</comment><comment><USER96> Very interesting intro to JS.

</comment><comment><USER97> Anyway, you can't beat SICP.

</comment><comment><USER98> lesson 4 part6,"Saving your substrings"---I can't get it! help<comment>~~

<comment><USER99> var three = "your name".substring (0,3)

<comment><USER98> thx!

</comment></comment></comment></comment><comment><USER100> brilliant and beautiful, congratz

</comment><comment><USER101> so easy

</comment><comment><USER102> moar lessons!

</comment><comment><USER103> This pulled me right in... and it has me intrigued and I'm playing around with it. This made me realize that the more you get me using it, and the more you teach me, the more likely I am to come back to you when there's a language I want to learn that I don't already know. Love the jump-right-in setup you have going.

</comment><comment><USER104> Huge mistake to make it free. Huge mistake.

<comment><USER105> I could see it free for the main page and then any other languages they add could have something like...first 3 lessons are free and then you have to pay to unlock more languages or lessons.

</comment></comment><comment><USER106> We are going after the same problem with a different solution - <http://codeacademy.org>

Looks great, looking forward to seeing it develop!

<comment><USER107> Charging $41/hour to learn Rails isn't a different solution.

<comment><USER106> How so? And we're definitely providing much more than just "learning rails."

</comment></comment></comment><comment><USER108> I disagree with this approach. Making things so dumbed down only accentuates the depth of the learning curve. By the time I can write code to do something worthwhile, I'll have gray hair. Just show me a python project that can help me play WOW better and show me what to tweak. By the time I get into it, I'll have learned a lot just by reading the comments in the code - and maybe some hyperlinks to web pages that explain what is going on-e.g. pointers, linked lists,etc)

</comment><comment><USER109> Why doesn't this say right at the very beginning what language you are trying to teach? The tone of the site is incredibly arrogant. What makes you qualified to teach? Have you heard of the Dunning-Kruger effect?

It should be more explicit that this site is teaching Javascript (are you teaching other languages? it is not clear) and it is for complete beginners, and that the site creators make some very patronizing assumptions about the students.

This is like clicking on a link to "poetryacademy.com" and finding a site that is teaching you how to sing the alphabet song.

<comment><USER110> I think it would be more beneficial to the authors if you explained why the tone is arrogant? Also, why do you assume the authors aren't qualified to teach -- why do you immediately assume them to be incompetent by noting the Dunner-Kruger effect (that sounds a bit arrogant to me?)? On the same note, what exactly do you believe makes someone qualified to teach? One more question -- what exactly is wrong with targeting complete beginners? Please explain how that is patronizing -- it is a fact that some people in this world don't have programming experience, are OK with that, and would be happy to learn.

<comment><USER109> It shouldn't be called codecadamey, it should be called javascriptkindergarten.

I think it is arrogant because it is claiming to be teaching how to code, when it is not doing anything of the sort. I think it is supremely arrogant to not even mention that it is teaching javascript specifically, making it sound like you could learn how to code in general from the site, when it covers only the most basic of basic topics, and then covers them wrongly. I think it is taking the wrong approach towards teaching someone how to code, in a manner that only someone who doesn't know how bad they are at coding would do. I think people need to understand that learning how to code takes a long time and a lot of hard work. I think the site does too much hand holding and is way too slow .. it is like saying that if you want to learn how to fly to the moon you just have to practice jumping higher and higher, it is like saying if you want to write the next great novel you should keep singing the alphabet song until you know all 26 letters .. it doesn't work and it's giving false hope to people who are not trying hard enough, making them think that they can put in the little little bit of effort that this site asks of them and they will be able to succeed in learning how to code.

If I had to teach someone programming from scratch, I would definitely start off with some basic theory of computation stuff, get some basic concepts in on what a state machine is, what are the differences between a deterministic finite automata, nondeterministic finite automota, and a turing machine, then with a basic understanding of what a turing machine is, we can get some C in, learn the basic memory model, what is stack and heap, then gain some basic understanding of typing, difference between static types and dynamic types and why it is important to know about types, which makes so much more sense once you understand what is going on with the heap and dynamic memory allocation and so on, then we can go on to the concepts of abstraction, state change, and so on.

<comment><USER110> Few things:

1\. I think you have a good argument concerning how they may seem to be belittling the complexities of programming. Again, I'm interested in seeing where they will go from here... I believe they have a good (early) start, and I believe the worth of the site will be determined by how effectively it can teach anything beyond the very very beginner level.

2\. The site just recently was made available -- it's clearly not 100% complete. HN has submissions of half-complete (or <=MVP) stuff all the time. This, and the fact that there is no business model present, the fact that the lessons stop at a very abrupt point, and the fact that the authors here are so eager for feedback, I believe renders the harshness of your harsher arguments unhelpful.

3\. How you suggest one would teach someone programming from scratch I think would work for very few people (though if done well, I have no doubt it would work for some). I think a majority of people you would try that strategy on, how I am perceiving it anyway, would lead to burn out and people end up hating programming before much time was up. In fact, I believe that approach is one taken so often in school, and look where it has brought us... a majority of people hate math, hate [insert random science subject], and hate [insert nearly any academic field sometimes even including the one they majored in]. How is it that we fail so horribly as to often cause such strong aversions to certain subjects, or rather what we believe are the subjects. I don't believe anyone truly hates math (or any academic subject), they just have a horribly skewed idea of what it is.

<comment><USER109> People hate math because they are cowards and people are cowards because we have math 101 in school but not courage 101 ... I have spent a lot of time teaching myself how to learn, so I agree that current institutionalized methods of education are very flawed. But it's like, life is hard. It's not going to get any easier just because you pretend it's not hard.

<comment><USER110> Teach a courage 101 course?

I agree with this for the most part, but I don't agree that being a coward is a natural state unless taught otherwise. I believe it results from the mindsets we form based on what we perceive societal values to be. Parents/peers/culture seems to value good grades, or simply looking good at whatever you're doing, and being accepted by following the norm -- superficial, damaging, and mostly pointless things -- and as a result, those things become priority for people over learning. If we stop pretending those things matter so much, and put more focus on the beauties of learning and curiosity and discovery and exploration, things would be different.

When and how did you learn to become such an autodidact? Have you been one your entire life? Or when did you realize the system can't and shouldn't force learning upon you and you have to take it into your own hands? I made some of these realizations not all too many years ago, and am fascinated by how others have made the transition.

Thanks, your views I find interesting...

<comment><USER109> I am not saying that being a coward is a natural state, rather I am saying that courage can be taught.

If you want to work in software engineering you have to teach yourself pretty much everything -- identifying what you need to learn is a big component.</comment></comment></comment></comment></comment></comment></comment>


Video of automated podcar system planned for Indian city - <AUTHOR> http://www.youtube.com/watch?v=9tHMWbfLcPE&feature=youtu.be&a

<comment><AUTHOR> Oh, and by the way: I was the designer of this system (although I no longer work for the company that is implementing it), and am happy to answer most questions about it.</comment>


To "deselect" is how you make something "unselected" - <AUTHOR> https://english.stackexchange.com/questions/18465/unselect-or-deselect <comment><AUTHOR> Oh wait.. unselected might be for items that have never been selected... aw man.

Well, I was looking for the verb form anyway. "Deselect" it is!</comment>


Stripe allowed customer to try 9 stolen credit cards and charged back store $500 - <AUTHOR> https://www.reddit.com/r/Entrepreneur/comments/hn78xm/stripe_allowed_a_customer_to_try_9_stolen/ <comment><USER2> If Radar did even a tiny bit of what it's advertised to do, it seems like this shouldn't have happened.</comment>


French historian detained for 10 hours at Huston Airport [fr] - <AUTHOR> http://m.huffingtonpost.fr/henry-rousso/muslim-ban-donald-trump-etats-unis/ <comment><USER2> This is nothing extraordinary: it occurs all the time (there are a lot of reports during Obama). It occurred to me in 1986.</comment>


Ask HN: Effect of Brexit on DEV Jobs in UK? - <AUTHOR> Given Brexit, over the next few years, in London:
1. What will happen to DEMAND and SUPPLY for dev roles?
2. What will happen to the CONTRACT and PERM markets for dev roles?
My opinion: investment dearth will lead to decreased DEMAND overall and slow CONTRACT market, as business focuses on core and prunes more speculative investment. PERM / CONTRACT ratio increases as cut to commercial property prices and labour costs tempts foreign companies to set up ops in UK. Foreign pros in UK leave for a better deal elsewhere, net migration decreases for similar reasons (~20% cut to GBPUSD, 1% inflation...). <comment><USER2> IMO: It had no effect on high end tech jobs.

From the recruiters I talked to recently, it had no effect. From the interviews I had recently, it had no effect. Still recruiting and expanding.

One of my past company recently interviewed with journalists to announce that they are extending their operations and opening a new office in the USA. The next day the news published an article "<company> is leaving the UK after the Brexit". I'll let you imagine the surprise when we discovered the article the next morning. That's just 100% wrong and misleading.

I'm now willing to extrapolate that 90% of brexit announcements are fake invented by journalists for sensationalism. Nothing is happening, really.

\-----

Regarding the GBP exchange rate.

As in all the major cities in the world, most of the income goes to pay the rent. The rent is in local currency, unaffected by USD-EUR-GBP rate.

We might hit a +10% on food price (and gaz) in a near future. It might get harsh[er] for big families and low income jobs, it's fine for people with good salaries. (Not to mention free catered lunches at tech jobs :D)

<comment><USER3> "We might hit a +10% on food price (and gaz) in a near future. It might get harsh[er] for big families and low income jobs, it's fine for people with good salaries."

However, those people with good salaries whilst seeing inflation running at 10% will likely not see a wage increase to match. And they may also have just bought a house...

At the same time as 10% inflation, the BoE may eventually have to raise interest rates to try curb capital flight from Sterling and make it attractive again.

Higher interest rates & stagnant wages lead to people not being able to keep up with mortgage payments (which have just increased and so has everything else but their wage).

This leads to defaults on mortgages at the same time as house prices are falling because people cannot service such large mortgages at 10% interest.

That will hurt a lot of people with good salaries in the short term.

<comment><USER4> 10% on food and fuel is not the same as 10% inflation overall, though. Rates are likely to remain low, no more than 1-2%. A bit of wage inflation coming through would be good but unlikely. I wouldn't panic just yet. There's still time for the financial services industry to get the message through to their friends in the conservative party that this is a bad idea.

<comment><AUTHOR> As in over-turn the verdict? Yes, I wait with abated breath to see how the court will rule RE article 50 invocation, but thereafter there will be a deal within 2 years, whether we'd like it or not...

<comment><USER4> Article 50 has not yet been triggered, and if the court case concludes that Parliamentary consent is required _or_ the other court case concludes that it would contravene the Good Friday Agreement, then it probably won't be. The referendum itself is not binding.

</comment></comment></comment></comment></comment><comment><USER5> It will be interesting to see consequences of referendum once BREXIT actually happened (the procedure is not yet started).

In my opinion UK will get similar deal to Switzerland. I would not base my forecasts on short term fluctuations in GBP or in assumptions that migration will decrease. Both will depend on actual deal UK will get with EU and I'm quite sure this deal will be a win-win for both. Because both EU and UK will get better by continuing to trade together than not to. UK is a major consumer for EU market and this won't change - and it's in EU best interest to make sure this won't change.

<comment><USER6> It took Switzerland _decades_ to get all those trade deals and bilateral agreements. Without the need to negotiate lots and lots of agreements with other countries at the same time.

The UK will wake up very soon, very hard to a bleak reality.

<comment><USER5> I'm not sure what would make UK not to get such agreements especially if both EU and UK are interested in getting them. What politicians are saying is a bit off from actual business and it's in everybody's business to keep trading and making money :-)

Anything other than that - I would rather prefer not to make bold statements that `UK will wake up` etc. until I actually see the deal (ignoring all white noise produced by politicians and media).

<comment><USER6> A deal like Switzerland? Really?

Because Switzerland has to let EU citizens in to live and work there. Not quite as freely as if they were Schengen members, but still.

<comment><USER5> The whole point of immigration was not that immigration itself is wrong but that decision weather and who to let in was made outside UK. As you can see Switzerland has got fairly nice model where they attract highly skilled workforce and there is nothing wrong about trying to get the same model in UK. And I'm really cheering Brits to get there. Knowing their pragmatism they will.

<comment><AUTHOR> ... unfortunately the labour pyramid is such that the unskilled workers are required in much larger numbers than the skilled workers. If they are not imported then the wages would need to go up very substantially before those from the UK would be willing to wait tables, flip burgers, etc. Labour cost inflation from bottom up kills margin.

</comment></comment></comment></comment></comment></comment><comment><USER7> Software developers can easily "export" (i.e., take remote jobs for foreign companies), and a cheaper pound makes them more attractive. I doubt many tech jobs will move to Berlin -- from what I've heard, despite the hype, London's tech scene is much bigger and more developed.

The big threat is from finance. Tech salaries are held up by the huge numbers of devs working for banks, and that would change if there's a major impact to the finance sector. Apparently the City is pretty robust, though, and Euro- related business is only a small amount of their activity.

<comment><AUTHOR> > ... Euro-related business is only a small amount of their activity.

I'd doubt this since the clearing of Euro denominated derivatives are done in London.

> Software developers can easily "export" (i.e., take remote jobs for foreign > companies)...

I'm not sure about this simply because the salaries in London are so much larger than everywhere else in the UK. You'd think other regions would be able to export to London given the huge disparity but they don't. Are you sure this is true for other cities?

</comment></comment><comment><USER3> "(~20% cut to GBPUSD, 1% inflation...)"

IMO we are about to hit much more than 1% inflation with the devaluation of our currency.

Think how much petrol has gone up, food is about to go up, imports are going up etc.

We will have much more than 1% inflation annually next year I think, and I don't think wages will keep up. That is if things go ahead as they currently are.

On the flipside this makes Devs in the UK much cheaper, and if we have the combination of inflation and stagnant wages then the housing market will collapse, which will eventually make UK more competitive.

<comment><AUTHOR> What do you think will happen RE Q1 and Q2 over the next few years? Net increase DEMAND for DEV? What about SUPPLY of dev?

<comment><USER8> I think demand will be less affected in the short term as EU nationals might be starting consider offers outside the UK (uncertainty + low GBPEUR).

My anecdotal data has a count of 2 people having accepted offers to leave between the Brexit vote and now, both citing Brexit as a reason. Partly from the feeling rejected side, partly from the pragmatic point of view.

</comment></comment></comment><comment><USER9> It may be worth distinguishing tech vs. financial tech. Tech will benefit from lower exchange rate. Also tech is quite fungible and crosses boundaries easily.

Financial tech is different. 1) Banking is a huge part of London economy and London is a big part of the UK 2) Financial Tech is very dependent on banking 3) Banking in London in the past has huge structural advantages as a bride/conduit with English language, proximity to US markets and no barrier to the rest of Europe) which it is going to loose. London's European organizations will either split or wholly shift to other locations (Paris, Frankfurt and Dublin).

As financial tech dominates particularly in the UK there will be a negative impact. To what extent it is cushioned by lower immigration remains to be seen. Certainly not in the short term.

</comment><comment><USER10> London's tech industry relies heavily on immigration, as well as easy access to other EU markets. I'm afraid we'll see a big shift to Berlin and other places.

I say this as someone who'd only reluctantly relocate from London, but I can't see how the tech industry will stay afloat, given recent developments.

</comment><comment><USER11> (living in London for 5 years, Non-British / EU citizen)

Took me 10 weeks to find a new opportunity (recently) applied for permanent and freelance/contractor/contract roles.

Comparing with the previous years, where it took me less than 2 to 5 days, there's a difference.

Housing has never been so expensive & the currency never been this low - during the period I've lived here.

Contracting - some companies stopped paying better for overtime work: Weekends, bank holidays are the same rate and not 1.5 or 2 units.</comment>


Cable boxes use more power than the fridge - <AUTHOR> http://money.msn.com/saving-money-tips/post.aspx?post=557278e9-fd30-48e3-aa8b-da82864b9c43

<comment><USER2> I find that really hard to believe. I mean, there's far too many variables to measure that accurately. I mean, this hypothetical set top box could be in full swing recording three programmes, while the fridge is at optimal temperature and has gone into standby mode. (fridges are efficient like that).

Or, whoever took these measurements could simply have done it wrong.</comment>


CloudFlare helps MoogMusic.com survive the Google.com doodle search traffic - <AUTHOR> http://blog.cloudflare.com/moog-music-staying-online-when-google-doodles

<comment><USER2> ... and yet I've seen CloudFlare cache fail many times (like a couple days ago, a story on HN front page about airplane bathrooms having ashtrays: <http://news.ycombinator.com/item?id=4005906>).

Still a great service though, they would be big someday.

<comment><USER3> I don't think it's a CloudFlare issue. Rather, people set up CloudFlare and don't properly configure it. Hence, CloudFlare passes most of the requests on directly (no caching-only rules), server goes down, and then the cached pages expire because they didn't configure the cache expiry dates on their web server.

<comment><USER4> In my case (the bathroom ashtrays), Cloudflare hadn't had time to cache the HTML part (they normally only cache the static content, then later suck in the dynamic part to serve in the event of failure).

After I set up a page rule to explicitly cache and serve the entirety of the bathrooms page, things went very well. Or at least I could serve a lot more people.

My blog is hosted on a $20/mo VPS and is definitely not set up to serve that many people at one time. If I had been using a blog software that was more lightweight and where the front page wasn't nearly as large, and I was using static html files, then it would have been better, but it wasn't ever going to be great.

<comment><USER5> Glad to hear the "cache everything" PageRule did the trick to help out with serving the HTML content. We are hesitant to make that a more prominent option though because caching the HTML can lead to security issues on dynamic sites (or forms that gather any kind of data). It certainly can help tremendously though for high volumes of traffic as long as the caveats are considered as well.

</comment></comment></comment></comment><comment><USER6> When Cloudflare has a high-profile client, they'll often blog about it. It's a smart marketing technique, because they lift on the publicity around the client.

<comment><USER7> True, but the most important thing is that it _worked_.

This scenario is actually daunting for most small sites: it's four days out, you're about to get tons of traffic, and keep it to yourself :)

Setting up Google-load-capable infrastructure in 4 days is trivial for some you on hackernews, but non-trivial for others.

Cloudflare sounds like a convenient, drop-in solution for when you don't know how to configuring your own reverse-proxy.

<comment><USER8> Cloudflare is much, much more than a reverse-proxy. It is more comparable to Contendo (now part of Akamai), but Contendo charged thousands for what CloudFlare does for free.

</comment></comment></comment><comment><USER9> I'm happy to hear that CloudFare was able to help out in this situation.

I am especially happy because I came to know CloudFare not through HN, but through constantly seeing their failed cache page.

Edit: That sounds really brash, but I sincerely do mean that they have lots of clients that I frequent and if their reliability improves, it will prove to be very valuable.

<comment><USER5> Just as a note -- a site offline page indicates a back end origin server issue in the vast majority of instances. That wouldn't be short coming of CloudFlare though if the back end web server is having issues.

</comment></comment><comment><USER4> I'm very happy with my experiences with CloudFlare.

My blog has failed several times under load, despite cloudflare being in front of it, but at no time was it a lacking of cloudflare. It's that they are performing a CDN service which proxies the request for dynamic data back to the source (which in my case is the majority of the load, since my blog is very image-light).

Once I set up cloudflare to aggressively cache and serve a page under load, the weight on my blog's VPS was better (the load was down from 70 on a 2-core machine, and the I/O wait dropped from 95%).

Cloudflare does what they do very well, and their CEO (<http://twitter.com/EastDakota>) is very, very responsive to requests for help.

I'm glad I'm using cloudflare.</comment>


Ask HN: Does anyone use Phoenix Framework in production? - <AUTHOR>

Phoenix, a framework for Elixir, seems to be very much like rails. Is anyone using it in production? If so, how has your experience been? <comment><USER2> So, disclaimer...haven't used it in full anger (i.e., bet my continuing payment of rent on it), but I think it's got some very good things going for it based on my hobby project.

First, the community support is awesome--every day that I'm in IRC I can get useful help from Chris, and that extends even to somewhat noobish mistakes. As the community grows, and we get more hotshot valley kids who just want a short exit and they've heard about this crazy Phoenix language, this might go away, but for now it's a great time to be in.

Second, the plug system is pretty much everything I liked from Express/Connect middleware. Very easy to setup pipelines and whatnot and setup that sort of layered functionality. Rails didn't do this in a way that I liked, nor did Sinatra--it's really something I didn't know I missed until I was doing Node development.

Third, UTF-8 is a first-class citizen in Elixir. This is something that was clunky and a little sad in Erlang.

Fourth, Websockets are a first-class citizen in Phoenix. No more of the hacky bullshit we've dealt with in other libraries (I'm looking at you, Event Machine).

~

At ElixirConf last year I think a few different companies were looking at switching over, most notably at least one game studio that wanted to use it on the backend (I could be misremembering, so don't hold me to that) for infrastructure stuff.

Personally, I really want to move my company's entire stack over to it barring some compute jobs, but that's a long road to hoe.</comment>


The Single Most Important Career Question You Can Ask Yourself - <AUTHOR> http://www.softwarebyrob.com/2008/05/18/the-single-most-important-career-question-you-can-ask-yourself/ <comment><USER2> An interesting discussion on reddit for the same... [<http://reddit.com/r/programming/info/6jywj/comments/>]</comment>


The One Google Plus Feature Facebook Should Fear - <AUTHOR> http://www.allfacebook.com/the-one-google-plus-feature-facebook-should-fear-2011-06 <comment><USER2> This article is dead on. I already have many google apps open all day and g+ will integrate with those nicely. A friend already exclaimed this morning that the google apps integration is what will kill FB (if that's even possible - myspace still has users). He then set out to move over those he actually cared about on FB to g+.

I especially like default use of groups and how it forces users to think about privacy from the get go. This is very different from my FB experience years ago and why I quit using FB.

<comment><USER3> It's a brilliant strategy, and I'd be very surprised if it doesn't lead to some antitrust litigation.

<comment><USER4> I think it's difficult to make the anti-trust case against Google.

Unlike Microsoft's control of the desktop, people choose to use Google everyday. It would be so very very easy to switch to Bing tomorrow (even easier than choosing not to use Facebook!) but people have chosen not to switch.

Just because you have a lot of marketshare doesn't mean you are a monopoly.

It's also quite easy to say that consumers will benefit from the increased competition with Facebook. This is what anti-trust tries to promote, not restrict.

<comment><USER5> > It would be so very very easy to switch to Bing tomorrow (even easier than > choosing not to use Facebook!) but people have chosen not to switch.

I assume that Bing also offers free e-mail with as many features, a calendar system, an equivalent of Google Reader, etc? Unless it can deliver all of that, it wouldn't be a very easy switch for me - whereas ditching Facebook is literally something I contemplate every time I access it and see the crap that's on my feed.

<comment><USER6> Microsoft has alternatives for mostly everything, including Google Apps if you're willing to switch to Exchange and pay the price for that.

But all these Google products are hard to switch from because they are kick- ass. It's hard for me to switch away, not because Google has me trapped, but because the competition sucks.

You can export all your data from Google and import it wherever you want. I did so with Google Reader (since you mentioned), but I came back to it since it's better than any desktop client I tried.

But this doesn't mean Google has lock-in, unless you extend the definition to include " _being better than the competition_ " and that shouldn't trigger antitrust regulation; and if it did, you could say that the system is terribly broken.

</comment></comment></comment></comment></comment><comment><USER7> Am I being unrealistically impatient, or is the only feature that actually matters the feature that lets your friends sign up? Google+ is a ghost town for me right now and there's nothing I can do to change that.

It's very frustrating. I love the ideas in Google+ and want to use it, but I've got no ability to share or add friends.

<comment><USER8> I had the opposite reaction: At first only a couple of close friends were in my circles, and it felt like a true social site. Even though many of us are miles and miles apart, we were sharing, talking, hanging out and posting. All this without hundreds of relatives, coworkers, ex girlfriends silently watching us like some stalkers from the bushes.

It got even better once i realized that because of the way circles work, this kind of feeling might actually be preserved without much effort on my behalf.

<comment><USER9> I'm actually very excited about this feature. I feel like George Costanza faced with "worlds colliding" when my family, friends, and coworkers were all meeting each other on my wall.

I had to give up the site because I have to keep those lives separate for my own sanity.

<comment><USER10> I was also excited about this feature (and the way it's properly exposed and integrated) until I started thinking about how sharing to a list can get complicated in deceptive ways very quickly. For example: when someone comments on something I shared, how does she know who will see that comment?

I have a more thorough explanation here: <http://news.ycombinator.com/item?id=2714333>

<comment><USER11> G+ posts have a link in the top right corner that says: "Limited" or "Public." If you click on limited, you can see everyone who can see that post.

<comment><USER10> Yes, but that's still a significant amount of friction for something as important as understanding what your social context is. And how many people are really going to understand that that distinction even exists?

I think the real problem is that there's no easy mental model for the way information flows through the system. That's what metaphors are for. A "Circle" is not a metaphor. It's just a brand.

<comment><USER12> The people that don't notice are the same ones spamming their friends with FarmVille invites and there's limited controls for blocking them without disavowing them entirely within Facebook. They're the people that post drunk pics to Facebook in "Everyone" albums without any consideration.

So what if they use + the same way. Ignore them, move them to a quieter circle. And for their benefit, it defaults to a more protective privacy setting than Facebook, especially for pictures.

<comment><USER10> I definitely agree that Circles are better. I don't think they're as good as they could be. I don't think it's that clear for people, even those that are outside the group you cite, where exactly their comments are going. It's discoverable, but it's certainly not immediately obvious. I think privacy usability is really important, you want to make that stuff as easy and intuitive as possible.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> So true. The red notification really hooks you back in.

It's because Google+'s social signal to noise ratio is so much higher than Facebook. I dread the red notifications in FB's upper left corner bc they're usually from some friend of friend's irrelevant spam event/survey/tagging etc. Google+ Circles really filters thats out.

Facebook's mistake was introducing Groups so late. With Circles, users can create Circles AS friends join. I will never retroactively organize my Facebook "friends" into Groups. I will, however, take a little time each day as new REAL friends come to Google+ to organize them to reflect real social structure.

Google 1. Facebook 0.

<comment><USER14> You are actually kind of forced to think about it. If you want to 'follow' someone you can only do so by adding him to one or more of your circles. Of course, you can throw all people in the "Friends" circle, but I think given this visible choice not many will do that.

</comment></comment><comment><USER15> This is actually a misfeature -- it's hard enough to avoid procrastinating without having to summon the super-human willpower necessary to avoid clicking your notifications every time you do a simple search.

<comment><USER16> I think you're spot on - Facebook is basically an entertainment destination. If google is trying to become the same thing, they may end up making the search experience worse.

That said, it's not like there's a choice.

</comment></comment><comment><USER17> I think Google's real goal with + is to fight Facebook in social searching.

The fact that it's a different form of social network (more refined imho) and has new features (hangouts, circles) is bonus.

Google's bottom-line success with + will be the mitigation of the Facebook social search threat... anything else is gravy.

<comment><USER10> Circles isn't really new. It's definitely implemented better (exposed and integrated), but it suffers from what I think is a serious weakness: hidden complexity. When you think about it as a broadcast, it's very simple and straightforward, but when someone in one of your Circles starts commenting/talking back, it gets a lot more complicated.

More thorough explanation here: <http://news.ycombinator.com/item?id=2714333>

<comment><USER18> Appleseed has already addressed this. When you comment, a push notification is sent to the group defined the _context_. Actions are not broadcast, contexts are.

IE, Alice posts a blog, which is available to Group A. Bob posts a comment to the blog, and members of Group A are notified (even if they're not on Bob's friends list). Chris, who is on Bob's friends list, but not a member of Group A, will not receive a notification.

<comment><USER10> That's still potentially confusing, though. Bob has no idea who is part of Group A apart from himself. He could probably check, but there's a cognitive load/uncertainty there that equals friction to every secondary action (like a comment).

So there's two problems: 1. Bob might comment on Alice's post thinking he's in his own social context, which is reinforced by the fact that on Google+, he's in his own UI and Alice's post shows up in _his_ Circle; 2. Bob has to consciously check to see what the context is every time he wants to make a comment on Alice's post.

My idea for a potential solution is "Places." Which is through the link I posted above.

<comment><USER18> In Appleseed, you can set a Circle to be viewable by it's members, so it's similar in function to how you describe "Places".

<comment><USER10> It's the same in Google+, but you still have to consciously check. My point being that it's not really the functionality that matters per se, it's the metaphor. Having the explicit metaphor gives you an immediate understanding of how the information flows. Having an optional setting checked does not.

</comment></comment></comment></comment></comment></comment><comment><USER19> Shameless Plug: I just wrote a chrome extension that adds that little red notifications box to the browser, so the persistence of Google+ is unavoidable :) <http://news.ycombinator.com/item?id=2716053>

<comment><USER20> Funny, I did the opposite. I wrote a little chrome extension that hides the little red notification from the google toolbar so it won't bug you at all: [https://chrome.google.com/webstore/detail/ogcfegjiehdakiogch...](https://chrome.google.com/webstore/detail/ogcfegjiehdakiogchpnllekccphhebd)

</comment></comment><comment><USER21> The black bar at the top of Google can be extremely distracting when I try to do work-related searches. I think their core product can suffer if they try to make this a game dashboard, bombarding users with these notifications.

</comment><comment><USER22> The reason I think Google+ has a good shot at being successful boils down to the fact that its simply a better product. Not to disparage facebook and all the brilliant people working there, but the fact remains that it was first started by a few people out of a college dorm partly on a whim.

On the other hand, google+ has the might of one of the web's most powerful and innovative companies investing tons of R&D into the psychology and science of human friendships behind it. The fruits of all this research are plain to see in everything from the way it maintains circles to the implementation of hangouts. Ultimately, its just a better product. Not that it guarantees success, but it does a good chance at it.

</comment><comment><USER23> I am getting tired of reading all about it and not being able to actually just use it :/

</comment><comment><USER24> I still think this is too little too late especially if Google+ is aimed at people under 30, most of that crowd is mobile and smartphones seem to be the way everyone in that group prefers to communicate not sitting at their desktop computers.

Maybe Baby Boomers will like it over Facebook or not at all for either, if it's aimed at a younger crowd I can't see it working unless as stated it's forced upon people.

With iPads and other tablets and mobile devices becoming more powerful with bigger and better screens I think a stripped down mobile social network app would be the best way to attract attention or a completely different concept.

<comment><USER6> [https://market.android.com/details?id=com.google.android.app...](https://market.android.com/details?id=com.google.android.apps.plus)

<comment><USER24> Yeah I saw that and downloaded it but no invite.

It looks good and has some interesting features such as 'nearby view' similar to Facebook Places, the instant upload looks convenient and dangerous, is Huddle just Google Wave mobile light?

At least it looks like they are aware the mobile aspect is important.

</comment></comment></comment><comment><USER8> How about social search? Sparks has a huge potential, doesn't it? Facebook's greatest strength is its huge social graph. However, they still didn't create a really valuable social search.

Facebook can easily mimic google circles. But, who will be better at combining search and social to add some new value to both?

And hangouts? It could be quite hard for someone to make a good implementation, and still have a huge user base as google.

Anyway, circles seems like the easiest feature to implement for the likes of facebook. Good social search, and group video chat, this might be more difficult (facebooks classic chat isn't even working most of the time).

</comment><comment><USER25> I wouldn't be surprised to see a really basic version of Office 365 integrated into Facebook as a response to this. There's already an experiment of sorts at <http://docs.com>

</comment><comment><USER26> So if you're Microsoft in 1999, you bake it into Windows.

If you're Google in 2011, you bake it into search.

All you do is make your core product heavier. The thing you wanted to kill doesn't go anywhere. It hardly notices what you did: <http://scripting.com/stories/2011/06/28/googleYawn.html>

</comment><comment><USER27> The other trump card: Chrome. Bake the Google bar in and Facebook is in a world of hurt.

</comment><comment><USER12> Duh. Click around Google after being in Google+. Your full account loads into the interface, it's very apparent that Google+ is the "next version of Google". I assume that eventually the "+" moniker will be dropped and it will simply be "Share with your Google Circle", etc. They say they're integrating it into their products... I think it's the other way around.

Look at how Gmail contacts are treated in Google+, they're relegated to a stopgap. Look at the privacy settings for various fields in your profile - they default to sharing with your Gmail Contacts and once you chose a circle, you never have any context of Gmail Contacts anymore.

I love unification and data aggregation, especially with Google's Data Liberation efforts and the export they already have for taking your social data (potentially elsewhere).

<comment><USER28> The context with Gmail is exactly what got them in trouble with Buzz. People think of e-mail as a very private tool, as opposed to a social network where things are not exactly private.

<comment><USER29> true, but with Buzz, everyone was added by default. it sort of sprung up out of nowhere, with everyone rushing to shut it down (myself included). with this, it seems that the privacy can be maintained (at least the feeling) with circles.

</comment></comment></comment><comment><USER30> Add to that the frustration that the thousands of facebook developers feel with the never ending changes and broken documentation. Btw, i believe Zynga _is_ tied to facebook via some agreement. I d really like to know more about google's plans about its platform.

</comment><comment><USER30> I 've just had an interesting discussion with a colleague who feels extremely annoyed when she sees the black social bar when she searches on google. She is now logging out of gmail when searching on google. I fear this may cause a major backlash over privacy, and it would be better for google to make it easy to turn off social features for search.

</comment><comment><USER31> Too bad Google sucks. Otherwise their service might be considered.

As it is, I can't wait for it to die like Google Wave. More worthless web apps from Google will come to fill its place.

<comment><USER32> Could you elaborate on why you feel Google sucks?</comment></comment>


Dead Wrong: How Psychiatric Drugs Can Kill Your Child - <AUTHOR> http://www.cchr.org/videos/dead-wrong.html <comment><USER2> Flagged -- cchr.org is a scientology front organization.

The fact that they're trying to infiltrate here is something we should be concerned about.</comment>


Piracy uses 24% of all bandwidth - <AUTHOR> http://m.screendaily.com/5060528.article

<comment><USER2> That's cool and all, but are the pirates really watching that much Netflix on their boats. How do they even find the time, what with all the looting, and the pillaging and the parrot training and whatnot.</comment>


List of webapp needs from Internet users (includes demographics) - <AUTHOR> http://pickfu.com/OJPX5X

<comment><USER2> Most of them just needs a website that teaches them how to use the search engines.

</comment><comment><USER3> _A34 . I would like to have a mini 3D avatar of myself on the web that would have all my body parameters and "go shopping" to most online stores, try on clothes, shoes, accessories before I buy them, so that I could see exactly how the looks would be._

That actually sounds like a pretty cool idea.

</comment><comment><USER4> The income bit is the only interesting part.</comment>