Building the Web of Things
Mozilla is working to create a Web of Things framework of software and services that can bridge the communication gap between connected devices. By providing these devices with web URLs and a standardized data model and API, we are moving towards a more decentralized Internet of Things that is safe, open and interoperable.
另附:Mozila - Introducing HumbleNet: a cross-platform networking library that works in the browser.

Security updates for all active release lines
All current versions of v4.x through to v8.x inclusive are vulnerable to an issue that can be used by an external attacker to cause a denial of service. The severity of this vulnerability is high and users of the affected versions should plan to upgrade when a fix is made available.

Turbocharge React With GraphQL
Is GraphQL production ready? It was a fair question, since he never worked with GraphQL. Let’s be honest, GraphQL was only open sourced in 2015 and really just created as a standard in 2016. Is anyone besides Facebook really using GraphQL? Greg and his team were intimately familiar with REST and had built several apps in the last few years with REST. They leveraged Swagger for validation and documentation and it worked well for them. Hence the skepticism if GraphQL could really best REST as the communication conduit for apps.
附:VulcanJS: An Open-Source Project to “Meteorize” GraphQL.

Choosing a frontend framework in 2017
React is a library that’s designed to be one piece of the puzzle. React provides a thin view layer and leaves it to the developer to choose the remaining pieces of the architecture; Ember.js is a framework that optimizes the productivity of small teams and highly skilled individual developers; Angular is a platform that’s very well suited to enterprise developers who are coming from Java or C# background; Polymer is a framework that is particularly well positioned for large organizations that wish to create a single style guide and a collection of components to be used across the entire organization.

Any web site can become a PWA – but we need to do better
Suffice to say, I am not telling anyone not to use great, modern technologies to the benefit of their end users and their own publishing convenience. And the stack that make up PWA are great to make either more successful than it is now.

Building m.uber_ Engineering a High-Performance Web App for the Global Market
In this article, we describe how we built m.uber (pronounced moo-ber) and explore the challenge of implementing the native app experience in a super-lightweight web app.

当程序员讨论一门语言的时候,默认的上下文经常是:“用 xxx 语言来完成 xxx 任务”。所以一直困扰着的我的一个问题就是,为什么完成某个任务,一定要选择特定的语言,比如安卓开发是 Java,前端要用 JavaScript,iOS 开发使用 Objective-C 或者 Swift。这些问题的答案非常复杂,有的是技术原因,有的是历史原因,有的会考虑成本,很难得出统一的结论,只能 case-by-case 的分析。这篇文章并非专门解答上述问题,而是希望通过介绍一些通用的概念,帮助读者掌握分析问题的能力

文本数据可视化 - 一图胜千言

Redux 使用可变数据结构
redux 核心能力是不可变数据带来的,mobx 的核心能力是可变数据带来的,如果使用动态修改数据的方式,使用 immutablejs 将其低成本转化为不可变数据,就可以接入 redux 并享受其生态了。


Node.js Performance Monitoring with Prometheus
This article helps you to understand what to monitor if you have a Node.js application in production, and how to use Prometheus - an open-source solution, which provides powerful data compressions and fast data querying for time series data - for Node.js monitoring.

Is it possible to host Facebook on AWS?
To answer this question we need to break it down into four separate parts: Server capacity, Server hardware, performance, Software Cost.Now remember, we’re not asking if Facebook should host on AWS - we’re just asking if it’s possible.

Versioning APIs at Google
Versioning APIs is difficult, and everyone in the API space has opinions about how to do it properly. It’s also almost impossible to avoid. As teams build new software, occasionally they need to get rid of a feature (or provide that feature in a different way). Versioning gives your API users a reliable way to understand semantic changes in the API.

Delivering Billions of Messages Exactly Once
In the past three months we’ve built an entirely new de-duplication system to get as close as possible to exactly-once delivery, in the face of a wide variety of failure modes. The new system is able to track 100x the number of messages of the old system, with increased reliability, at a fraction of the cost. Here’s how.

Serving 39 Million Requests for $370/Month, or: How We Reduced Our Hosting Costs by Two Orders of Magnitude
使用 Serverless 来节省成本

Why I’m Switching from React to Cycle.js
Most people start to use React without thinking that there might be a better way to build a web app. That reflection made me try Cycle.js, a new reactive framework that is becoming more popular every day. In this article, I want to explain what reactive programming is, how Cycle.js works, and why I think it’s better than React. So let’s start!

