CLUI: Building a Graphical Command Line
At Repl.it, where our goal is to build a simple yet powerful programming environment, we run into UI scalability issues every time we have an IDE feature to add. So when it came to building our admin tools, we decided to explore a new UI paradigm. We often need to do simple things like changing single values in the database, so it’s usually easier to connect to the database directly and run some SQL than build new UI for it. But that’s both unsafe and excludes anyone unfamiliar with SQL or the CLI. So we asked ourselves, “how can we marry the conciseness of CLIs with approachability of GUIs in the same interface?”

Please stop recommending Git Flow!
Git-flow is a branching and merging methodology popularized by this blog post, entitled “A Successful Git branching model”. In the last ten years, countless teams have been snookered by the headline and dare I say lied to. If you read the blog post, the author claims they successfully introduced it in their projects, but purposefully doesn’t talk about the project details that made it successful. The end, right? Well, not quite. I can tell a few of you are unconvinced by this line of reasoning, so let’s dig deeper into why the gitflow branching model should die in a fire. 另附来自 GitLab 的 The problem with Git flow.

The Elephant in the Architecture
why business value should be treated as an architectural attribute

The History of the URL
In the world of web applications, it can be a little odd to think of the basis for the web being the hyperlink. It is a method of linking one document to another, which was gradually augmented with styling, code execution, sessions, authentication, and ultimately became the social shared computing experience so many 70s researchers were trying (and failing) to create. Ultimately, the conclusion is just as true for any project or startup today as it was then: all that matters is adoption. If you can get people to use it, however slipshod it might be, they will help you craft it into what they need. The corollary is, of course, no one is using it, it doesn’t matter how technically sound it might be. There are countless tools which millions of hours of work went into which precisely no one uses today.

G2 4.0 正式版发布!
G2 是一套面向常规统计图表,以数据驱动的高交互可视化图形语法。经历了为期半年的大规模底层重构和开发迭代,G2 4.0 终于和大家见面了。作为继 2017 年 11 月 22 日 G2 3.0 正式开源发布以来 G2 的第二次大版本发布,4.0 版本仍坚守着『打造数据驱动的高交互图形语法』的初心,在图形语法的基础上,新增了交互语法,同时在产品的功能、体验、易用性和灵活性等各个方面进行了全面提升。

发布 UMI 3,插件化的企业级前端应用框架
Umi 2 发布已经是一年半之前的事了,在这段时间里,我们发现之前的架构正逐渐不能满足业务飞速发展的需要,于是我们重写了一遍 Umi。经过几个月的 “007 ” 研发,Umi 3 在今天正式和大家见面了,并调整 slogan 为“插件化的企业级前端应用框架”。

What React Does (and Doesn’t Do)
React doesn’t do a whole lot. Don’t get me wrong – it’s great at what it does! But the things React is actually responsible for, in a fully-functioning production app? That list is pretty small. The universe of things you might call “a React problem” or “a React thing” is probably smaller than you think.

Building with Web Components
Web components seeks to tilt the balance of web development back towards a standard agreed upon by browser vendors and developers. Various polyfills and proprietary frameworks have achieved what web components are now trying to standardize: composable units of JavaScript and HTML that can be imported and reused across web applications. Let’s explore the history of web components and the advantages they provide over third-party libraries.

Flutter + Dart, or how to quickly build a mobile app without losing (too much of) your hair
In this day and age there’s a steady influx of new, revolutionary frameworks, be it frontend-related or mobile. If one has been active in web development, she or he should be well acquainted with the constant oversupply of fresh, ingenious approaches and lightweight solutions to complex problems. This usually solves one issue and creates another – instead of wondering whether there is a technology that’s viable for us to use, we are currently left with the equally frustrating choice of which one of them we should pick. This is why when I stumbled upon Flutter, I was quite interested in giving it a go – could it be a viable contender, or maybe even serve as a go-to solution that would give this dilemma at least a moment’s pause?

Collaborative writing and how to implement it in your application
In the rest of this article, we are going to focus on the type of collaboration environment where the rules are yours to make. Writing is a creative process, the workflow and writing style depend on each case and individual. We believe modern content creation and collaboration need to be flexible to fit these individual workflow needs.

