https://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfo...
It may be a perfect time for a revision.
This point is made in the (now very outdated) book "Javascript: The Good Parts," https://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfo.... Crockford, the author, brings you through the best way to write Javascript in 2008.
Related note: I once attended a talk from Crockford in 2010 where he was rather religious about how async code was significantly better than threads. I pointed out that async code is significantly harder to write due to the mess of callbacks, and his answer was quite rude. Now Javascript has async-await, which fixes the madness that comes from callbacks.
[1] https://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfo...
Buried inside JavaScript is a nice small language. And then there is the rest.
Javascript the Good Parts[1] is very solid, albeit a little more advanced and dry. Probably not a beginner book, but one to read after you've built a couple of medium sized projects. I use it as a reference to brush up on certain topics.
You-Dont-Know-JS [2] is a free online book series that is a great reference for brushing up on more advanced topics.
MDN Reference [3]: this is the best documentation out there. Always have a tab open and try reading the actual documentation on how things work. This will be very hard at first but will allow you to become a very strong developer.
I also recommend you avoid https://www.w3schools.com/. Google often puts W3Schools at the top when searching for what a method does, but often times it is out of date or provides technically incorrect information.
[0]: http://eloquentjavascript.net/
[1]: http://shop.oreilly.com/product/9780596517748.do
[2]: https://github.com/getify/You-Dont-Know-JS
[3]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
http://shop.oreilly.com/product/9780596517748.do
Very useful day-to-day and first place I go:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
javascript : good parts - https://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfo...
You can also pick up small gig building more (and better) websites for local businesses. There's always a dumpy restaurant wanting a new website for few hundred bucks. The time you would spend with a textbook / tutorial, you can also consider synchronously apply them to real life commercial use. Also, you know Java and probably a lot of backend / db stuffs... you can bundle the whole stack together and build business solutions too instead of just "websites". Like a simple restaurant POS UI, sends order to kitchen kind of system... again, depending on how much free time you have and willingness to code for little pay just to learn.
JS / Front End Dev is one of the best setup to pair up with small jobs like that IMO.
I can also recommend Douglas Crockford's book JavaScript: The Good Parts http://shop.oreilly.com/product/9780596517748.do
Disclaimer: Never an academia kind of person, I take forever to go through any book. I found myself learn faster when I can go hands-on and fail within reasonable comforts. Now 15+ years into front end, I consider myself doing quite alright...
You can also pick up small gig building more (and better) websites for local businesses. There's always a dumpy restaurant wanting a new website for few hundred bucks. The time you would spend with a textbook / tutorial, you can also consider synchronously apply them to real life commercial use. Also, you know Java and probably a lot of backend / db stuffs... you can bundle the whole stack together and build business solutions too instead of just "websites". Like a simple restaurant POS UI, sends order to kitchen kind of system... again, depending on how much free time you have and willingness to code for little pay just to learn.
JS / Front End Dev is one of the best setup to pair up with small jobs like that IMO.
I can also recommend Douglas Crockford's book JavaScript: The Good Parts http://shop.oreilly.com/product/9780596517748.do
Disclaimer: Never an academia kind of person, I take forever to go through any book. I found myself learn faster when I can go hands-on and fail within reasonable comforts. Now 15+ years into front end, I consider myself doing quite alright...
That's really all you need to get started.
http://shop.oreilly.com/product/9780596517748.do
Can anyone please suggest more good books for JavaScript? - for beginner, intermediate and advanced levels? Thanks in advance :)
I've heard people say good things about this book:
http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
But I've never read it myself.
Once you get a broad overview of the JavaScript paradigm it really helped me to read other source code that people wrote.
There are any number of js frameworks which will probably abstract away most of the headaches you might have, and depending on what you're actually trying to accomplish, you may not need a lot of js at all. If you don't want to use client-side templating, for instance, and there's no reason to, then just skip it. Push as much of it to the backend in the language of your choice as you can.
But javascript, when you need scripting in the browser, is kind of unavoidable.
Also consider http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor... - your expectations from working with other languages may be getting in the way of your writing javascript properly and effectively.
(or do what a lot of other people do and work with a language that compiles to js and you can pretend you live in an alternate universe where you're not working with javascript even though you really are.)
Effective Java — http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp...
POODR (Ruby) — http://www.poodr.com/
Javascript the good parts — http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
There is of course also the gang of 4 language agnostic classic on design patterns http://www.amazon.com/Design-Patterns-Elements-Reusable-Obje...
I think I've listened to every podcast on software engineering radio a few times [2]. The older ones are especially nice because they usually pick a specific topic and cover the high points. I liked that I could listen to it while I was driving, or otherwise not in front of a computer.
It's specific, but Javascript: The Good Parts is probably the most used book I have on my shelf. It has such a perfect amount of usable information in it. It's pretty great. Again, it's definitely worth looking up critiques and counterpoints.
I've also got Introduction to Algorithms, which I use as a reference, sometimes. I switched over to The Algorithm Design Manual [5] after I saw it referenced in an older Steve Yegge post [6]. I read through the intro and it seemed like a book that would be more appropriate from an autodidactic standpoint. I really have no idea if that's going to pan out, since I'm not that far into it, but we'll see, for sure. Doesn't kill me to have an extra algorithms book laying about, though, and I've always got intro to algorithms for cross reference. I've found that I really need to have as many sources available as possible when I'm learning alone. Usually I don't get something until the fifth person describes it from the tenth different angle.
That's most of what I can think of off hand. I really enjoyed The Joy of Clojure [7], though haven't checked out the newer version. Programming Collective Intelligence [8] is a fun book, and is what made me want to go back down the maths route to get more into machine learning.
And of course habitually reading hacker news for an hour or three every night :)
So that's my totally inexpert list of random stuff that I enjoy
[1] http://www.amazon.com/Code-Complete-Practical-Handbook-Const... [2] http://www.se-radio.net/ [3] http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor... [4] http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme... [5] http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/... [6] http://steve-yegge.blogspot.com/2008/03/get-that-job-at-goog... [7] http://www.amazon.com/Joy-Clojure-Michael-Fogus/dp/161729141... [8] http://www.amazon.com/Programming-Collective-Intelligence-Bu...
[1] http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
[2] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
Eloquent Javascript <http://eloquentjavascript.net>.
These two are a great start.
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://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)
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
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
Most people will recommend: http://shop.oreilly.com/product/9780596517748.do
Knowing the [Good Parts](http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...) helps but you just can't keep adding parts that you think may be good.
This authoritative book scrapes away these bad features
to reveal a subset of JavaScript that's more reliable,
readable, and maintainable than the language as a
whole-a subset you can use to create truly extensible
and efficient code.
The other thing that has had a huge impact on my coding style is learning to write tests for everything with Jasmine[2]. Forcing myself to write tests has basically forced me into better design practices, since it's nigh-on impossible to test javascript callback-spaghetti.Doing a couple of backbone.js[3] tutorials may be a bit of an eye-opener too.
[1] http://shop.oreilly.com/product/9780596517748.do
First and foremost, you can write javascript in such a way that your code does nothing weird and only what you intended. A good place to start is still "JavaScript: The Good Parts"[1]. Then I suggest finding some examples of nicely written javascript code on GitHub or some such site. I personally think underscore.js[2] and backbone.js[3] are rather nice.
If you have really given javascript a fair shot, and still strongly dislike it, there are many other languages that compile into javascript, but match its style more closely that Java does. I have been enjoying working in CoffeScript[4]. There is an excellent interactive book[5] that shows the javascript generated by the constructs in the language, which is also a good resource for discovering idioms to do things that are not obvious in javascript, like creating classes. TypeScript[6] and Dart[7] are both interesting languages with syntax more familiar to Java. There are a lot more languages that compile to javascript that I haven't mentioned[8].
It's possible that GWT and Java are the best fit for you, but don't pigeonhole yourself by thinking that they are the only good options out there.
[1] http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor... [2] https://github.com/documentcloud/underscore/blob/master/unde... [3] https://github.com/documentcloud/backbone/blob/master/backbo... [4] http://coffeescript.org/ [5] http://arcturo.github.com/library/coffeescript/02_syntax.htm... [6] http://www.typescriptlang.org/ [7] http://www.dartlang.org/ [8] https://github.com/jashkenas/coffee-script/wiki/List-of-lang...
This thing claims to be meant for "application-scale" JavaScript, and yet doesn't repair even JavaScript's most notorious error?
A suggestion to the authors. Purchase this book:
http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
... then go through the book with a fine-tooth comb, and every time it describes something as a "bad part" or an "awful part", delete or fix that misfeature in TypeScript.
I would repeat the exact same argument for using SASS or LESS instead of CSS. There is no good reason to torture yourself with CSS instead of these better languages. It's very clear that there is such thing as one language that is much better than another in every practical sense.
[1] http://www.flickr.com/photos/raindrift/sets/7215762949290803...
[2] http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
No Starch, Eloquent JavaScript. A Modern Introduction to Programming: http://shop.oreilly.com/product/9781593272821.do
No Starch, The Book of CSS3: http://shop.oreilly.com/product/9781593272869.do
O’Reilly, bash Cookbook: http://shop.oreilly.com/product/9780596526788.do
O’Reilly, CSS: The Missing Manual, 2nd Edition: http://shop.oreilly.com/product/9780596802455.do
O’Reilly, JavaScript: The Good Parts: http://shop.oreilly.com/product/9780596517748.do
O’Reilly, Mastering Regular Expressions, 3rd Edition: http://shop.oreilly.com/product/9780596528126.do
O’Reilly, The Art of SEO, 2nd Edition: http://shop.oreilly.com/product/0636920019091.do
I wanted to learn JavaScript. So I read a book recommended by my old Silverlight-based visualization, and developed the library.
I believe recommendation was successful. The book is Crockford's "JavaScript: The good parts" - http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
http://eloquentjavascript.net/ http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
2. Learn jQuery (a JavaScript library)
http://jquery.com/ http://www.amazon.com/jQuery-Action-Second-Bear-Bibeault/dp/...
3. Learn SQL (the language)
http://www.amazon.com/Sams-Teach-Yourself-SQL-Minutes/dp/067...
4. Pick an implementation
MySQL, PostgreSQL, SQL Server, Oracle
----------------------------------
After that, most application development languages are just syntax. Pick what feels best.
Learn how to use Ajax to tie client-side requests to server-side requests and you're marketable.
Now for a language recommendation. I am a Ruby programmer, so I've got a pretty heavy lean towards that.
Ruby is an exceptionally easy language to learn. There's a book called Learn to Program written by Chris Pine (http://pine.fm/LearnToProgram/) which is an amazing beginning to getting into Ruby.
Past that, there's the Well-Grounded Rubyist by David A. Black (http://manning.com/black2) which covers all the things from basic Ruby up to medium-advanced levels of Ruby). There's also Programming Ruby 1.9 by the Pragmatic Programmers (http://pragprog.com/titles/ruby3/programming-ruby-1-9)
If you want to brush up your Ruby skills, the Ruby Koans (http://rubykoans.com/) are also pretty good.
If you're looking to get into web development (well, you ARE on the internet!) then I would recommend learning HTML and CSS with a book such as HTML 5 and CSS 3 by Brian Hogan (http://pragprog.com/titles/bhh5/html5-and-css3). Then a good JavaScript book, perhaps something like JavaScript: The good parts (http://oreilly.com/catalog/9780596517748).
After learning as much of those as you can, familarize yourself with Git by reading the Pro Git book by Scott Chacon (http://progit.org/), or if you choose another version control piece of software (Mercurial, Bazaar are good, SVN isn't and CVS is (I'm pretty sure) the work of demons).
Ah and before I forget, I've got The Developers Code (http://www.thedeveloperscode.com/) bookmarked for late-night reading and I'm quite enjoying it so far. Quite a lot of lessons in there that I have learned over my brief career, but ones I knew from the beginning.
One more final thing: you are new here and people will treat you like that. Be nice to them and they will be plenty nice back. Respect the fact that they have limited patience and may not wish to answer your questions eternally. They may also have other people asking them questions at the same time you are, or have other things they would like to be doing.
You will get better with practice. You show a keen want to learn, which is a great start. Never give it up. Nothing is "too hard" forever. Persist, and for the love of god, practice.
Very slim, and very good - Javascript: The Good Parts http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
For a C reference, Harbison & Steele is excellent - http://www.amazon.com/Reference-Manual-Samuel-P-Harbison/dp/...
read (and understand) the "learning javascript with object graphs" series http://www.google.com/search?q=site%3Ahowtonode.org+Learning...
use node.js for the backend of your apps to come (start with https://www.duostack.com/ or for a quick hack http://jsapp.us/ )
do not use w3school ressources (they are wrong in critical cases) see http://w3fools.com/
and the most critical tip if you really want to get serious about javascript: learn other programming languages as well, then revisit javascript. one language can never be enough. take the learnings from other languages and apply them to javascript.
oh yeah and: do not seek cross browser compatibility. it's frustrating. (after you are good it will work cross browser anyway (excluding IE)).
http://oreilly.com/catalog/9780596517748
And of course there's all these fancy new things being built on top of it, like CoffeeScript. I just recently realized that it's not the horrible monster I always thought it was.
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.
Books that I've really read and enjoyed:
JavaScript the Good Parts http://oreilly.com/catalog/9780596517748
Coders at Work http://www.codersatwork.com/
Programming Erlang: Software for a Concurrent World http://www.pragprog.com/titles/jaerlang/programming-erlang
On Lisp http://www.paulgraham.com/onlisp.html
The common theme: the authors reflect on the wyhs not just the hows. Programmer personality matters.
http://oreilly.com/catalog/9780596517748/
This teaches you the language. Jquery is just a library on top of that which is fairly simple to learn.
javascript- the good parts could also be helpful http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
www.jquery.com smashingmagazine.com ajaxian.com
all helpful
http://oreilly.com/catalog/9780596517748 http://www.youtube.com/watch?v=hQVTIJBZook
Watch Crockford on Javascript at ydn: http://developer.yahoo.net/blogs/theater/archives/douglas_cr...
Watch @ryah on nodejs at ydn: http://www.yuiblog.com/blog/2010/05/20/video-dahl/ (and the other javascript related videos linked on that page)
http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
* "good" paradigms in Javascript (using concepts of functional programming). I always recommend Crockford's Javascript: The Good Parts - http://oreilly.com/catalog/9780596517748
* Demonstrate some interesting JS libraries such as mootools or Raphaël - http://raphaeljs.com/
* For less technical folks, you could demonstrate new JS graphical capabilities, such as the porting of Quake and the chrome experiments gallery - http://www.chromeexperiments.com/
I really liked _Javascript: The Good Parts_:
http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
Particularly because it's purely about style and code organization, and not about the best way to get consistent DOM access between Gecko, WebKit, and IE.
http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
"Programming Erlang" is a good introduction to both the language and the way of thinking about programs as highly distributed, multi-node systems: http://www.pragprog.com/titles/jaerlang/programming-erlang
"Real World Haskell" is a very fun book, with a ton of good lessons to absorb, and impressive real-world example code. Some of the later material is pretty dense, though, and I'd plan on spending some real effort working through it, especially if you haven't used any similar languages before. (I've done SML, Lisp, and Prolog, and I still had to work hard to understand parts of RWH.) http://www.realworldhaskell.org/blog/
HTML: http://www.w3.org/TR/html4/ http://www.sitepoint.com/books/html1/
CSS: http://www.sitepoint.com/books/cssdesign1/ http://www.css-discuss.org/
JS:
See this timeless rant for a tiny example (countering all the bad advice you see on a trivially easy feature): http://youngpup.net/archived/popups.html
You may wish to do some JS dev without a framework just to get a taste for the terrible truth. Then get jquery or one of the other excellent tools.
JS quirks: http://www.quirksmode.org/
Books: http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor... http://www.amazon.com/Pro-JavaScript-Techniques-John-Resig/d...
Also, some good tools: wget curl firebug wireshark (neé ethereal) yslow
webby python code libs: http://codespeak.net/lxml/ http://code.google.com/p/httplib2/ http://code.google.com/p/simplejson/ http://labix.org/python-dateutil
Relevant validators: http://validator.w3.org/ http://www.jslint.com/ http://jigsaw.w3.org/css-validator/ http://feedvalidator.org/
One of the most clear, logical, well-written programming books I've ever read. Douglas Crockford covers more ground in 153 pages than I ever thought was possible in a tech book. An absolute gem.
http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor...
---
I like Javascript. Not because it is elegant, performant, or a well-designed programming language, to the contrary, it is one of the programming languages that are full of foot guns. I like Javascript because it is one of those PLs where you have no problems with finding the libs you need, can get things done in a very fast & efficient manner (once you know your stuff), and so on.
I try to avoid side effects as much as possible and JS is not the best PL when it comes to it, but the thing is it is elastic enough that you can still write the way you like to work. I can still follow the "functional core imperative shell" mindset, and use the "good parts" [1] of the language.
I also like Go, because of its simplicity. And find the mindset that is provided by functional programming languages interesting.
[1]: https://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfo...