Software Architecture is Overrated, Clear and Simple Design is Underrated
Software architecture best practices, enterprise architecture patterns, and formalized ways to describe systems are all tools that are useful to know of and might come in handy one day. But when designing systems, start simple and stay as simple as you can. Try to avoid the complexity that more complex architecture and formal tools inherently introduce.

The 6 Most Common Types of Logic in Large Applications [with Examples]
In this article, you’ll learn about the Clean Architecture, why we should separate the concerns of large applications into layers, the 6 most common types of application logic, and which layer they belong to.

Eric Evans Wants to Improve the Language of DDD
Evans believes that now, 15 years after his book was published, it may be time to take a few steps back to the fundamentals, then consciously make new steps forward. One area of focus should be to address the confusion that results from the common alignment of bounded contexts, subdomains, and organizations.

A Guide to Component Driven Development (CDD)
Let components drive the development of your applications.

Wikipedia’s JavaScript initialisation on a budget
This week saw the conclusion of a project that I’ve been shepherding on and off since September of last year. The goal was for the initialisation of our asynchronous JavaScript pipeline (at the time, 36 kilobytes in size) to fit within a budget of 28 KB – the size of two 14 KB bursts of Internet packets. In total, the year-long effort is saving 4.3 Terabytes a day of data bandwidth for our users’ page views.

Contemporary Front-end Architectures
How we got here? A front-end engineer’s perspective!

How we reduced traffic 10-20 times - data compression in real-time collaboration
When you are creating a complex system from scratch, you have hundreds of problems to solve and the amount of data you send over the network is usually not the first one to be tackled. It was no different in CKEditor 5. Donald Knuth once wrote: “Premature optimization is the root of all evil.” Optimizing upfront, before we know that we actually need to, is something that we consciously avoid when building our WYSIWYG editor capable of handling features such as real-time collaboration.

斯坦福教授、Tcl语言发明者John Ousterhout 的著作《A Philosophy of Software Design》[1],自出版以来,好评如潮。按照IT图书出版的惯例,如果冠名为“实践”,书中内容关注的是某项技术的细节和技巧;冠名为“艺术”,内容可能是记录一件优秀作品的设计过程和经验;而冠名为“哲学”,则是一些通用的原则和方法论,这些原则方法论串起来,能够形成一个体系。正如”知行合一”、“世界是由原子构成的”、“我思故我在”,这些耳熟能详的句子能够一定程度上代表背后的人物和思想。用一句话概括《A Philosophy of Software Design》,软件设计的核心在于降低复杂性。 本篇文章是围绕着“降低复杂性”这个主题展开的,很多重要的结论来源于John Ousterhout,笔者觉得很有共鸣,就做了一些相关话题的延伸、补充了一些实例。虽说是”一般原则“,也不意味着是绝对的真理,整理出来,只是为了引发大家对软件设计的思考。

面对框架之间的范式之争,我们需要主动接收正面的、反面的,各种不同的信息,减少信息极化。我们需要了解 JavaScript 是一个多范式的语言。而不同的范式,有各自适用的场景。就算框架作者们强调了自己关注的范式和路线,不代表他们否定其它范式。我们可以通过编译技术,和语言的元编程特性(比如 Proxy/Reflect),让我们的代码得到新的语义和行为,构建不同范式之间的衔接点。保持开放和包容的心态。打破框架的范式之争,实际上,是打破我们心中的偏见。

从网页到应用 - 所经历的前端发展史

互联网公司技术选型三定律 1. 流行即正义 2. 新鲜即正义 3. 复杂即正义。本文分为两个部分:“战略”和“战术”。前者关于为什么以及在什么场景下使用微前端,后者关于采用什么的技术实施微前端。这篇文章里我会反对某些方案,赞成某些方案,仅代表个人意见。开头的“互联网公司技术选型三定律”是我个人总结的,也是我在这篇文章里极力反对的。这三条定律的产生有行业的原因也有程序员职业的原因。三定律的存在导致了某些技术的被曲解和滥用,其中就有微前端。在本文中也会引用这三定律做说明。 if people can’t build monoliths properly, microservices won’t help.