Introducing Alpine.js: A Tiny JavaScript Framework
Ever built a website and reached for jQuery, Bootstrap, Vue.js or React to acheive some basic user interaction? Alpine.js is a fraction of the size of these frameworks because it involves no build steps and provides all of the tools you need to build a basic user interface.

An Interactive Introduction to D3
D3, the JavaScript library for producing interactive data visualizations, has just turned 9 years old so you’re probably familiar with it by now.. but this introduction is particularly neat as it’s an example of a live, interactive ‘notebook’ style tutorial.

3 Rules of React State Management
State inside a React component is the encapsulated data that is persistent between renderings. useState() is the React hook responsible for managing state inside a functional component.

Stop Using ‘Drop-down’
Stop using the word drop-down. Instead choose a term that accurately describes the control you want.

ES modules in Node today
In Node.js, the module system has come a long way from its earlier adoption of CommonJS. Today, ECMAScript modules (ES modules), though still experimental at the time of writing, are the official standard for packaging code for reuse in both client- and server-side JavaScript.

Understanding the ECMAScript spec, part 2
In part 1 of this series we read through a simple method — Object.prototype.hasOwnProperty — and abstract operations it invokes. We familiarized ourselves with the shorthands ? and ! related to error handling. We encountered language types, specification types, internal slots, and internal methods.

In favor of small modules and plumbing
In the JavaScript/Node.js community there have been fiery debates over whether publishing super-focused modules to npm is a positive thing or not. Installing a module that consists of maybe 50 lines of code or so but does a specific thing you need well is a good thing. No need to copy/paste the same lines of code in all of your projects. Then again, does publishing such modules pollute the world’s most popular JavaScript package manager and snatch awesome package names away from multi-faceted modules? As with most things, it boils down to perspective. This post examines how I used to be of the mindset that publishing a plethora of “focused” modules is a waste of time but now think is a fantastic idea.

Best practices for REST API design
In this article, we’ll look at how to design REST APIs to be easy to understand for anyone consuming them, future-proof, and secure and fast since they serve data to clients that may be confidential.

Simple vs. Complicated vs. Complex vs. Chaotic
What do these have to do with systems and software projects?

Moving Fast At Scale
An engaging 35 minute talk from a senior technology leader (and now VP Engineering at WeWorkd) and the art of building teams to work on large scale technology engineering challenges. No raw tech here, this is all about organization.

Formal Foundations of Serverless Computing
This academic paper focuses on the semantics of serverless computer and veers off into mathematical terminology pretty quickly. There’s definitely some interesting bits and pieces in here but admittedly goes over my head quite fast(!) 另附:The 3 Laws of Serverless.

Project LightSpeed: Rewriting the Messenger codebase for a faster, smaller, and simpler messaging app
To build this new version of Messenger, we needed to rebuild the architecture from the ground up and rewrite the entire codebase. This rewrite allowed us to make use of significant advancements in the mobile app space since the original app launched in 2011. In addition, we were able to leverage state-of-the-art technology that we’ve developed over the intervening years. Starting today, we are excited to roll out the new version of Messenger on iOS globally over the next few weeks. Compared with the previous iOS version, Messenger is twice as fast to start* and one-fourth the size. With this new iteration, we’ve reimagined how Messenger thinks about building apps and started from the ground up with a new client core and a new server framework.

Why Graph Will Win
It’s important to be frank about the problems of graphs and RDF and not just whistle the marketing tune because as soon as the technology is out there in the hands of developers, they will find the problems and will be inclined to reject the technology as pure hype if all they have heard are songs of breathless wonder. In the last couple of years, while trying to sell graph databases into bricks and mortar companies, by far the most hostile reactions I’ve come across have been from technologists who got bitten by the Semantic Web bug in the early 2000s. Once bitten twice shy. However, if you were to assume that I’m a critic of graph databases, you would be very wrong. I’ve spent most of the last decade building graph database management systems because to me it’s incredibly obvious that in the long run graph is going to win and here’s why.

Baidu Migrates Off Sharded MySQL to CockroachDB
Baidu migrated from sharded MySQL to CockroachDB to automate operations of two production applications that access 2TB of data with 50M inserts a day.

What’s so hard about PDF text extraction?
There is a common view that extracting text from a PDF document should not be too difficult. After all, the text is right there in front of our eyes and humans consume PDF content all the time with great success. Why would it be difficult to automatically extract the text data?

