Rethinking Unit Test Assertions
The problem with most test frameworks is that they’re so busy making it easy for you to take shortcuts with their “convenient” assertions that they forget that the biggest value of a test is realized when the test fails. At the failure stage, the convenience of writing the test matters a lot less than how easy it is to figure out what went wrong when we read the test.

12 Factor CLI Apps
At Heroku, we’ve come up with a methodology called the 12 factor app. It’s a set of principles designed to make great web applications that are easy to maintain. In that spirit, here are 12 CLI factors to keep in mind when building your next CLI application. Following these principles will offer CLI UX that users will love.

Death by a thousand cuts - a checklist for eliminating common React performance issues
A pragmatic step-by-step guide to eliminating common react performance issues.

Start Performance Budgeting
If you’re building a web experience and want to stay fast, a performance budget can be critical. For success, embrace performance budgets and learn to live within them. Network & CPU limits on mobile can require asking hard questions like, “what is really important to my users?”

The Suspense is Killing Redux
At my latest workshops I’ve been getting this question: So does Suspense kill Redux? First, that’s a rude way to put it. But I get it, the suspense is killing you — or maybe Redux.

几十年来,我一直都在使用面向对象语言编程。 我使用的第一个面向对象语言是C ++,接着是Smalltalk,最后是.NET和Java。我曾经是面向对象三大范式:继承,封装和多态,狂热的拥趸者,为他们的所带来的遍历疯狂。我渴望得到它(面向对象)所承诺的重用性,并期待自己能站在前人的肩膀上,进入这块全新、美好的土地。一想到只要将现实世界的物体映射到他们对应的类中,他们就能整齐的找到自己的位置,我就无法抑制自己的兴奋。但“我不能错的更多”。


微前端(Micro-Frontend),是将微服务(Micro-Services)理念应用于前端技术后的相关实践,使得一个前端项目能够经由多个团队独立开发以及独立部署。本文中将会以此为目标,从零构建一套微前端的开发方案的最佳实践*,并用于完成 Micro Frontends 网站中的示例应用。


Why We Decided to Rewrite Uber’s Driver App
This article is the first in a series covering how Uber’s mobile engineering team developed the newest version of our driver app, codenamed Carbon, a core component of our ridesharing business. Among other new features, the app lets our population of over three million driver-partners find fares, get directions, and track their earnings. We began designing the new app in conjunction with feedback from our driver-partners in 2017, and began rolling it out for production in September 2018.

Understanding the difference between grid-template and grid-auto
To summarize, the grid-template-* properties are used to create, place, and size cells for the explicit grid. Any cell that exists in the grid that is not explicitly created by this property forms part of the implicit grid, which can be sized by the grid-auto-* properties.

Building Enterprise Software on LinkedIn’s Consumer Stack: Behind the Scenes of LinkedIn Talent Hub
In this blog post, we will discuss the foundational building blocks that were either built from scratch, or created by modifying existing platforms, to power LinkedIn’s new Talent Hub product.

Why we need the distributed web
The distributed web seeks to make peer-to-peer content distribution the new default. This should help make the web topology more democratic and resilient to nature and political whims.

Infrastructure as Code - Getting Started with Terraform
This blog post serves as a brief introduction to what Infrastructure as Code is, as well as how to get started using it with Terraform. Although Terraform can be used with many cloud providers, the post focuses particularly on deploying resources to AWS.

Dropbox traffic infrastructure: Edge network
Dropbox has more than half a billion registered users who trust us with exabytes of data and petabytes of corresponding metadata. For the Traffic team this means millions of HTTP requests and terabits of traffic. To support all of that we’ve built an extensive network of points of presence (PoPs) around the world that we call Edge. 另附 Dropbox 的 Using machine learning to index text from billions of images

Applying machine intelligence to GitHub security alerts
We created a machine learning model that scans text associated with public commits (the commit message and linked issues or pull requests) to filter out those related to possible security upgrades. With this smaller batch of commits, the model uses the diff to understand how required version ranges have changed.

Writing system software: code comments
In this post I analyze Redis comments, trying to categorize them. Along the way I try to show why, in my opinion, writing comments is of paramount importance in order to produce good code, that is maintainable in the long run and understandable by others and by the authors during modifications and debugging activities.


CKEditor 5 v11.1.0 released
This editor version brings the long-awaited media embed feature, support for block content in tables, tables available in real-time collaborative editing and many smaller features and improvements. We also streamlined our Operational Transformation engine to improve its support for already implemented collaboration features as well as those planned in the near future (like “suggestion mode”).

Ionic 4 Beta: What’s New and Building a Sample App
In this article, you will learn about what’s new in Ionic 4, changes in the existing features, how to migrate your Ionic 3 app to Ionic 4 app, and about using Ionic with Stencil and Capacitor. Finally, you will create a simple application using Ionic 4 to see the new version of this framework in action.