Why Serverless?
In this article, I want to explain what serverless is, why I think it is an important new development, and where I think it will be the most impactful. This article will not focus on any one platform (my own experience is with Apache OpenWhisk), but rather keep things at a mostly generic level.

Why We Chose Typescript
Using a typed language in our frontend has already paid dividends: our code has fewer type-related bugs, we are more confident making large refactors, and our inline documentation is focused around concepts instead of object shapes and function parameters.

Thoughts on Self-Documenting CSS
Every comment represents a failure to make the code self explanatory - Robert C. Martin. However, this thinking raises interesting questions when it comes to a declarative language like CSS. Well… maybe. We use comments different ways for a variety of reason. Let’s look at some comments, and consider what they add (or not) to the code. I’ll start with some low-hanging fruit, then move on to the less obvious stuff.

I decided to disable AMP on my site
The decision to turn AMP off was a long time coming. Thankfully it was almost as easy to disable AMP on WordPress as it was to enabled it. I just had to disable the AMP plugin. Less than 24 hours later Googled stopped showing the AMP version of my site in their search results.

Everything I Wish I’d Known Before I Started Demoing SaaS
I had spent 25 minutes showing a content team the many ways Airstory would improve their lives when their manager looked at me and said: But you guys aren’t funded. It was then — in that moment — that I realized this: I suck at demos. Poor demoing leaves the viewer with BS objections like “you’re not funded.”

Exactly-once Semantics are Possible: Here’s How Kafka Does it
I’m thrilled that we have hit an exciting milestone the Kafka community has long been waiting for: we have  introduced exactly-once semantics in Apache Kafka in the 0.11 release. In this post, I’d like to tell you what exactly-once semantics mean in Apache Kafka, why it is a hard problem, and how the new idempotence and transactions features in Kafka enable correct exactly-once stream processing using Kafka’s Streams API.

How to Interview Engineers
In this blog post, I’m going to present what we’ve learned so far from this data. Technical interviewing is broken in a lot of ways. It’s easy to say this. (And many blog posts do!) The hard part is coming up with what to do about it. My goal for this post is to take on that challenge, and lay out specific advice for hiring managers and CTOs. Interviewing is hard. But I think that many of the problems can be fixed by running a careful process.
另附:The Best Frontend JavaScript Interview Questions

Possible future directions for data on the Web
As I enter my final days as a member of the W3C Team*, I’d like to record some brief notes for what I see as possible future directions in the areas in which I’ve been most closely involved, particularly since taking on the ‘data brief’ 4 years ago.


ECMAScript 2017 Language Spec Published
This Standard defines the ECMAScript 2017 general-purpose programming language.
另附:TC39, ECMAScript, and the Future of JavaScript.

Announcing TypeScript 2.4
Dynamic import() expressions; String enums; Improved checking for generics; Return types as inference targets; Stricter checking for generic functions; Strict contravariance for callback parameters; Stricter checks on “weak types”.

Google Web Starter Kit
Web Starter Kit is an opinionated boilerplate for web development. Tools for building a great experience across many devices and performance oriented. Helping you to stay productive following the best practices outlined in Google’s Web Fundamentals. A solid starting point for both professionals and newcomers to the industry.

Announcing Docker 17.06 Community Edition (CE)
We released Docker CE 17.06 with new features, improvements, and bug fixes. Docker CE 17.06 is the first Docker version built entirely on the Moby Project, which we announced in April at DockerCon. You can see the complete list of changes in the changelog, but let’s take a look at some of the new features.

sonar – JS Foundation Welcomes Newest Project
We are excited to announce the latest project to join the JS Foundation is sonar, a linting tool for the web. The concept for sonar was originally created by the Microsoft Edge team. As they started working on the project, it quickly became apparent that a tool meant to serve the entire web should be built in an openly governed and neutral home, which is why they have come to the JS Foundation.

Server Rendering React on Rails
In this article, we are going to talk about doing server rendering with our React components inside of Rails. An article by Tom Dale talks about misconceptions about server rendering. With so many misconceptions, what is it and why would you want it?

GitHub for Unity is now open source
The GitHub for Unity extension we announced at the Game Developers Conference last March is now open source!

ECharts v3.6 发布:自定义系列、极坐标柱状图
在 ECharts 新发布的 3.6 版本中,新增了 自定义系列(custom series),能让用户定制渲染逻辑,从而在已有坐标系中创造新的图表。此外还有极坐标柱状图、自定义维度映射、dataZoom 等其他一些增强。

