Home

2018.10.15 - 12 Factor CLI Apps

Pi

Ping Xia

March 21, 20226 min read

Title: 2018.10.15 – 12 Factor CLI Apps

Deep Reading

Rethinking Unit Test Assertions https://medium.com/javascript-scene/rethinking-unit-test-assertions-55f59358253f
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 https://medium.com/@jdxcode/12-factor-cli-apps-dd3c227a0e46
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 https://logrocket-blog.ghost.io/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 https://addyosmani.com/blog/performance-budgets/
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 https://medium.com/@ryanflorence/the-suspense-is-killing-redux-e888f9692430
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.

[Translation] Goodbye, Object‑Oriented Programming https://mp.weixin.qq.com/s?__biz=MzU0Nzk1MTg5OA==&mid=2247483877&idx=1&sn=39cc95efadec791b8ca572e27d94ef92
For decades I have been programming in object‑oriented languages. My first OO language was C++, followed by Smalltalk, then .NET and Java. I was once a fervent fan of the three classic OO paradigms—inheritance, encapsulation, and polymorphism—and was thrilled by the promise of reuse they offered. I imagined mapping real‑world objects to corresponding classes and watching everything fall neatly into place. But “I couldn’t be more wrong.”

Frontend Security Series II: How to Prevent CSRF Attacks https://tech.meituan.com/fe_security_csrf.html
Compared with XSS, CSRF doesn’t seem to have the same notoriety; many people think “CSRF isn’t that destructive.” Is that really the case? Let’s invite Xiao Ming back on stage for another “shining” appearance.

The Refined Journey of Micro‑Frontend Development https://zhuanlan.zhihu.com/p/46284079
Micro‑Frontend applies the micro‑services mindset to front‑end development, allowing a single front‑end project to be built and deployed independently by multiple teams. This article aims to construct, from scratch, a best‑practice micro‑frontend development solution and use it to implement the example app in the Micro Frontends website.

The Ultimate Exploration of Deep Cloning https://yanhaijing.com/javascript/2018/10/10/clone-deep/
In this post I’ll demystify deep cloning, progressing from simple to complex. I cover four deep‑clone techniques, each with its own characteristics and quirks.

Why We Decided to Rewrite Uber’s Driver App https://eng.uber.com/rewrite-uber-carbon-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 https://bitsofco.de/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 these properties belongs to 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 https://engineering.linkedin.com/blog/2018/10/building-linkedin-talent-hub
In this blog post, we discuss the foundational building blocks that were either built from scratch or created by extending existing platforms to power LinkedIn’s new Talent Hub product.

Why We Need the Distributed Web https://www.ctrl.blog/entry/the-dweb
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 natural and political whims.

Infrastructure as Code – Getting Started with Terraform https://blog.scottlogic.com/2018/10/08/infrastructure-as-code-getting-started-with-terraform.html
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 https://blogs.dropbox.com/tech/2018/10/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. Also see Dropbox’s Using machine learning to index text from billions of images (https://blogs.dropbox.com/tech/2018/10/using-machine-learning-to-index-text-from-billions-of-images/).

Applying Machine Intelligence to GitHub Security Alerts https://blog.github.com/2018-10-09-applying-machine-intelligence-to-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 http://antirez.com/news/124
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 themselves during modifications and debugging.

Fresh Picks

CKEditor 5 v11.1.0 Released https://ckeditor.com/blog/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 …

(content truncated)


Originally written by Ping Xia (平侠) and published in Chinese on Web技术周刊 (Web Tech Weekly). Translated and adapted for DriftSeas with permission.

Keep reading

More related articles from DriftSeas.