Custom Elements Now ‘In Development’ on Microsoft Edge
Edge is the last major browser to get on board with custom elements. Shadow DOM is being worked on, too. 另附:Firefox to support Google’s WebP image format for a faster web

Microsoft Joins the Open Invention Network Community
Microsoft’s participation in OIN will drive additional innovation and enhance patent non-aggression in Linux and adjacent OSS technologies. 另附:又提倡开源,又不给资金、人力资源,谁之过

Calls between JavaScript and WebAssembly are finally fast
In the latest version of Firefox Beta, calls between JS and WebAssembly are faster than non-inlined JS to JS function calls. 另附:Walt is a JavaScript-like syntax for WebAssembly text format.

An in-progress (as in very-alpha) implementation of the DOM API intended to run within a Web Worker. Purpose: Move complexity of intermediate work related to DOM mutations to a background thread, sending only the necessary manipulations to a foreground thread.

A tiny javascript library for obfuscating and revealing text in DOM elements.

A collection of CSS3 powered hover effects to be applied to links, buttons, logos, SVG, featured images and so on. Easily apply to your own elements, modify or just use for inspiration. Available in CSS, Sass, and LESS.

Bloom Filter
This JavaScript bloom filter implementation uses the non-cryptographic Fowler–Noll–Vo hash function for speed.

A curated list of awesome MongoDB resources, libraries, tools and applications. 另附:mLab is becoming a part of MongoDB.

Muze - Composable data visualisation library for web with a data-first approach
Compose data-driven layers to create interactive visualizations in JavaScript with relational algebra supported data model.

A really fast static spatial index for 2D points and rectangles in JavaScript. An efficient implementation of the packed Hilbert R-tree algorithm. Enables fast spatial queries on a very large number of objects (e.g. millions), which is very useful in maps, data visualizations and computational geometry algorithms.

ferret is a web scraping system aiming to simplify data extraction from the web for such things like UI testing, machine learning and analytics. Having its own declarative language, ferret abstracts away technical details and complexity of the underlying technologies, helping to focus on the data itself. It’s extremely portable, extensible and fast.

Boltons is a set of over 220 BSD-licensed, pure-Python utilities in the same spirit as — and yet conspicuously missing from — the standard library. 另附:Camelot, a Python Library to Extract Tabular Data from PDFs.

Turn the web into a database: An alternative to web crawling/scraping
Mixnode turns the web into a giant database! In other words, Mixnode allows you to think of all the web pages, images, videos, PDF files, and other resources on the web as rows in a database table; a giant database table with trillions of rows that you can query using the standard Structured Query Language (SQL).

NVIDIA and Open-Source Ecosystem Come Together to Accelerate Data Science
While the world’s data doubles each year, CPU computing has hit a brick wall with the end of Moore’s law. For this reason, scientific computing and deep learning have turned to NVIDIA GPU acceleration. Data analytics and machine learning haven’t yet tapped into the GPU as systematically. That’s changing.


Designing Experiences To Improve Mental Health
Designing apps for mental health is one area where UX designers can have a huge impact. In this article, we’ll look at the issues with current apps, and guidelines to ensure UX practitioners are using clinically proven methods for improving mental health treatment.

Here’s What You Need to Know About Color Accessibility in Product Design
As a Product Designer at Handsome, I recently worked with a client to create the most complex implementation of an accessible color system that I’ve had a chance to work on, and thought I’d pass along some of my learnings.

Designing a Styleguide: Elements That Go Into Building Compelling Products
The goal of this article is to introduce you to some well-thought-out styleguides and branding guidelines. It also details some of the most important elements every styleguide should have.


InVision has no physical headquarters and all 700 employees work remotely
All 700 employees at this startup work remotely. Here’s why one of its top execs says it’s given them a major edge over the competition.



It doesn’t have to be crazy at work
阮老师推荐的这本书蛮不错的。是不是一定要那么多加班?这本书说,也不是。加班多的一个因素是,公司没有好好珍惜员工的时间,打断工作的事情特别多,最典型的举措就是开放式办公室,使得人们互相干扰,员工因此不得不加班,因为在正常时间内无法完成工作。作者认为,公司应该创造条件,让员工全身心投入工作,不要拖到夜深人静时才能没有打扰。同时,这本书也指出,IT 公司的工作任务也确实过多:无休止的需求、不断的营销活动、精确到小时的排期,都给工程师带来了焦虑和压力。普通的行业,用户一年增长一倍,绝对是值得庆祝的,但是 IT 行业不行。这个行业渴望的是一年增长十倍,甚至百倍,要的是从0变成独角兽的那种速度。这本书的主张是,软件行业也可以是一个平静的行业,而不一定像现在这样,是一个加速再加速的行业。平静才是长期可持续发展的关键。另附:来自Y Combinator的一份40岁的人生建议.


作者:2betop (https://github.com/2betop) - 念我昵称的时候请用英文发音,谢谢!

- 百度数据可视化
- 百度智能建站