Build tools have become a necessary component in the workflow for modern web applications. I have previously covered the basics of what build tools can do for you to show how builds help with scripting, automation, and eliminating complexity. Taking those into consideration, I’m going to provide a closer look at some of the more popular build tools and how they might make sense for your projects.

This post isn’t meant to be an exhaustive list. Rather, it’s meant to provide suggestions to help you get started in researching how different build tools improve the development workflow. While reading through this comparison on build tools you will gain some knowledge to better equip yourself for comparing how these tools line up with your specific needs.

The main feature of Autoprefixer 8.0 is Browserslist 3.0. In the new version, it brings new default browsers. It will affect you only if you don’t change browsers by .browserslistrc or browserslist key in package.json (we don’t recommend to use browsers option).

In one hand, Browserslist 3.0 usage statistics limit for default browsers was reduced from >1% to >0.5%. In another hand, we remove dead browsers from default browsers. The dead browser is a browser with < than 1% in the global market and who don’t have security updates. Right now IE 10 and BlackBerry browser are dead browsers.

Table of Contents

When you were small, haven’t you ever dreamt of becoming the commander of a space mission? Of exploring outer space and seing the Earth from above? Well, you might not have made it into an actual space shuttle, but maybe you still carry this

Following a few conversations on the future of TV and desktops/laptops, I decided to look into how people's screen time has changed. To do so I compiled data from a few different sources going back several years on adults (18+) in the United States.

While the rise of time spent on mobile is dramatic, the effect is mostly additive. That is, it created more screen time in the United States than it took from other media like TV and radio.

Looking at another data source, in this case Nielsen's Total Audience Report over the past four years, seems to tell the same story.

That said, it does appear activities like listening to radio and video viewing are gradually transitioning to mobile devices over time (with the vast majority on smartphones).

We write a lot of JavaScript at Basecamp, but we don’t use it to create “JavaScript applications” in the contemporary sense. All our applications have server-side rendered HTML at their core, then add sprinkles of JavaScript to make them sparkle.

This is the way of the majestic monolith. Basecamp runs across half a dozen platforms, including native mobile apps, with a single set of controllers, views, and models created using Ruby on Rails. Having a single, shared interface that can be updated in a single place is key to being able to perform with a small team, despite the many platforms.

It allows us to party with productivity like days of yore. A throwback to when a single programmer could make rapacious progress without getting stuck in layers of indirection or distributed systems. A time before everyone thought the holy grail was to confine their server-side application to producing JSON for a JavaScript-based client application.

In the world dominated by Bootstrap, surrounded by Semantic UI and Foundation, it’s hard for alternatives to break through.However the mentioned trio is well known, mature and exist on the market for quite long now, they’re all relatively heavy and they all require deep understanding of the core, while doing customisations (have you ever done custom dropdowns in Semantic??!).

The fresh breeze

There comes Bulma. Beautiful, lightweight and stylish CSS framework made by Jeremy Thomas. If you haven’t done it already – I encourage you to visit his website – the site just lives in the browser! It’s super-interactive, beautiful and it’s

Is it consistency? Enforcing a set of standards and best practices on your code through linter rules and formatters? How about ensuring your code has tests that run automatically during your build process? What about pull requests and code reviews — protecting your master branch from direct commits and having peers review your code?

They’re some of the things that come to mind for me. Automated processes and manual checks. Smart and efficient. Yet, while they’re all useful, they really only address half of the problem.

Automation is crucial for maintaining code quality. Static analysis of your syntax with a linter and automated testing should be mandatory. But I can write code that passes all the automated processes without any guarantee to its actual quality.

Now that webpack is a #0CJS (Zero Configuration) out-of-the-box bundler, we will lay groundwork in 4.x and 5.0 to provide more default capabilities down the road.

You have to choose (mode or --mode) between two modes now: “production” or “development”.

Production Mode enables all sorts of optimizations out of the box for you. This includes, minification, scope hoisting, tree-shaking, side-effect-free module pruning, and includes plugins you would have to manually use like NoEmitOnErrorsPlugin.

Development Mode optimized for speed and developer experience. In the same way, we automatically include features like path names in your bundle output, eval-source-maps, that are meant for easy-to-read code, and fast build times!

A big update was released to the Vue devtools just a few days ago. Let’s dive into the new features and improvements! 🎄

You can now modify the data of your component directly in the Component inspector pane.

The content of the field is the serialized JSON value. For example, if you want to enter a string, type "hello" with the double-quotes. An array should look like [1, 2, "bar"] and an object like { "a": 1, "b": "foo" } .

Currently, the values of following types can be edited:

null and undefined

String

Literal: Boolean , Number , Infinity , -Infinity and NaN

Arrays

Plain objects

For the Arrays and Plain objects, you can add and remove items using the dedicated icons. You can also rename object keys.

I recently wrote a post about Facebook being a needy sonofabitch. They desperately try to get you there, and once they have you they do all they can to keep you there. It’s like a restaurant that bombards your doorstep with flyers until you finally pay it a visit. Once you go there, they lock the doors from the outside and begin force-feeding you from the buffet.

But ultimately, Facebook is a place you go to. You can decide whether you want to visit the restaurant, or just continue throwing their flyers in the recycling bin alongside the coupon-stuffed weekly circulars and junk mail.

Google is equally needy, but feels a lot more insidious than Facebook.

HTML 5.2 has introduced a new <dialog> element for native modal dialog boxes. At first glance, it seems fairly straightforward (and it is), but as I’ve been playing around with it, I’ve found it has some nice features that might be easy to miss.

I’ve embedded a full working demo at the end of this article, but if you want to check it out as you read along, you can see it here.