(Why) Some HTML is “optional”
Chris Coyier blogged recently on weird looking HTML. It’s a nice short post and I’d say it’s worth knowing these optional features (potentially known as defaults). My favourite optional is <script> and not having to include the type attribute. But Chris’ first example is the most common, the optional closing </p> tag. What (I think) is an interesting question is: why?

Why Go and not Rust?
Go is a better Java / C#, while Rust is not. The clarity that Go can bring to enterprise software development is without a doubt much more valuable than removing garbage collection at the cost of worsening the overall productivity. Rust is a better C++, and even if you occasionally hear that Go is a better C, well, that’s just not the case. No language with a built-in garbage collector and runtime can be considered a C. And don’t be mistaken, Rust is a C++, not a C. If you want a better C, take a look at Zig. 另附:TinyGo - Go compiler for small places.


Unveiling Dark, a New Language and Environment for Backends
Backends are needlessly complicated. Dark is a holistic programming language, editor, and infrastructure for building backends without accidental complexity. Dark’s mission is to democratize coding by making it 100x easier to build software, so the next billion people can code.

The arrival of Java 13!
Five enhancements are delivered with Java 13, inclusive of two preview features: Dynamic CDS Archives, ZGC: Uncommit Unused Memory, Reimplement the Legacy Socket API, Switch Expressions (Preview), Text Blocks (Preview).

IPFS Desktop 0.9 released
IPFS Desktop has come a long way to reach its current form. We are here to celebrate and announce the release of 0.9.0 and share the story of this application and, of course, all the exciting new features.

New Query Language for Graph Databases to Become International Standard
Neo4j, the leader in graph databases, announced today that the international committees that develop the SQL standard have voted to initiate GQL (Graph Query Language) as a new database query language. Now to be codified as the international standard declarative query language for property graphs, GQL represents the culmination of years of effort by Neo4j and the broader database community.

Learning Machine Learning - An online comic from Google Ai
另附:Machine Learning For Front-End Developers With Tensorflow.jsAI-Generated Faces: Free Resource of 100K Faces Without Copyright.

All 245 Entries in The 2019 JS13kGames Competition
HTML5 and JavaScript Game Development Competition in just 13 kB.

React Rainbow Components: Another Suite of React Components
React Rainbow is a collection of components that will reliably help you build your application in a snap. Give it a hack and let us know what you think.

Relay 6.0.0
Relay is a JavaScript framework for building data-driven React applications.

Storybook 5.2
World-class design systems infrastructure.

GPU.js v2.0
GPU.js is a JavaScript Acceleration library for GPGPU (General purpose computing on GPUs) in JavaScript for Web and Node.

Kea - Data Layer for React. Powered by Redux.
Think of React as the User Interface (UI) layer of your application. It takes your application’s state and converts it into something the user can interact with. It is exceptionally good at this. React, however, is unopinionated as to where you actually store this state. While it provides some primitives to get you going (think useState), most apps eventually implement a dedicated state management solution. Kea is one such solution. It adds a Data Layer to React’s UI layer and acts as the brain of your application. There is seamless interoperability between both layers as we are standing on the great work done by the react-redux team.

JavaScript library for reorderable drag-and-drop lists

A JavaScript library for doing geometry.

Emittery - Simple and modern async event emitter
Emitting events asynchronously is important for production code where you want the least amount of synchronous operations. Since JavaScript is single-threaded, no other code can run while doing synchronous operations. For Node.js, that means it will block other requests, defeating the strength of the platform, which is scalability through async. In the browser, a synchronous operation could potentially cause lags and block user interaction.

Neovim v0.4.0
Vim-fork focused on extensibility and usability.

Free Online Image Editor
an online image editor using WebGL and CSS transforms

