118+ Free Resources to Learn Javascript by Tran Ngoc Tuan Anh at Deluxe Blog Tips

Total Page:16

File Type:pdf, Size:1020Kb

118+ Free Resources to Learn Javascript by Tran Ngoc Tuan Anh at Deluxe Blog Tips 118+ free resources to learn Javascript by Tran Ngoc Tuan Anh at Deluxe Blog Tips In the last couple of years, Javascript is always one of the most popular programming languages. In fact, it’s the top programming language on Github, according to the number of active repositories. Javascript is a client-side programming language that runs inside a client browser and process commands on client computer rather than server. But since the born of Node.js, we can run Javascript on the server and build websites or highly scalable web applications and software by Javascript. There is no doubt that Javascript will be the leading technology in the next several years.If you are looking to grow your career, or desire to work in IT field then you can’t miss out on JavaScript. It’s not only a great fun to learn JavaScript, but also a rewarding career with bright future prospects. If you are looking to grow your career, or desire to work in IT field then you can’t miss out on JavaScript. It’s not only a great fun to learn JavaScript, but also a rewarding career with bright future prospects. That explains the huge number of online Javascript courses as well as books, online training videos, and tutorials. Some of them are expensive, some are not. To make it easier for you, we’ve compiled 118+ best free resources to learn JavaScript that will get you started by teaching all essential aspects of JavaScript coding and get you programming instantly. Note that this list doesn’t contain materials for Javascript libraries or frameworks. Only pure Javascript! Browse by category: Click any of the link below Browse by category: Click any of the link below to jump to each category: 1. Ebooks 2. Videos 3. Podcasts 4. Slides 5. Newsletters 6. Coding Styles 7. Further Javascript learning and reading resources 8. Other awesome Javascript lists Ebooks 1. Eloquent Javascript by Marijn Haverbeke (annotated version available) 2. Javascript Garden by Ivo Wetzel 3. JS: The Right Way by William Oliveira 4. Javascript Enlightenment by Cody Lindley 5. You Don’t Know Javascript by Kyle Simpson 6. Sams Teach Yourself JavaScript in 24 Hours by Michael Moncur 7. Learning JavaScript Design Patterns by Addy Osmani 8. Speaking JavaScript by Dr. Axel Rauschmayer 9. JavaScript Succinctly by Code Lindley (need to register a free account) 10. Exploring ES6 by Dr. Axel Rauschmayer 11. JavaScript Allongé, the “Six” Edition by Reg “raganwald” Braithwaite 12. Human JavaScript By HenrikJoreteg 13. Understanding ECMAScript 6 by Nicholas C. Zakas 14. Programming JavaScript Applications by Eric Elliott 15. Javascript in 10 Minutes by Spencer Tipping 16. Mostly adequate guide to functional programming (in javascript) by Brian Lonsdorf 17. Javascript Challenges by Tomás Corral 18. Single page apps in depth by Mixu 19. Building A JavaScript Framework 20. Promise cookbook 21. JavaScript Bible (PDF) 22. JavaScript Essentials 23. JavaScript Fundamentals, Plus a Dash Of JQuery by Nicholas Johnson 24. JavaScript Spessore – Reginald Braithwaite 25. JS Robots (PDF) 26. Managing Space and Time with JavaScript – Book 1: The Basics – Noel Rappin 27. The Problem with Native JavaScript APIs by Nicholas C. Zakas 28. Test Driving JavaScript Book by Rob Levin 29. Javascript by WikiBook Table of content Videos 1. Free Javascript videos at egghead.io 2. Free Javascript videos at LearnCode.academy Youtube Channel 3. Free Javascript videos at Codecademy 4. Javascript – The Good Parts by Douglas Crockford and all of his NEW videos on Youtube 5. The better part by Douglas Crockford (Video 1 | Video 2 | Video 3) 6. The JavaScript Programming Language by Douglas Crockford (Part 1 | Part 2 | Part 3 | Part 4) 7. Advanced JavaScript by Douglas Crockford (Part 1 | Part 2 | Part 3) 8. Securing JavaScript by Douglas Crockford 9. The Definitive Guide to Object-Oriented JavaScript 10. Eliminate JavaScript Code Smells by Elijah Manor 11. Scaling Your JavaScript Applications by Addy Osmani: Part 1 | Part 2 | Part 3 (Slide here) 12. Maintainable JavaScript by Nicholas Zakas 13. Learning to Love JavaScript by Alex Russell 14. Scalable JavaScript Application Architecture by Nicholas Zakas (Slide here) 15. Using ECMAScript 6 today by Dr. Axel Rauschmayer: Part 1 | Part 2 16. JavaScript in 2015 by Glen Maddern 17. What the… JavaScript? Kyle Simpson 18. JavaScript State of the Union by Geoff Schmidt 19. JavaScript for Everybody by Marcy Sutton 20. A JavaScript Web App Deconstructed by Alex MacCaw 21. How to Rewrite Your JS App (at Least) 10 Times by Garann Means 22. Rethinking Best Practices by Pete Hunt 23. Making JS More Learnable by Pamela Fox 24. Develop High Performance Sites and Apps with JavaScript and HTML5 Dr. Doris Chen 25. Javascript from Null by Jeffrey Way Table of content Podcasts 1. Javascript Jabber 2. The Changelog Table of content Slides Slides 1. Learn Javascript – The hard way by Cody Lindley 2. Learning Advanced Javascript by John Resig 3. Maintainable Javascript by Nicolas Zakas 4. High performance Javascript by Nicolas Zakas 5. JavaScript Variable Performance by Nicolas Zakas 6. Large-scale JavaScript Application Architecture by Addy Osmani 7. Large-Scale JavaScript Development by Addy Osmani 8. Scalable JavaScript Design Patterns by Addy Osmani Table of content Newsletters 1. Javascript Weekly by Peter Cooper 2. Echo JS 3. Javascript Live 4. Javascript.com News 5. JavascriptKicks 6. FiveJS (5 minutes of Javascript) Table of content Coding styles 1. Principles of Writing Consistent, Idiomatic JavaScript 2. Google Javascript Style Guide by Google 3. Code Conventions for the JavaScript Programming Language by Douglas Crockford 4. Felix’s Node.js Style Guide by Felix Geisendörfer 5. AirBnB Javascript Style Guide 6. Javascript Standard Style 7. bevacqua’s Javascript style guide 8. Github style guide 9. HapiJS style guide 10. Khan Javascript style guide 11. Mozilla pdf.js style guide Table of content Further Javascript learning and reading resources 1. JavaScript For Cats by Max Ogden 2. Try Javascript 3. How to Learn JavaScript Properly by Richard Bovell 4. Javascript at Mozilla Development Network, especially their A Re- introduction to JavaScript 5. Learn Javascript by Example by Learneroo 6. LearnXinYminutes where X = Javascript 7. Learn JS 8. A Dive Into Plain Javascript 9. Superhero.js 10. JavaScript Module Pattern: In-Depth 11. A Javascript Module Pattern by YUI Team 12. Writing Modular JavaScript With AMD, CommonJS & ES Harmony by Addy Osmani 13. The offline cookbook by Jake Archibald 14. JavaScript Promises: There and back again by Jake Archibald 15. JavaScript Patterns by Shi Chuan 16. WTF JS 17. Learn to Code JavaScript by Playing a Game 18. Patterns For Large-Scale JavaScript Application Architecture – Addy Osmani 19. The JavaScript Tutorial 20. Understanding JavaScript OOP by Sorella 21. Javascript – How Prototypal Inheritance really works by Vjeux 22. Javascript by Douglas Crockford 23. Learn Javascript by Didacto 24. comp.lang.javascript FAQ 25. Learn Harmony (ECMAScript) 26. ES6 Katas Table of content Other awesome Javascript lists 1. Essential Javascript links by Eric Elliott 2. Free Javascript books by revolunet 3. Awesome Javascript by sorrycc 4. Awesome promises by wbinnssmith 5. Lists by jnv 6. JS must watch by bolshchikov 7. Must watch Javascript by AllThingsSmitty 8. Awesome Javascript books by heatroom 9. Awesome style guides by RichardLitt 10. Free programming books by vhf 11. Best resources to learn Javascript on StackOverflow Table of content This ebook is created by Tran Ngoc Tuan Anh and published originally at his blog Deluxe Blog Tips. Anh is an experienced WordPress developer and author of the popular Meta Box plugin. Follow him on Twitter, Facebook or Google+..
Recommended publications
  • Coffeescript Accelerated Javascript Development, Second Edition
    Extracted from: CoffeeScript Accelerated JavaScript Development, Second Edition This PDF file contains pages extracted from CoffeeScript, published by the Prag- matic Bookshelf. For more information or to purchase a paperback or PDF copy, please visit http://www.pragprog.com. Note: This extract contains some colored text (particularly in code listing). This is available only in online versions of the books. The printed versions are black and white. Pagination might vary between the online and printed versions; the content is otherwise identical. Copyright © 2015 The Pragmatic Programmers, LLC. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form, or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior consent of the publisher. The Pragmatic Bookshelf Dallas, Texas • Raleigh, North Carolina CoffeeScript Accelerated JavaScript Development, Second Edition Trevor Burnham The Pragmatic Bookshelf Dallas, Texas • Raleigh, North Carolina Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and The Pragmatic Programmers, LLC was aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals. The Pragmatic Starter Kit, The Pragmatic Programmer, Pragmatic Programming, Pragmatic Bookshelf, PragProg and the linking g device are trade- marks of The Pragmatic Programmers, LLC. Every precaution was taken in the preparation of this book. However, the publisher assumes no responsibility for errors or omissions, or for damages that may result from the use of information (including program listings) contained herein. Our Pragmatic courses, workshops, and other products can help you and your team create better software and have more fun.
    [Show full text]
  • Open Source Used in Quantum SON Suite 18C
    Open Source Used In Cisco SON Suite R18C Cisco Systems, Inc. www.cisco.com Cisco has more than 200 offices worldwide. Addresses, phone numbers, and fax numbers are listed on the Cisco website at www.cisco.com/go/offices. Text Part Number: 78EE117C99-185964180 Open Source Used In Cisco SON Suite R18C 1 This document contains licenses and notices for open source software used in this product. With respect to the free/open source software listed in this document, if you have any questions or wish to receive a copy of any source code to which you may be entitled under the applicable free/open source license(s) (such as the GNU Lesser/General Public License), please contact us at [email protected]. In your requests please include the following reference number 78EE117C99-185964180 Contents 1.1 argparse 1.2.1 1.1.1 Available under license 1.2 blinker 1.3 1.2.1 Available under license 1.3 Boost 1.35.0 1.3.1 Available under license 1.4 Bunch 1.0.1 1.4.1 Available under license 1.5 colorama 0.2.4 1.5.1 Available under license 1.6 colorlog 0.6.0 1.6.1 Available under license 1.7 coverage 3.5.1 1.7.1 Available under license 1.8 cssmin 0.1.4 1.8.1 Available under license 1.9 cyrus-sasl 2.1.26 1.9.1 Available under license 1.10 cyrus-sasl/apsl subpart 2.1.26 1.10.1 Available under license 1.11 cyrus-sasl/cmu subpart 2.1.26 1.11.1 Notifications 1.11.2 Available under license 1.12 cyrus-sasl/eric young subpart 2.1.26 1.12.1 Notifications 1.12.2 Available under license Open Source Used In Cisco SON Suite R18C 2 1.13 distribute 0.6.34
    [Show full text]
  • Javascript: the Good Parts by Douglas Crockford
    1 JavaScript: The Good Parts by Douglas Crockford Publisher: O'Reilly Pub Date: May 2, 2008 Print ISBN-13: 978-0-596-51774-8 Pages: 170 Table of Contents | Index Overview Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. 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. Considered the JavaScript expert by many people in the development community, author Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose typing, dynamic objects, and an expressive object literal notation. Unfortunately, these good ideas are mixed in with bad and downright awful ideas, like a programming model based on global variables. When Java applets failed, JavaScript became the language of the Web by default, making its popularity almost completely independent of its qualities as a programming language. In JavaScript: The Good Parts, Crockford finally digs through the steaming pile of good intentions and blunders to give you a detailed look at all the genuinely elegant parts of JavaScript, including: • Syntax • Objects • Functions • Inheritance • Arrays • Regular expressions • Methods • Style • Beautiful features The real beauty? As you move ahead with the subset of JavaScript that this book presents, you'll also sidestep the need to unlearn all the bad parts.
    [Show full text]
  • Portable Database Access for Javascript Applications Using Java 8 Nashorn
    Portable Database Access for JavaScript Applications using Java 8 Nashorn Kuassi Mensah Director, Product Management Server Technologies October 04, 2017 Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 3 Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 4 Speaker Bio • Director of Product Management at Oracle (i) Java integration with the Oracle database (JDBC, UCP, Java in the database) (ii) Oracle Datasource for Hadoop (OD4H), upcoming OD for Spark, OD for Flink and so on (iii) JavaScript/Nashorn integration with the Oracle database (DB access, JS stored proc, fluent JS ) • MS CS from the Programming Institute of University of Paris • Frequent speaker JavaOne, Oracle Open World, Data Summit, Node Summit, Oracle User groups (UKOUG, DOAG,OUGN, BGOUG, OUGF, GUOB, ArOUG, ORAMEX, Sangam,OTNYathra, China, Thailand, etc), • Author: Oracle Database Programming using Java and Web Services • @kmensah, http://db360.blogspot.com/, https://www.linkedin.com/in/kmensah Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Program Agenda 1 The State of JavaScript 2 The Problem with Database Access 3 JavaScript on the JVM - Nashorn 4 Portable Database Access 5 Wrap Up Copyright © 2017, Oracle and/or its affiliates.
    [Show full text]
  • Json Schema Design Tool
    Json Schema Design Tool Fatherless and noduled Mario rehabilitate her cadies malis palisading and tame morbidly. Undyed Sidney tax alway. Prehuman Raj fribbling presumably and lengthwise, she clotted her cretics saith sneakily. JSON Schema Faker combines JSON Schema standard with fake data generators allowing users to generate fake data that flaw to the schema. Thanks for editing paradigm supports a developer for. Threat force fraud protection for your web applications and APIs. Platform for training, speak is an event will exhibit for our conferences and suppose new business relationships with decision makers and top influencers responsible for API solutions. For a SaaS application we also design and build a normalized schema in order. There myself a command line tool very well exceed a user interface. SSH connections can be established to all supported database systems. You design tool helps you cannot be designed for data for data management for build or erd diagram tool of an initial project. The designer folder template reuse, which you can be designed for new business studio desktop developer portals packed with. JSON, etc. Json tools designed databases is something that is extremely helpful or input element of event tags that it also give you could end of. To be easy, xml tutorial will help you may encode numbers directly from postman in? Use jsonbuddy with which of repeated code itself out in as you can write everything can read. React-json-editor-ajrm json-schema-generator mongoose-schema-jsonschema fluent-schema mock-json-schema simple-json-schema-deref fluent-json-sche. Apis that already have it into xml or create truly connected with your inbox monthly.
    [Show full text]
  • Basic Introduction of Javascript
    JavaScript Primer Basic Introduction of JavaScript JavaScript History • Why (re)introduce JavaScript? o Notorious for being world’s most misunderstood programming language (Douglas Crockford - http://javascript.crockford.com/javascript.html) o Scripting language of the World Wide Web o A very nice dynamic object-oriented general purpose programming language o Java- prefix suggests that JavaScript is somehow related to Java o ECMAScript 3 – first stable version of JavaScript standard (1999) and has remained stable ever since. o We will use ECMAScript 5 (2009) and not ECMAScript 6 (June, 2015) o Unlike most programming languages, the JavaScript language has no concept of input or output. o Browser is most common host environment o JavaScript interpreters found elsewhere – Adobe Acrobat, Photoshop, SVG images, Yahoo’s widget engine, server-side environments as Node.js JavaScript Overview • Lisp in C’s clothing o C-like syntax, including curly braces and clunky for statement makes it look like an ordinary procedural language o JavaScript has more in common with functional languages like Lisp and Scheme: o It has arrays instead of lists, and objects instead of property lists, BUT o Functions are first class objects; it has closures; You get lambdas without having to balance all those parens • Object-Oriented o It has objects which can contain data and methods that act upon that data o Objects can contain other objects o It does not have classes, but it does have constructors which do what classes do o It does not have class-oriented inheritance,
    [Show full text]
  • Javascript Code Quality Analysis
    JavaScript Code Quality Analysis Master’s Thesis Joost-Wim Boekesteijn JavaScript Code Quality Analysis THESIS submitted in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE in COMPUTER SCIENCE by Joost-Wim Boekesteijn born in Hoogeveen, the Netherlands Software Engineering Research Group m-industries Department of Software Technology M-Industries BV Faculty EEMCS, Delft University of Technology Rotterdamseweg 183c Delft, the Netherlands Delft, the Netherlands www.ewi.tudelft.nl www.m-industries.com c 2012 Joost-Wim Boekesteijn. JavaScript Code Quality Analysis Author: Joost-Wim Boekesteijn Student id: 1174355 Email: [email protected] Abstract Static analysis techniques provide a means to detect software errors early in the development process, without actually having to run the software that is being analyzed. These techniques are common for statically typed languages and have found their way into IDEs such as Eclipse and Visual Studio. However, applying the same techniques to dynamically typed languages is much less common. Tool support is less mature and the amount of published research is relatively small. For this project, we design and build a static analyis tool for JavaScript code. We start by giving background information on relevant parts of the JavaScript language, followed by a survey of existing tools and research. In the design of our analysis tool, we achieved a clear separation of responsibilities between the different modules for parsing, analysis, rule definition and reporting. The level of detail in the default reporter makes our tool an ideal candidate for integration in a JavaScript IDE. On the other hand, our tool is also suited for batch analysis of large code collections.
    [Show full text]
  • Rationales and Approaches for Automated Testing of Javascript and Standard ML
    UPTEC IT 14 002 Examensarbete 30 hp Februari 2014 Rationales and Approaches for Automated Testing of JavaScript and Standard ML Emil Wall Abstract Rationales and Approaches for Automated Testing of JavaScript and Standard ML Emil Wall Teknisk- naturvetenskaplig fakultet UTH-enheten The ever increasing complexity of web applications has brought new demands on automated testing of JavaScript, requiring test-driven development to achieve Besöksadress: maintainable code. A contrasting area is testing of Standard ML, another functional Ångströmlaboratoriet Lägerhyddsvägen 1 language but with important differences. Hus 4, Plan 0 The aim of this thesis is to highlight the main problems with testing behaviour of Postadress: applications written in these two programming languages, and how these problems Box 536 751 21 Uppsala relate to development tools and practises. This has been investigated based on the following research questions: What are the testability issues of client-side JavaScript Telefon: and Standard ML? Which considerations need to be made in order to write stable and 018 – 471 30 03 maintainable tests? How does testing culture affect productivity and quality of Telefax: software? 018 – 471 30 00 Through quantitative interviews, implementation of the DescribeSML testing Hemsida: framework and development with tests in different scenarios, answers to these http://www.teknat.uu.se/student questions have been sought. The dynamic nature of JavaScript makes it more important to test whereas there are limitations on how Standard ML can be tested imposed by its static type system and immutability. The conclusion was drawn that the main issues for testability are dependency management, how to test graphical interfaces, and maintaining separation of concerns.
    [Show full text]
  • Introduction to the Course>
    <Introduction to the Course> Lecture 0: Introduction to the Course CPEN400A - Building Modern Web Applications - Winter 2019 Karthik Pattabiraman The Univerity of British Columbia Department of Electrical and Computer Engineering Vancouver, Canada September 5th, 2019 <Introduction to the Course> Instructor: Karthik Pattabiraman 2 Associate Professor at UBC PhD from UIUC (2008) Post-doc at Microsoft Research (2009) Faculty member at UBC (since 2010) Fourth time offerring this course - also created it Research Internet Of Things (IoT) Security and Reliability Error Resilient Systems Software Engineering <Introduction to the Course> Course TAs: 3 Pritam Dash Second year Masters student Aarti Kashyap Second year Masters Student Zitao Chan Second year Masters student Niranjhana Narayanan First year Masters student For any question about the assignments, please ask the TAs. You should prioritize attending and asking questions during lab sessions (later) Alternatively, you are encouraged to ask your questions on Piazza publicly. For private matters, write a private message to us on Piazza. No Email whatsoever - we’ll ignore all email messages. <Introduction to the Course> What’s this course about? 4 Core principles behind building modern web applications Abstractions and design principles Application of technologies such as CSS, HTML, JavaScript, node.js to the above <Introduction to the Course> What’s it not about ? 5 Learning of specific technologies These will most likely get outdated by the time you finish Fast changing field, so new technologies
    [Show full text]
  • Refactoring-Javascript.Pdf
    Refactoring JavaScript Turning Bad Code into Good Code Evan Burchard Refactoring JavaScript by Evan Burchard Copyright © 2017 Evan Burchard. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotion- al use. Online editions are also available for most titles (http://oreilly.com/ safari). For more information, contact our corporate/institutional sales depart- ment: 800-998-9938 or [email protected]. • Editors: Nan Barber and Allyson MacDonald • Production Editor: Kristen Brown • Copyeditor: Rachel Monaghan • Proofreader: Rachel Head • Indexer: Ellen Troutman-Zaig • Interior Designer: David Futato • Cover Designer: Karen Montgomery • Illustrator: Rebecca Demarest • March 2017: First Edition Revision History for the First Edition • 2017-03-10: First Release See http://oreilly.com/catalog/errata.csp?isbn=9781491964927 for release details. The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. Refactoring JavaScript, the cover image, and related trade dress are trademarks of O’Reilly Media, Inc. While the publisher and the author have used good faith efforts to ensure that the information and instructions contained in this work are accurate, the pub- lisher and the author disclaim all responsibility for errors or omissions, includ- ing without limitation responsibility for damages resulting from the use of or re- liance on this work. Use of the information and instructions contained in this work is at your own risk. If any code samples or other technology this work con- tains or describes is subject to open source licenses or the intellectual property rights of others, it is your responsibility to ensure that your use thereof com- plies with such licenses and/or rights.
    [Show full text]
  • Preliminary Report
    Preliminary Report Jonas H¨ubotter December 1, 2020 Abstract TypeScript is a programming language developed by Microsoft and first published in 2012. TypeScript is a superset of JavaScript adding static typing and transpiling to JavaScript. Today, TypeScript is widely used in many areas and supported by many development environments. TypeScript is open-source and its development takes place on GitHub. 1 History To understand TypeScript's roots its necessary to first understand the environment in which the initial idea was born. This is especially true as TypeScript is so deeply rooted in JavaScript. Brendan Eich famously created the first prototype of JavaScript, then named Mocha, in September 1995 in just ten days [Hof19]. The short time it took to de- velop the first version of Mocha meant that it was inherently unfinished. Originally, JavaScript was envisioned as a scripting language to add small effects to websites. The adoption of JavaScript happened quickly. Initially developed at Netscape, Mi- crosoft released JScript in 1996 which was almost identical. This, however, made the need for standardization of the language apparent. In 1997, the first ECMAScript specification was released based on Netscape's JavaScript. Through the early adoption by Netscape and Microsoft's Internet Explorer, the most widely used browsers at the time, JavaScript gained traction very quickly. Soon after its inception it had essentially gained a monopoly on client-side code evaluation in browsers. Already in 1999, with the first draft of ECMAScript version 4, a group led by Mozilla, proposed drastic changes to JavaScript aiming to turn it into a more complete 1 programming language and leaving behind its roots as a scripting language.
    [Show full text]
  • Douglas Crockford More Than One Thing at a Time
    Managing Asynchronicity Douglas Crockford More than one thing at a time. So hard. The Law of Turns • Never block. • Never wait. • Finish fast. The Problems With Threads • Races • Deadlocks • Reliability • Performance • Threads are safest and fastest when they don’t share memory. Event driven systems • Turn based. No pre-emption. • Associate events with actions. • Easy (beginners can do it). • User interfaces. JavaScript is moving to the server. Servers • Message driven, message queue • Actor-like • Simple events don’t fit: – Sequential • A sequence of requests, each dependent on the result of the previous. • Naïve approach: deeply nested handlers – Parallel • Do a bunch of independent things • Naïve approach: do it sequentially – Limited time, cancellation Functional Programming to the Rescue • Futures – Dataflow • Promise • Monads • Arrows • RX • FRP: Flapjax, bacon.js, elm. RQ A JavaScript library for managing asynchronicity in server applications. Four of five methods RQ.sequence(requestors) RQ.parallel(requestors) RQ.parallel(requestors, optionals) RQ.race(requestors) RQ.fallback(requestors) RQ.sequence • Takes an array of requestor functions, calls them one at a time, passing the result of the previous requestor to the next requestor. RQ.sequence([ getUserData, getPreference(), getCustomNav() ]) RQ.parallel • Takes an array of requestor functions, calls them all at once, and gives an array of results. RQ.parallel([ getNav(), getAds(), getMessageOfTheDay() ]) RQ.parallel • Also takes an optional array of optional requestors. Their results will be included if they can be obtained before the required requestors finish. RQ.parallel([ getNav, getAds, getMessageOfTheDay ], [ getHoroscope(), getGossip() ]) RQ.race • Takes an array of requestors, calls them all at once, and gives the result of the first success.
    [Show full text]