Found in 16 comments on Hacker News
illamint · 2014-02-06 · Original thread
Surprised to see no mention of "JavaScript: The Definitive Guide" (http://shop.oreilly.com/product/9780596805531.do). It's a big, heavy book but it's what really pushed me to a higher level of JS understanding.
Dimitris · 2013-09-07 · Original thread
If you have basic understanding of JS, I think you will be fine. The learning curve for AngularJS is steep so you are going to spend a lot of time going over new material.

As soon as you are able to write a basic program in JS then jump right to AngularJS.

Tkae a look at this book as well. http://shop.oreilly.com/product/9780596805531.do It's really helpful.

Your second paragraph is nonsense. Any JS expert should be able to understand every point made in that book, by the very definition of expert.

Your third paragraph is completely sensible however. The Good Parts is horrible if you're a beginner programmer, and I'd definitely recommend against it. But if you have a CS degree or years of programming experience, it should not cause you trouble - it's a great, terse intro to JS that'll get you up and running in no time.

The worst book to learn from is JavaScript: The Definitive Guide [1]. It's unnecessarily lengthy (1000+ pages!) and attempting to learn from that has dissuaded more colleagues from JS than I care to remember.

[1] http://shop.oreilly.com/product/9780596805531.do

nonamegiven · 2013-03-10 · Original thread
Bring a few thumb drives for backup.

In addition to LPTHW and dbond's very complete suggestions:

$ sudo apt-get install python-doc

This is not installed by default. It will install the entire python.org documentation site, probably at /usr/share/doc/python/html/index.html

Decide whether you want to use python2 or python3. Python 2.7 is probably what's installed by default on your linux distro (unless you use Arch). The following is not in the installed docs, it's an external site:

http://wiki.python.org/moin/Python2orPython3

Read PEP 8

http://www.python.org/dev/peps/pep-0008/

$ aptitude search python |grep framework

Pick a lightweight framework or two to install before you leave (unless you've packaged up the repository as dbond suggests). bottle, flask and pyramid come to mind. When in doubt, install it. Don't start off using a framework though, learn the basics of plain html, then css, then javascript, then a lightweight framework (or the framework first then javascript).

$ sudo apt-get install sqlite3

Install a database. sqlite is lightweight and more than good enough for learning, and won't bog you down with learning how to run a database server. Alligators and swamps ...

I wouldn't bother installing a web server, python comes with a rudimentary web server module.

General background on python web programming: (skim it)

file:///usr/share/doc/python/html/howto/webservers.html

The module you'll likely use to play around:

file:///usr/share/doc/python/html/library/simplehttpserver.html

Learn the python debugger, it's rudimentary but very helpful when you're learning.

file:///usr/share/doc/python2.7/html/library/pdb.html

Learn the python REPL, or the interpreter as they call it in the docs.

file:///usr/share/doc/python2.7/html/tutorial/interpreter.html

Install, learn and use a better python REPL:

sudo apt-get install ipython

If you can afford it, Oreilly has some good ebooks.

http://oreilly.com/python/

http://search.oreilly.com/?q=html

http://search.oreilly.com/?q=css

http://search.oreilly.com/?q=javascript

http://shop.oreilly.com/product/9780596805531.do

http://shop.oreilly.com/product/9780596517748.do

If you can't afford it, but you can afford the weight, search for books you like on AbeBooks: (used or internation edition books)

http://www.abebooks.com/

Dive Into Python is available online and downloadable: http://www.diveintopython.net/

Eventually you'll want to know more about sql: http://news.ycombinator.com/item?id=5087439

Learn you a shell:

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

http://www.tldp.org/LDP/abs/html/

Install vim and emacs and decide which one you like, but any simple arrow-key-based editor that comes with your desktop is good enough to get started.

Install git, eventually you'll lose some work and you'll see the light. Just go real basic with git if you haven't done much source control before. Don't get bogged down in learning git, you want to learn python and web programming. As you go, you'll eventually want to know more; you'll know when that is.

$ sudo apt-get install git

http://git-scm.com/

http://jk.gs/everyday.html

Appropriate first web projects would be any of the example projects that come with the lightweight framework docs.

Appropriate first python-specific projects would be the same, in whatever python tutorials you like.

Appropriate next projects would be whatever catches your interest as you're going through all of the above. Keep a notebook/file of project ideas. Actually that would be a nice first project right there, a simple web app for a project notebook.

EDIT: Also, learn to rely on the man pages.

$ man man

$ man bash

$ man python

$ man -k python

$ man woman

No manual entry for woman

aptsurdist · 2013-02-25 · Original thread
Yeah do it! I say it's totally realistic. I followed a similar path as I didn't really learn software development until after college, and it has turned into a great career for me. I would recommend starting with javascript, mostly because you can do so much with it so quickly. Here are some javascript related tips:

Learn some js fundamentals, but I would learn jQuery at the same time and write some fun code as you go to keep things interesting. This site's good for a quick start: http://jqfundamentals.com/. Or if you want the textbook approach: http://shop.oreilly.com/product/9780596805531.do This should also be a great read, though I've only read snippets so far: http://www.amazon.com/Secrets-JavaScript-Ninja-John-Resig/dp...

Once you get going, one of the coolest things about learning javascript these days is that it's never been easier to spin up a toy project powered by free out-of-the-box services like https://www.firebase.com/ or https://www.parse.com/.

The other advice I'd give is that, while I wouldn't go too far to play down the importance of learning to code through formal education, I think you can completely teach yourself since you have the passion for it. I'd say do a combination of the two as it fits you. Because at the end of the day, the most valuable thing you can have on your resume is that you've built some cool stuff. And if you're excited about learning to code, you'll find yourself building cool stuff in no time. Well - okay, "no time" really means a lot of hours of reading and coding, but you'll get addicted really fast so it'll feel like no time :) Anyway, good luck!

euroclydon · 2012-10-19 · Original thread
Check out the code in the open source project fabric.js http://fabricjs.com/ . It's written by Juriy Zaytsev who was a maintainer for prototype.js. I find the code useful for learning advanced object oriented JavaScript because:

1) It's self contained. No dependencies on third party OO libraries or frameworks.

