<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description>Client side development resources, information, and goodies.</description><title>Front End Development</title><generator>Tumblr (3.0; @gregbabula)</generator><link>https://gregbabula.com/</link><item><title>10 Things I Regret About Node.js - Ryan Dahl</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/M3BM9TB-8yA?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="10 Things I Regret About Node.js - Ryan Dahl - JSConf EU"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;10 Things I Regret About Node.js - Ryan Dahl&lt;/h2&gt;</description><link>https://gregbabula.com/post/175273436879</link><guid>https://gregbabula.com/post/175273436879</guid><pubDate>Tue, 26 Jun 2018 10:55:04 -0400</pubDate><category>javacscript</category><category>js</category><category>node</category></item><item><title>Designing very large JavaScript applicationsOver the last years...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/ZZmUwXEiPm4?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Malte Ubl - Designing very large JavaScript applications"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Designing very large JavaScript applications&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;Over the last years a modular approach to programming in JS gained a huge following and with the advent of virtual DOM building isomorphic JavaScript application for the web became dramatically more approachable; yet, we are still largely deploying monolithic application blobs that know how to render the settings page of our single page apps before accepting user input on the homepage. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt; My talk will explore 2 primary themes: &lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt; How to build highly sophisticated web apps that load a constant amount of JS to make the first page the user sees interactive; where constant means, even if you have 100s of engineers write code for your app for a year, the size will still be the same.
How to throughout the lifecycle of your application never load a single line of JS that is not currently needed.&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;As part of this exploration I will introduce 3 novel concepts: lazy decoration, asynchronous dependency injection and reverse dependencies in module systems.&lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/173751700049</link><guid>https://gregbabula.com/post/173751700049</guid><pubDate>Wed, 09 May 2018 21:20:47 -0400</pubDate><category>javascript</category><category>js</category></item><item><title>Async patterns to scale your multicore JavaScript...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/726eZyVtC0Y?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Jonathan Martin: Async patterns to scale your multicore JavaScript elegantly. | JSConf Budapest 2017"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Async patterns to scale your multicore JavaScript elegantly.&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;“JavaScript is a toy language because it doesn’t support 
multithreading.” Heard that one before? Although the event loop means 
our program does one thing at a time, JavaScript is actually well-suited
 for a plethora of concurrency problems while avoiding typical 
multithreading woes. You might say JavaScript is single-threaded… just 
so it can be multithreaded!&lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/170435312959</link><guid>https://gregbabula.com/post/170435312959</guid><pubDate>Fri, 02 Feb 2018 19:13:12 -0500</pubDate><category>javascript</category></item><item><title>Advanced Async and Concurrency Patterns in JavaScriptKyle...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/Qg1SvpIau6U?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Advanced Async and Concurrency Patterns in JavaScript"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Advanced Async and Concurrency Patterns in JavaScript&lt;/h2&gt;&lt;p&gt;Kyle Simpson, better known as Getify, speaks about Advanced Async and Concurrency Patterns in JavaScript at the JS.LA meetup.&lt;/p&gt;</description><link>https://gregbabula.com/post/168890824839</link><guid>https://gregbabula.com/post/168890824839</guid><pubDate>Sun, 24 Dec 2017 08:56:09 -0500</pubDate><category>javascript</category><category>js</category></item><item><title>High Performance JS in V8This year, V8 launched Ignition and...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/1bZxs5J5n3M?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="High Performance JS in V8 - Peter Marshall"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;High Performance JS in V8&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;This year, V8 launched Ignition and Turbofan, the new compiler pipeline 
that handles all JavaScript code generation. Previously, achieving 
high-performance in Node.js meant catering to the oddities of our 
now-deprecated Crankshaft compiler. This talk covers our new 
code-generation architecture - what makes it special, a bit about how it
 works, and how to write high performance code for the new V8 pipeline.&lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/167616459159</link><guid>https://gregbabula.com/post/167616459159</guid><pubDate>Sat, 18 Nov 2017 02:39:34 -0500</pubDate><category>javascript</category><category>js</category></item><item><title>Circular References in Node.js</title><description>&lt;p&gt;&lt;a href="http://obscurejavascript.tumblr.com/post/165697176198/circular-references-in-nodejs" class="tumblr_blog"&gt;obscurejavascript&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In Node.js, when a circular reference is detected, the &lt;code&gt;require&lt;/code&gt; that triggered that reference returns an empty object instead of the normal full object. For example, here is one module in a file called &lt;code&gt;circularReferenceB.js&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;const circularReferenceA = require('./circularReferenceA');

