Crockford on JavaScript - Volume 1: The Early Years
YUI Library10 HN recommenders · recommended in 10 months, 2013-2022
252K views · 15 years ago · lecture · evergreen
Douglas Crockford's first Yahoo lecture puts JavaScript in historical context. He traces the language's structure and quirks back through the early decades of computer science and programming language history.
HN repeatedly recommends the Crockford series as a must-watch history of computing and programming languages, and as a way to learn to think in JavaScript.
1:03:48JavaScript: The Good Parts
Google TechTalks
589K views • 17 years ago
1:06:46Crockford on JavaScript - Section 8: Programming Style & Your Brain
YUI Library
111K views • 14 years ago
33:52Nordic.js 2014 • Douglas Crockford - The Better Parts
Nordic.js
73K views • 12 years ago
49:26Douglas Crockford: The JSON Saga
YUI Library
81K views • 15 years ago
2:16Why We Should Stop Using JavaScript According to Douglas Crockford (Inventor of JSON)
CultRepo
737K views • 3 years ago
52:34The Next Programming Language - Douglas Crockford - code::dive 2022
code::dive conference
55K views • 3 years ago
54:27Douglas Crockford: Monads and Gonads (YUIConf Evening Keynote)
YUI Library
67K views • 13 years ago
49:47Monads and Gonads
Google TechTalks
148K views • 13 years ago
1:04:16Simon Peyton-Jones: Escape from the ivory tower: the Haskell journey
Churchill College, University of Cambridge
170K views • 9 years ago
1:10:01Before Flutter | Rubber Duck Engineering | Episode #100
RubberDuckEng
5K views • 4 years ago
13:48The Joy of Programming in Jai - Part 1: Hello World
Nuno Afonso
36K views • 6 years ago
16:48Yesterday's Computer of Tomorrow: The Xerox Alto │Smalltalk-76 Demo
Computer History Museum
38K views • 8 years ago
43:14Anders Hejlsberg and Lars Bak: TypeScript, JavaScript, and Dart
DartlangTV
14K views • 13 years ago
17:26Lecture 1 | Programming Paradigms (Stanford)
Stanford
1.2M views • 18 years ago
52:01Why Static Typing Came Back • Richard Feldman • GOTO 2022
GOTO Conferences
157K views • 3 years ago
28:00APL demonstration 1975
Imperial College London
111K views • 13 years ago
3:32:50JavaScript: Understanding the Weird Parts - The First 3.5 Hours
Tony Alicea
4.2M views • 11 years ago
56:36GopherCon 2014 Opening Keynote by Rob Pike
Confreaks
38K views • 12 years ago
1:07:22Invited Talk - Guy Steele
ClojureTV
39K views • 9 years ago
18:55[JSConfUS 2013] Tom Occhino and Jordan Walke: JS Apps at Facebook
JSConf
45K views • 13 years ago
16 comments from Hacker News
A great summary, from someone who was influential in web technologies, can be found in this series "Crockford on JavaScript": ▶ this video (context: link )
The innovation dynamics in the software industry are (have been) really different than in these fields IMHO. But there are some similar historical precedents. Fourier's work was rejected in his time because Lagrange wouldn't adopt his approach to mathematics. This video is a great retrospective on the evolution and adoption of programming languages / paradigms: ▶ this video
I didn't watch the whole serie yet, but the first two are pretty solid and still fun. The first part doest not cover JS at all, but is rather a brief history of computing. Crockford on JavaScript - Volume 1: The Early Years ▶ this video
I'm in the same position as you. I realised I was still writing spaghetti code that relied heavily on DOM manipulation with Jquery. I am currently learning how the language has evolved and the following has been helpful — 1. link 2. ▶ this video (videos, watch all of them) 3. link 4. link Hope this helps :)
> why should a protocl like telnet be relevant today A lot of software uses "telnet" as in TCP sockets with \r\n and ASCII encoding. That's all telnet is and that's how a lot of data is shifted around all the time. > To learn from its mistakes? Telnet wasn't a mistake. It was an obvious step from terminals via RS232 to terminals via TCP. Also, telnet is everywhere. If you went into research and someone said "just hook into the telnet stream for $SENSOR" and you said "What's telnet" that wouldn't end well. > No, that's why you take design classes that you seem to dislike. No one in their right minds would call telnet, sending text over TCP, a bad design. It's a bad design for some things, but others it's the simplest way to do things. You can do a lot with it since it is very robust. What can go wrong with a telnet stream? 1) Client/Server drops connection to you 2) ... What else? That's a tenant of fantastic design. > Leaving aside the lack of need to know those ancient things (I say this as a heavy user of vim), you seem to conflate engineering with computer science. I don't conflate it. Everyone in industry does. I'm marketing myself to industry so I will use their terminology. Their terminology associates Computer Science with "The programmer". > There's a lot of CS that doesn't have anything to do with network protocols and UNIX programs I and most places you'd go to work in industry aren't mainly concerned with those problems. Different data structures? Great yea I'd lov
> Yet again, they admitted an important feature was missing. Again, I am not familiar with Java 8 but I suspect their implementation is horribly wrong. Admitting something is broken does not mean it sucks. See this comment: link Also, please read this before you wave it off: link > I have. I guess I have just logged more time in Java than others. Java is probably my most used language and that's saying something as I work as a TA for a Python class, use python for most personal projects, and also use many other languages. Java consumes the most time because it has the most polished toolings and standards for developers. Now they may not always be ovserved but if you stay in your own walled garden everything is all honky-dory. You will never make these mistakes if you follow basic practices in Java's naming conventions. All lower case classpaths, all uppercase class names, lower then cammel function names, etc. You'll never be able to mistake Test() for Test.test() as they are instinctivly different names. > Please tell me how to do it properly. IE, if I have a variable of type Foo that is holding a value of type Bar, how do I invoke the function with Bar instead of Foo in the signature? void something(Foo f) { if (f instanceof Bar) { (Bar-Specific commands) } (generic commands) } Or better yet use your magic want: Abstraction . Wave it around and use your super powers to move that functionality into Foo and in anything that needs a specific handling of that function, over
I'd strongly recommend putting this link in there: ▶ this video David, if you see this, I'd like to thank you for these talks as they have reshaped the way I think about software development. I've got more from these then my classes at college have given me do far.
Forget about Bootstrap and jQuery, learn vanilla js. Reading Eloquent JavaScript is a good starting point. Once you are done with that, build something and join #javascript @ FreenodeIRC and ask for help when you get stuck on something. The good parts is nice but keep in mind that it is very opinionated, still it is worth reading. There are some lectures by Crockford on youtube too (tl;dr) ▶ this video Also this on OOP link Finally you may want to familiarize with the most common JavaScript design patterns (some are not unique to js) link
The Crockford's lecture about history of web-development (starting far before first computing machines and ending on javascript) is definitely must-watch. It's not so detailed because it's not a book, but gives a good overview. ▶ this video
But programmers don't want better languages[0]. Programmers mostly just want what they already have. You can't overcome that kind of resistance just by saying "look, here's a language that's more fun and modern". Programmers say they want better languages, but good luck trying to convince them to switch to a new language just by its merit. The only tangible benefit of Swift is that it can be used instead of Objective-C for iOS -- which is important for iOS because Objective-C poses an even bigger hurdle by virtue of its unfamiliar syntax. Swift wins on iOS because it competes with a language nobody wanted to learn to begin with. Even as far as familiarity goes, the only thing Swift looks familiar to (based on first impressions) is Ruby, except it uses a more familiar C-like syntax (i.e. braces). While Ruby programmers are extremely visible (especially in startup/valley crowds) there aren't that many of them -- not to mention that some have already moved on to Rust or JS. 0: ▶ this video
Here's a really good introduction to inheritance: link -- a lot of people struggle unless they have a good understanding of how this works. Also, Douglass Crockford (the person who wrote "JavaScript: The Good Parts") has a number of videos that are very useful. Here's the first in a series of eight: ▶ this video -- and if you find that useful, you can check out the rest in the list of related videos.
Hard to say if it's the best, but Crockford series on javascript is just awesome. I highly recommend it. ▶ this video (Browse the related videos to see the others)
or if you prefer watching instead of reading, watch Douglas Crocford talk about JavaScript early years in this talk ▶ this video
For a more accurate, informative and very digestible history of the evolution of programming languages, I urge you to watch this. It really is worth it! ▶ this video
This sort of realization is the first step to realizing that you really shouldn't be writing javascript like java/C++. It makes things feel a lot nicer when you start really thinking in JS. I'd recommend checking out Crockford's "Crockford on Javascript" series for some good intro on thinking about Javascript ( ▶ this video ). Section 3 is where you really start talking about JS. For a good counter-example, check out a lot of google's JS libs (in all their giant module goodness).
Part 1 of Douglas Crockford's On JavaScript gives a really nice history of the many programming languages leading up to JavaScript. Chapter 1: The Early Years : ▶ this video Chapter 2: And Then There Was JavaScript: link