2) The code is very readable.

3) It's a canvas library, so it's fun to work with if you're into graphics and visualizations.

4) You'll learn a lot about how many JS projects are built, documented, and tested, if you get it to build and the tests running on node.js.

Here is what I would do:

1) Check out the project and get it building.

2) Read all the files in the util folder. You'll see a lot of methods added to Object and Array.

3) Take a look at lang_class.js: https://github.com/kangax/fabric.js/blob/master/src/util/lan... This is how he does OO JS. It's very similar to John Resig's OO classes: http://ejohn.org/blog/simple-javascript-inheritance/ and somewhat different to prototype's classes: https://github.com/sstephenson/prototype/blob/master/src/pro...

4) Then take a look at the base class: https://github.com/kangax/fabric.js/blob/master/src/object.c... and an inherited class: https://github.com/kangax/fabric.js/blob/master/src/line.cla...

5) Search for instances of the "bind" method, and see how they're used.

Of course, as you're doing all this, you'll need to experiment with simple language constructs in your browser's console to test what you think you know, and you'll want to read some chapters from a thorough JS book like, JavaScript the Definitive Guide http://shop.oreilly.com/product/9780596805531.do

Finally, this is just a personal opinion, but I don't like Crokford's chapter on OO JS. I just don't think it presents your options well. If you decide to write a large project in JS using OO techniques, I think you'd be better off utilizing an OO library, compiler, or framework like TypeScript, Google Closure, Prototype or CoffeeScript, than you would charging forward armed with Crokford's chapter on OO.

telemachos · 2011-04-19 · Original thread
I think newer Javascript books are beginning to add or expand sections on client-side uses and node.js in particular. Two that I know have sections are Test-Driven JavaScript Development[1] and JavaScript: The Definitive Guide, Sixth Ed[2]. The TDD chapter on node is probably already out of date in some respects, the Definitive Guide no doubt will soon be out of date, and both are smaller/smallish. There is also Tom Hughes-Croucher's Up and Running with Node.js[3], which is in progress and available through O'Reilly's open feedback system.

At the moment, blog posts and online tutorials seem to be the way to go, though you have to be careful there too. Node seems to be moving very, very fast, so things will likely require a medium amount of tinkering, even if they were written two weeks ago.

[1] http://tddjs.com/

[2] http://oreilly.com/catalog/9780596805531

[3] http://ofps.oreilly.com/titles/9781449398583/