Rax is a universal JavaScript library with a largely React-compatible API. If you use React, you already know how to use Rax. Fast: blazing fast virtual DOM. Tiny: 8.0 KB minified + gzipped. Universal: works in browsers, Weex, Node.js and could works more container that implement driver specification.

Automated testing with Headless Chrome
If you want to run automated tests using Headless Chrome, look no further! This article will get you all set up using Karma as a runner and Mocha+Chai for authoring tests.

An Image-Diff Is Worth 1,000 Words
使用 image-diff 来做测试

Node.js Will Overtake Java Within a Year: Analysis
Node.js went from 8% in 2013 to 26% in 2017 and Java went from 42% to 39% in the same period (% of respondents that use the language). Considering the trend(s), even with just a slight drop for Java, Mikeal’s prediction might be true if the Node.js 100% growth rate carries on. That means that Node.js in on the right track to take over Java in terms of users.

Gathering weak npm credentials
Or how I obtained direct publish access to 13% of npm packages (including popular ones). The estimated number of packages potentially reachable through dependency chains is 52%.

The Ultimate List of 38 JavaScript Tools
Below you’ll find the ultimate list of JavaScript tools for web developers to help you with various coding tasks. You’ll discover helpful instruments to boost the development flow, reduce risks, optimize code, enhance security, and even more. It is a useful guide for business owners to understand their dev teams better.

Five Huge CSS Milestones
I figured I could weigh in as well, focusing on around the last decade, which, coincidentally, is how old CSS-Tricks is. That just about matches up with my experience in the industry. Firebug, Chrome, CSS3, Preprocessing, Flexbox & Grid.

pnpm version 1 is out!

RE:DOM is a tiny DOM library by Juha Lindstedt and contributors, which adds some useful helpers to create DOM elements and keeping them in sync with the data. Because RE:DOM is so close to the metal and doesn’t use virtual dom, it’s actually faster and uses less memory than almost all virtual dom based libraries, including React. It’s also easy to create reusable components with RE:DOM. Another great benefit is, that you can use just pure JavaScript, so no complicated templating languages to learn and hassle with.

Infinite Scroll V3.0
nfinite Scroll is a JavaScript plugin that automatically adds the next page, saving users from a full page load. You’ve likely seen it in use all over the web.

Kitten Trick
A react native mobile starter kit with over 40 screens and theme hot reload support.

Go Language – Web Application Secure Coding Practices
The main goal of this book is to help developers avoid common mistakes while at the same time, learning a new programming language through a “hands-on approach”. This book provides a good level of detail on “how to do it securely” showing what kind of security problems could arise during development.
另附: AWS Security Primer.

VirtualAPK is a powerful yet lightweight plugin framework for Android. It can dynamically load and run an APK file (we call it LoadedPlugin) seamlessly as an installed application. Developers can use any Class, Resources, Activity, Service, Receiver and Provider in LoadedPlugin as if they are registered in app’s manifest file.

Base64 in Node.js is already crazy fast. Breaking the work up into chunks and adding async logic adds overhead. If you aren’t dealing with large files it will probably be more efficient to just block the event loop for the small amount of time it takes Node.js to process Base64 synchronously.

Over 150 of the Best Machine Learning, NLP, and Python Tutorials I’ve Found
After finding over 25 ML-related “cheat sheets”, I created a post that links to all the good ones. To help others that are going through a similar discovery process, I’ve put together a list of the best tutorial content that I’ve found so far. It’s by no means an exhaustive list of every ML-related tutorial on the web — that would be overwhelming and duplicative. Plus, there is a bunch of mediocre content out there. My goal was to link to the best tutorials I found on the important subtopics within machine learning and NLP.


Why Quip doesn’t have platform-specific engineering teams

Four Ways to Deflate the Discord that’s Killing Your Team
Start talking, Have a clear purpose, Plan conversations, Require accountability.

Netflix 在 2009 年释出了一份 100 多页的 PPT,讲述的企业文化精髓。这份 PPT 被 Facebook 公司的 COO 桑德伯格称为“硅谷最重要的文件”。Netflix 的工程文化,被很多国内一线互联网公司研究借鉴,这个外国的月亮,究竟圆在哪里?


稻盛和夫 - 让我成功做出2大世界级企业的思维方式