Here is the markup for a basic dialog box:

<dialog open> Native dialog box! </dialog>

The open attribute means that the dialog is visible. Without it, the dialog is hidden until you use JavaScript to make it appear. Before any styling is added, the dialog renders as follows:

This proposal introduces a new operator |> similar to F#, OCaml, Elixir, Elm, Julia, Hack, and LiveScript, as well as UNIX pipes. It's a backwards-compatible way of streamlining chained function calls in a readable, functional manner, and provides a practical alternative to extending built-in prototypes.

Introduction

The pipeline operator is essentially a useful syntactic sugar on a function call with a single argument. In other words, sqrt(64) is equivalent to 64 |> sqrt.

This allows for greater readability when chaining several functions together. For example, given the following functions:

A big update was released to the Vue devtools just a few days ago. Let’s dive into the new features and improvements! 🎄

You can now modify the data of your component directly in the Component inspector pane.

The content of the field is the serialized JSON value. For example, if you want to enter a string, type "hello" with the double-quotes. An array should look like [1, 2, "bar"] and an object like { "a": 1, "b": "foo" } .

Currently, the values of following types can be edited:

null and undefined

String

Literal: Boolean , Number , Infinity , -Infinity and NaN

Arrays

Plain objects

For the Arrays and Plain objects, you can add and remove items using the dedicated icons. You can also rename object keys.

JavaScript in browsers has a new module system: ES modules. JavaScript in node.js has had a module system for years: CommonJS modules. JavaScript developers have nearly universally adopted node as the platform of choice for their tooling. Web application frameworks all use command-line tools written in node, pulling shared code from the npm registry, to build applications that run on the browser. Open-source code they find on npm is freely used in these applications. Browser app developers now have the following expectations:

Code they write for their tooling uses the same language as their browser applications.

JavaScript UI frameworks and libraries work in cycles. Every six months or so, a new one pops up, claiming that it has revolutionized UI development. Thousands of developers adopt it into their new projects, blog posts are written, Stack Overflow questions are asked and answered, and then a newer (and even more revolutionary) framework pops up to usurp the throne.

Using the Stack Overflow Trends tool and some of our internal traffic data, we decided to take a look at some of the more prominent UI frameworks: Angular, React, Vue.js, Backbone, Knockout, and Ember.

Framework lifecycle

Stack Overflow Trends lets us examine how each of these technologies has been asked about over time. We can start by looking at some of the larger frameworks.

Web performance is a big and complex topic. In this post we’ll narrow it down to a discussion of front end JavaScript frameworks and how using one versus another might impact the performance of your app. In particular, we’ll be looking at two things: (1) how long it takes a framework to update the user interface, and (2) the time required to download and parse the package(s) required for the framework to be functional.

My go-to resource for this data over the last couple years has been the js-framework-benchmark by Stefan Krause. It’s good, but also kind of complicated. It’s easier to look at a subset of the results, and that’s what we’ll be doing in this article. I encourage you to check out the tool Stefan has built and dig into more of the data on your own, particularly if your favorite framework is missing from the graphics below. It may be available on Stefan’s site (he tests 40+ frameworks).

In this tutorial we are going to look at what’s changed with forms and more importantly how to handle form validation the right way with Angular 2.

Forms bring life to our applications. It’s how we capture user input and make our applications useful. For a long time, forms have been difficult to get right. Angular 1.x made it a little easier, but came with its own set of issues and challenges, and some features like sane validation didn’t come until the framework was well into it’s 5th year.

Recently I wanted to deepen my understanding of bash by researching as much of it as possible. Because I felt bash is an often-used (and under-understood) technology, I ended up writing a book on it.

You don’t have to look hard on the internet to find plenty of useful one-liners in bash, or scripts. And there are guides to bash that seem somewhat intimidating through either their thoroughness or their focus on esoteric detail.

Here I’ve focussed on the things that either confused me or increased my power and productivity in bash significantly, and tried to communicate them (as in my book) in a way that emphasises getting the understanding right.

Stimulus is a JavaScript framework with modest ambitions. It doesn't seek to take over your entire front-end—in fact, it's not concerned with rendering HTML at all. Instead, it's designed to augment your HTML with just enough behavior to make it shine. Stimulus pairs beautifully with Turbolinks to provide a complete solution for fast, compelling applications with a minimal amount of effort.

How does it work? Sprinkle your HTML with magic controller, target, and action attributes:

The critical vulnerabilities found in Intel and other CPUs represent a significant security risk. Because the flaw is so low level, the usual protections that web developers are used to don't apply. Even sandboxed JavaScript code can be used to exploit the vulnerabilities known as Meltdown and Spectre.

The issue affects Intel CPUs broadly, but also AMD and various ARM processors are suspect to a similar attack. Browser vendors have already started mitigating the issue with Microsoft, for example announcing improvements to Internet Explorer and Microsoft Edge browsers against Speculative Execution. Mozilla has also taken action against

After our 3.2 Release showed the ease of bringing Storybook component development to Vue, Carlos Vega was inspired to repeat the trick for Angular. Angular was a bigger job than expected, but Carlos pulled it off with help from Igor Davydkin and Ruslan Alzinov:

I just asked 23,000 developers what they think of JavaScript. Here’s what I learned.

I recently published our results for the 2017 edition of the annual State of JavaScript survey, collected from over 23,000 developers.

The results revealed many things, from popularity trends to salary breakdowns. You’ll want to take a look for yourself if you haven’t done so already. But among all these data, here are the 10 things that stood out most to me.

Even if you’ve already seen the results, you might want to check out the new Features and Opinions sections we’ve just added.