jdietrich · 2011-01-15 · Original thread
A lot of people are of the opinion that you can pick up a new language very quickly, but I disagree strongly. Being able to formulate a basic program is easy, learning to be fast and efficient and effective is another matter entirely.

Personally, I'd pare that schedule right down. If you don't need a specific language, I'd start by learning the basics with Python. It's clear, readable, comes with a brilliant standard library, is very useful for all sorts of things and is a fairly 'normal' high-level language - what you learn in Python will be very broadly applicable.

Once you can competently write software in Python, the logical and inevitable next language is JavaScript, which is as useful as it is ugly. It's a terrible first language, but it's a brilliant second one, mainly because it's so useful. Obviously there's client-side web stuff, but also servers with node.js, smartphone apps with Appcelerator Titanium, Chrome plugins and a whole variety of other stuff. Javascript is very similar indeed to ActionScript, so you should find it fairly easy to pick up Flash and Air, giving you the opportunity to do all sorts of rich web stuff, develop multi-platform apps with Air or develop for the upcoming Blackberry Playbook.

You'll pick up HTML and SQL by default and while it's worth having a book or two on standby, you'll probably find yourself learning what you need as you need it.

As regards books: http://learnpythonthehardway.org/ http://www.greenteapress.com/thinkpython/

There is no good introductory text on JavaScript, but try: http://oreilly.com/catalog/9780596517748/ http://oreilly.com/catalog/9780596101992/

Now go out and build something.

uptown · 2010-09-23 · Original thread
'JavaScript: The Definitive Guide' by David Flanagan is a great book.

http://www.amazon.com/JavaScript-Definitive-Guide-David-Flan...

LeBlanc · 2010-07-24 · Original thread
W3Schools is one of the best free resources out there. http://www.w3schools.com/

Here are some books that I have used that have been helpful

PHP and MYSQL for Dynamic Websites http://www.amazon.com/gp/product/B0010SEMW8/ref=pd_lpo_k2_dp...

Javascript: The Definitive Guide http://www.amazon.com/JavaScript-Definitive-Guide-David-Flan...

subsection1h · 2010-05-21 · Original thread
> Javascript: The definitive guide

I'm waiting for the 6th edition:

http://oreilly.com/catalog/9780596805531

keefe · 2009-10-17 · Original thread
It sure would, I just don't think there's any reason to mess with low level stuff like XMLHttpRequest objects. For javascript itself, this book is always good : http://www.amazon.com/JavaScript-Definitive-Guide-David-Flan... If you haven't seen O'Reilly's safari yet, that's quite a nice program if you are still in school learning a variety of things.
I rarely use anything other than O'Reilly's"JavaScript: The Definitive Guide, Fifth Edition" (http://oreilly.com/catalog/9780596101992/). It may be a bit advanced if you haven't done much programming before and is probably more of a reference book, but it covers a ton of topics and has a lot of working examples.
edw519 · 2009-07-30 · Original thread
"I want to code the site using PHP and a bit of Java-script, but my skills with these are not exactly up to the job yet."

You must understand that you need to learn 2 separate things and you need to learn them well.

For javascript on the client you need nothing other than the browser you already have and the Rhino book:

http://www.amazon.com/JavaScript-Definitive-Guide-David-Flan...

Learn what's in this book! Go through all the exercises and tutorials. Build something. You can augment the book with tutorials you find on-line (ex. Webmonkey). Then you can View Source on any web page and understand what they did (and what they did wrong).

On the server you will have to find any common LAMP stack and load in onto your machine. The execises and tutorials for php, MySQL, and apache should be enough, although you can find more almost anywhere. Build something! Now that you already know javascript, you can include that in the pages you build as required.

Only after you have a solid understanding of the basics of these 2 technologies should you consider a framework. This can be tricky. If you adopt a framework too soon, you may run into a problem for which you don't understand enough about what's going on under the hood because you never learned it. If you adopt a framework too late, you'll be hand coding everything and will never get done.

Most importantly: you can only learn any of this by doing. Time consuming doing. Books and resources any necessary but hardly sufficient.

Do not fall into the trap of only learning at the surface and expecting to find someone else to do the coding. This does not work for a small software start-up. You must dig deep and learn well.

Thanks for finally posting. I hope you came to the right place. Get to work and keep us posted.

Fresh book recommendations delivered straight to your inbox every Thursday.