Microsoft’s C++ Standard Library
This is the official repository for Microsoft’s implementation of the C++ Standard Library (also known as the STL), which ships as part of the MSVC toolset and the Visual Studio IDE.

Modern C, Second Edition
A new edition of the book Modern C is now available under a CC license via the following page https://modernc.gforge.inria.fr/ . This edition is the result of a collaboration with Manning, and improves a lot over the previous edition; material has been rewritten and reordered, a lot of graphics have been added.

Pure Bash Bible
A collection of pure bash alternatives to external processes. The goal of this book is to document commonly-known and lesser-known methods of doing various tasks using only built-in bash features. Using the snippets from this bible can help remove unneeded dependencies from scripts and in most cases make them faster. I came across these tips and discovered a few while developing neofetch, pxltrm and other smaller projects

The Pragmatic Programmer, 20th Anniversary Edition
For twenty years, the lessons from The Pragmatic Programmer have helped a generation of programmers examine the very essence of software development, independent of any particular language, framework, or methodology. This classic title is regularly featured on “Top Ten” lists, and many corporations issue it to their new hires. This new 20th Anniversary Edition offers a fresh look at the modern development landscape, cutting through the “business as usual” and tired advice from the net to help guide you through the next twenty years and beyond. Featuring new tips, new topics, and revisions throughout, you don’t want to miss this one.

Grant for the Web
Grant for the Web is a $100M fund to boost open, fair, and inclusive standards and innovation in web monetization.


Ant Design 1.0 背后的故事:把艺术变成技术
距离 Ant Design 1.0 发布,已经过去整整 3 年有余。还是有很多人对 Ant Design 如何起步、如何成长,保留着浓厚的兴趣。其中,Ant Design 是一个设计体系,而 Ant Designers 是一群人。本文将讲讲 Ant Design 1.0 背后的故事,还原 3-4 年前那些人、那些事。


iOS and iPadOS 13: The MacStories Review
Following years of a judicious union between platforms, it’s time for iPad to embark on its own journey. 另附:How To Prepare Your App For iOS 13.

Mixing UX and Research Science to Make Music
Lessons in design considerations and communication best practices, from two teams that cross-pollinated and built a ML-powered music-making tool.

Sketch 58 — Smart Layout!
This is the most important feature since Symbol Overrides. Finally, you can make Symbols that behave in the same way as its final implementation — everything thanks to Smart Layout. In this story, you will learn what Smart Layout is and what kind of more granular features it includes. I will also show you how to use it in practice.

Level Up – A Guide to Game UI (with Infographic)
Like websites or mobile apps, video games have common UI components that help players navigate, find information, and accomplish goals. From start screens to coin counters, video game UI components are a crucial aspect of playability (a player’s experience of enjoyment and entertainment). To understand how these components impact the gaming experience, we must quickly address two concepts that are vital to video game design: Narrative and The Fourth Wall.


The Internet Relies on People Working for Free
Who should be responsible for maintaining and troubleshooting open-source projects? 另附:5年没有工资收入,他如何支撑世界上最大的免费编程社区?

Raising Prices is Hard
Everyone is faced with the decision to raise prices at some point. It sucks, but in some cases you have to do it. Most companies, especially SaaS businesses, will look at their revenue forecasts, see a dip, run a calculation predicting the difference between the revenue increase and how many customers might leave, and then raise prices if the math looks favorable. Backblaze is not most companies — here’s how we did it. In this post I’ll dive in to our process for how we wanted the price increase to go, why we decided to build the extension program for existing customers, what went in to our communication strategy, and what the reactions were to the price increase, including looking at churn numbers.



对数据可视化有兴趣的可以阅读由 AntV 带来的 墨者修齐 2019-09-23·植物身上的黄金分割、WDVP Gallery 2019、通俄门调查可视化

作者:renpin (https://github.com/RickCole21) - Wubba lubba dub dub

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