I want off Mr. Golang’s Wild Ride
This article is going to have a different tone from what I’ve been posting the past year - it’s a proper rant. And I always feel bad writing those, because, inevitably, it discusses things a lot of people have been working very hard on. In spite of that, here we are.


Four First Public Working Drafts published by the CSS Working Group
CSS Color Module Level 5 extends CSS Color [css-color-4] to add color modification functions. Media Queries Level 5 allows authors to test and query values or features of the user agent or display device, independent of the document being rendered. CSS Transforms Module Level 2 allows elements styled with CSS to be transformed in two-dimensional or three-dimensional space. CSS Conditional Rules Module Level 4 contains the features of CSS for conditional processing of parts of style sheets, conditioned on capabilities of the processor or the document the style sheet is being applied to. 另附:Why Are We Talking About CSS4?.

Node.js Best Practices
The Node.js best practices list (March 2020).

p5.js 1.0 is Here!
We are excited to announce the 1.0 Release of p5.js! p5.js is a JavaScript library that aims to make creative expression and coding on the web accessible and inclusive for artists, designers, educators, and beginners.

rollup 2.0
As any major, it is first and foremost about getting rid of old, deprecated, rotting and smelling stuff. But there are some cool things hidden as well…

Immer V6.0
Create the next immutable state tree by simply modifying the current tree.

Popular icon packs like Font Awesome, Material Design, and Octicons, available as React Styled Components.

Edtr.io is a WYSIWYG in-line web editor written in React. Content created with Edtr.io looks just like the final page - select any editable element on the page, edit it in-place or drag ’n’ drop it around.

react-mosaic is a full-featured React Tiling Window Manager meant to give a user complete control over their workspace. It provides a simple and flexible API to tile arbitrarily complex react components across a user’s view. react-mosaic is written in TypeScript and provides typings but can be used in JavaScript as well.

A pure JavaScript implementation of git for node and browsers!

Minimal interactive command-line prompts

Radiooooo – The Music Time Machine


The Designer’s Edge – An Overview of Photoshop Plugins
Photoshop plugins are used by designers in multiple disciplines. They add functionality, increase efficiency, and enhance creativity. But there’s a problem. With so many options, it’s hard to know which plugins are worthwhile (even more so when they cost money). To help, we’ve curated a collection of the finest Photoshop plugins available and summarized the strengths of each.

Voice First Design: A Movement Toward Voice-Based Interaction
As voice interactions and voice searches are increasingly becoming commonplace, leading companies around the world are increasingly embracing the voice-first design principle. To understand the revolutionary role played by voice-first design in the process mobile app design passes through, we need to explain how it works and what are the fundamental principles and effective practices for this design principle to work consistently.

5 Principles of Visual-Design in UX
The principles of scale, visual hierarchy, balance, contrast, and Gestalt not only create beautiful designs, but also increase usability when applied correctly.



The Secret to Enjoying Nature Is … Your Phone
I was spending way too much time staring at outdoorsy influencers on Instagram. So I downloaded the iNaturalist app—and stepped outside myself.

How to Make Yourself Into a Learning Machine
Shopify’s Director of Production Engineering explains how reading broadly helps him get to the bottom of things



10 年,千亿,美团这家公司为什么有点「不一样」
科学和技术,一个是告诉你该做什么,一个告诉你该怎么做。至于追求真理,就是为了追求对的事情,符合规律的事情,而不是沉浸于惯性和自我执着之中。你看我们今天谈到这么多算法,其实都在不断印证美团「以科学技术追求真理」这个底层的共性的东西。这个世界观就是美团所有算法的算法。 「按照规律做事情」这句看上去很虚的话,美团显然是超级相信并实践的。而且我们看到这样一套按照规律做事情的「算法」是很有效的。从美团身上,我们能感受到这种追求科学做事的方法,就是他能发展壮大根本的原因。甚至不止美团,我们在拼多多、字节跳动等一大批企业身上也看到了这些共性。 为什么这些新生代企业会有这样的共性呢?我想,或许是因为他们的创始人都关注如何去构建一套生生不息,更大影响的系统,而不是他们内心一个什么特定的梦想。也因为他们这种强调「把自己放小,把规律和事情放大」,所以这些公司才能够最有效地利用各种资源来不断实现目标。 另附:美团技术十年:让我们感动的那些人那些事


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