module.exports = {
  printProperty1: () =&amp;gt; {
    console.log(circularReferenceA.property1);
  }
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And here is one in &lt;code&gt;circularReferenceA.js&lt;/code&gt; which is run directly with &lt;code&gt;node circularReferenceA.js&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;const circularReferenceB = require('./circularReferenceB');
circularReferenceB.printProperty1();
// undefined

module.exports = {
  property1: 'value1'
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;circularReferenceB.printProperty1&lt;/code&gt; returns undefined because &lt;code&gt;circularReferenceA&lt;/code&gt; has not been initialized yet. A log in &lt;code&gt;circularReferenceB.js&lt;/code&gt; makes this clear:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;console.log('circularReferenceA require:', circularReferenceA);
// circularReferenceA require: {}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Keep in mind the required relationships don’t need to be directly circular. For example, &lt;code&gt;A-&amp;gt;B-&amp;gt;C-&amp;gt;A&lt;/code&gt; will result in &lt;code&gt;C&lt;/code&gt; getting an empty &lt;code&gt;A&lt;/code&gt; module by default. The key is that JavaScript is executed dynamically, so each &lt;code&gt;require&lt;/code&gt; is executed as it is found. So &lt;code&gt;circularReferenceB.js&lt;/code&gt; gets the non-initialized &lt;code&gt;circularReferenceA.js&lt;/code&gt; which is empty by default.&lt;/p&gt;

&lt;p&gt;There are a few general ways to fix this:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;
&lt;strong&gt;Duplicate needed code&lt;/strong&gt;: Simple and gauranteed to work, but this can create maintainence nightmares.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set any &lt;code&gt;module.exports&lt;/code&gt; at the top&lt;/strong&gt;: If this is set before any code is run, at least that code should be getting the latest version of the module. The issue is if the &lt;code&gt;module.exports&lt;/code&gt; requires the code in the module to be run first to generate some of its content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use dependency injection&lt;/strong&gt; The part of the needed module can simply be passed in. There is some up extra logic needed for this across multiple modules, but it should handle every situation without code duplication.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Below is an example of 3 given the above files. Firstly &lt;code&gt;circularReferenceA.js&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;const circularReferenceB = require('./circularReferenceB');
const property1 = 'value1';

circularReferenceB.printProperty1(property1);
// value1

module.exports = { property1: property1 };
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And &lt;code&gt;circularReferenceB.js&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;const circularReferenceA = require('./circularReferenceA');

module.exports = {
  printProperty1: (property1) =&amp;gt; {
    console.log(property1);
  }
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Despite all of the above, it is best to evaluate why a circular dependency came up because it almost always indicates a flaw in software architecture. Though when the timelines are short or there is no way around the relationship, then keep in mind the above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github Location:&lt;/strong&gt; &lt;a href="https://github.com/Jacob-Friesen/obscurejs/blob/master/2017/circularReferenceA.js"&gt;https://github.com/Jacob-Friesen/obscurejs/blob/master/2017/circularReferenceA.js&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/165742044509</link><guid>https://gregbabula.com/post/165742044509</guid><pubDate>Mon, 25 Sep 2017 20:12:17 -0400</pubDate><category>javascript</category><category>js</category><category>nodejs</category></item><item><title>Debugging in 2017 with Node.js</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/Xb_0awoShR8?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Debugging in 2017 with Node.js"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Debugging in 2017 with Node.js&lt;/h2&gt;</description><link>https://gregbabula.com/post/165741991454</link><guid>https://gregbabula.com/post/165741991454</guid><pubDate>Mon, 25 Sep 2017 20:10:23 -0400</pubDate><category>nodejs</category><category>javascript</category><category>js</category></item><item><title>Is JavaScript Making Us Better Professionals?We can all agree...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/O7pnOru0S3E?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="JSHeroes 2017 | Alex Moldovan - Is JavaScript Making Us Better Professionals?"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Is JavaScript Making Us Better Professionals?&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;We can all agree that JavaScript is a trending programming language. But is this a good thing? Is JavaScript the right language to learn or to study? Can we push the language into the academic field so that students are better prepared for the jobs of the future in IT? &lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/162863729284</link><guid>https://gregbabula.com/post/162863729284</guid><pubDate>Tue, 11 Jul 2017 10:00:19 -0400</pubDate><category>javascript</category><category>js</category></item><item><title>A Story About Types and JavaScriptWhy do we exactly need those...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/YnukrLi8zew?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="JSHeroes 2017 | Tudor Gergely - A Story About Types and JavaScript"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;A Story About Types and JavaScript&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;Why do we exactly need those types? Are we not choosing Javascript for its dynamic nature? Let’s see how a bit of rigour can help us on the long run.&lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/162823926728</link><guid>https://gregbabula.com/post/162823926728</guid><pubDate>Mon, 10 Jul 2017 10:00:18 -0400</pubDate><category>javascript</category><category>js</category></item><item><title>Warping Time with Async/AwaitThe JS world is a constant...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/1J-2huqyrBk?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="JSHeroes 2017 | Cassi Lup - Warping Time with Async/Await"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Warping Time with Async/Await&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;The JS world is a constant surprise. Just look at the recent years and you’ll see why. The language itself is maturing and the angles from which we look at it are becoming more and more diverse. We’ve arrived from 10-year release cycles to yearly feature upgrades. ES2017 is upon us and together with it, a new tool that gives us time-warping superpowers: Async/Await. Come learn (almost) all there is to know about it and how you can start using it today. It’s going to be fun!&lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/162783547145</link><guid>https://gregbabula.com/post/162783547145</guid><pubDate>Sun, 09 Jul 2017 10:00:06 -0400</pubDate><category>javascript</category><category>js</category></item><item><title>Static and Dynamic Next.jsWith Next.js, you can create React...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/lLNJsuXB4CI?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="JSHeroes 2017 | Guillermo Rauch - Static and Dynamic Next.js"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Static and Dynamic Next.js&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;With Next.js, you can create React applications that automatically server-render, code-split and hot-reload, with no setup. &lt;br/&gt;This talk will explore the two most powerful new features of Next.js: static exports and dynamic imports. These allow for the creation of high-performance advanced applications, examples of which we’ll demonstrate live, on stage.&lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/162745521129</link><guid>https://gregbabula.com/post/162745521129</guid><pubDate>Sat, 08 Jul 2017 10:00:27 -0400</pubDate><category>javascript</category><category>js</category></item><item><title>How to get started and build something with GraphQLGraphQL...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/McPeX5gsSX8?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="JSHeroes 2017 | Xavier Cazalot - How to get started and build something with GraphQL"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;How to get started and build something with GraphQL&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;GraphQL presents new ways for clients to fetch data by focusing on the needs of product developers and client applications. Building a product with GraphQL is easy once you wrapped your head around the key concepts: many awesome tools are around and it’s a real pleasure to use them.&lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/162732624249</link><guid>https://gregbabula.com/post/162732624249</guid><pubDate>Sat, 08 Jul 2017 00:10:18 -0400</pubDate><category>graphql</category></item><item><title>V8, Advanced JavaScript, &amp; the Next Performance...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/EdFDJANJJLs?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="V8, Advanced JavaScript, &amp; the Next Performance Frontier (Google I/O '17)"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;V8, Advanced JavaScript, &amp; the Next Performance Frontier&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;“This talk will help developers write performant JavaScript, use new language constructs (ES2015+, async/await, etc.), and learn about the latest developments in modern benchmarking. We’ll also demo DevTools asynchronous debugging features and new JavaScript code coverage tools.”&lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/161774840537</link><guid>https://gregbabula.com/post/161774840537</guid><pubDate>Tue, 13 Jun 2017 10:00:36 -0400</pubDate><category>javascript</category><category>js</category></item><item><title>Next.js: Universal React Made Easy and Simple</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/evaMpdSiZKk?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Guillermo Rauch - Next.js: Universal React Made Easy and Simple - React Conf 2017"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Next.js: Universal React Made Easy and Simple&lt;/h2&gt;</description><link>https://gregbabula.com/post/161760485559</link><guid>https://gregbabula.com/post/161760485559</guid><pubDate>Mon, 12 Jun 2017 23:26:55 -0400</pubDate><category>javascript</category><category>nextjs</category></item><item><title>What the… JavaScript?Kyle Simpsons talk for Forward 2...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/2pL28CcEijU?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="What the... JavaScript?"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;What the… JavaScript?&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;Kyle Simpsons talk for Forward 2 attempts to “pull out the crazy” from JavaScript. He wants to help you produce cleaner, more elegant, more readable code, then inspire people to contribute to the open source community.&lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/160025524924</link><guid>https://gregbabula.com/post/160025524924</guid><pubDate>Wed, 26 Apr 2017 17:22:58 -0400</pubDate><category>javascript</category><category>js</category></item><item><title>JavaScript Patterns for 2017The JavaScript language and...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/hO7mzO83N1Q?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="JavaScript Patterns for 2017  - Scott Allen"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;JavaScript Patterns for 2017&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;The JavaScript language and ecosystem have seen dramatic changes in the last 2 years. In this sessions we’ll look at patterns for organizing code using modules, talk about some of the pros and cons of new language features, and look at the current state of build tools and build patterns.&lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/159838151909</link><guid>https://gregbabula.com/post/159838151909</guid><pubDate>Fri, 21 Apr 2017 17:06:42 -0400</pubDate><category>javascript</category><category>js</category></item><item><title>ReactCasts #9 - Immutability in JavaScriptIn this episode...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/4LzcQyZ9JOU?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="ReactCasts #9 - Immutability in JavaScript"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;ReactCasts #9 - Immutability in JavaScript&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;In this episode I’ll talk about why immutability is important and how it can benefit you. I will draw some comparisons between JavaScript (which doesn’t treat data as immutable by default) and programming languages that have immutability built in. Finally, I will show how to make immutable operations in plain Javascript. &lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/159601477755</link><guid>https://gregbabula.com/post/159601477755</guid><pubDate>Sat, 15 Apr 2017 10:00:29 -0400</pubDate><category>javascript</category><category>js</category></item><item><title>The Post JavaScript Apocalypse - Douglas CrockfordThis is about...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/NPB34lDZj3E?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="The Post JavaScript Apocalypse - Douglas Crockford"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;The Post JavaScript Apocalypse - Douglas Crockford&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;This is about JavaScript, clutter, purity, and thoughts on what should be in the language that comes after, assuming that we all live that long.&lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/159566166729</link><guid>https://gregbabula.com/post/159566166729</guid><pubDate>Fri, 14 Apr 2017 10:37:39 -0400</pubDate><category>javascript</category><category>js</category></item><item><title>React Conf 2017: Day 1</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/S8HXkEnA48g?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="React Conf 2017: Day 1"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;React Conf 2017: Day 1&lt;/h2&gt;</description><link>https://gregbabula.com/post/158776662880</link><guid>https://gregbabula.com/post/158776662880</guid><pubDate>Fri, 24 Mar 2017 10:00:10 -0400</pubDate><category>javascript</category><category>js</category><category>react</category></item><item><title>ASTs for Beginners at Clevertech“The Abstract Syntax Tree. It...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/CFQBHy8RCpg?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="ASTs for Beginners at Clevertech (February 2017)"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;ASTs for Beginners at Clevertech&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;“The Abstract Syntax Tree. It sounds a lot worse than it is. It’s actually quite simple and enables some powerful tools. BabelJS uses it to transform your code from ES.Next to ES5. ESLint uses it to lint your code. And with a knowledge of how it works, you can extend these and other tools to do some mind bustingly powerful things. Prepare to be amazed by ASTs!”&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://gregbabula.com/post/158751869404</link><guid>https://gregbabula.com/post/158751869404</guid><pubDate>Thu, 23 Mar 2017 16:55:50 -0400</pubDate><category>javascript</category><category>js</category></item></channel></rss>
