Design Systems 101

Mike's Notes

An excellent overview of what a Design System is from Therese Fessenden, of NN Group.

Including the relationships and definitions of;

  • style guide
  • component library,
  • pattern library.
This article provides guidelines for future work on the Pipi Design System Engine (dsg), which is designed to host users' design systems.

Resources

References

  • Reference

Repository

  • Home > Design System > 

Last Updated

24/04/2025

Design Systems 101

By: Therese Fessenden
NN Group: 11/04/2021

Therese Fessenden is a Senior Experience Specialist with Nielsen Norman Group and host of the NN/g UX Podcast. Her research focuses on understanding human behaviour, attitudes, and expectations in order to better orchestrate system and service design strategies.

Summary:

A design system is a set of standards to manage design at scale by reducing redundancy while creating a shared language and visual consistency across different pages and channels.

As UI design has evolved over the years, the scale and speed at which UI screens must be created has also increased. Not only are there millions of applications and billions of websites (with more created each year), but each of those apps and websites might have hundreds or thousands of pages (or screens). With this drastic expansion comes a dire need for organizations to streamline design work. So, many design teams leverage robust design systems to manage designs at scale.

Definition: A design system is a complete set of standards intended to manage design at scale using reusable components and patterns.

Why Use a Design System?

Design systems, when implemented well, can provide a lot of benefits to a design team:

Design (and development) work can be created and replicated quickly and at scale.

The primary benefit of design systems is their ability to replicate designs quickly by utilizing premade UI components and elements. Teams can continue to use the same elements over and over, reducing the need to reinvent the wheel and thus risking unintended inconsistency.

It alleviates strain on design resources to focus on larger, more complex problems.

Since simpler UI elements are created already and reusable, design resources can focus less on tweaking visual appearance and more on more-complex problems (like information prioritization, workflow optimization, and journey management). While this payoff might seem small when you create only a small number of screens, it becomes substantial when you must coordinate efforts across dozens of teams and thousands of screens.

It creates a unified language within and between crossfunctional teams.

Especially when design responsibilities shift or when teams become geographically dispersed, a unified language reduces wasted design or development time around miscommunications. For example, the functionality or appearance of a dropdown menu would not be debated, since that term is reserved for a specifically defined element within the design system.

It creates visual consistency across products, channels, and (potentially siloed) departments.

Particularly when teams work in silos, where each product or channel operates independently of the others, the absence of an organization-wide design system can lead to inconsistent visual appearance and  experiences that seem fragmented or unrelated to the brand. Design systems provide a single source of components, patterns, and styles and unify disjointed experiences so that they are visually cohesive and appear to be part of the same ecosystem. As an added bonus, any major visual rebrands or redesigns can be managed at scale through the design system.

It can serve as an educational tool and reference for junior-level designers and content contributors. 

Explicitly written usage guidelines and style guides help onboard individual contributors who are new to UI design or content creation and also serve as a reminder for the rest of the contributors.

Why Not Use a Design System?

There are some potential hurdles and limitations which may prevent a design team from using a design system:

  1. Creating and maintaining a design system is a time-intensive activity which requires a dedicated team. Design systems, unfortunately, are not a one-and-done solution. At their best, they are constantly evolving as teams gather feedback from those who use them.  
  2. It takes time to teach others how to use the design system. Any design system, even if it were adapted from an existing one, needs instructions for use — otherwise there is a risk that it may be applied inconsistently or incorrectly across screens or across teams.
  3. There may be a perception that projects are static, one-off creations, which generally don’t require reusable components. Whether true or not, this perception may signal a lack of unified strategy across projects and a missed opportunity to increase efficiency.

Elements of a Design System

There are two important parts to a design system:

  • The design repository
  • The people who manage it

Design-System Repository

Design repositories can take many forms, but they often contain a style guide, a component library, and a pattern library.

Style Guide

Style guides contain specific implementation guidelines, visual references, and design principles for creating interfaces or other design deliverables. The most-common style guides tend to focus on branding (colors, typography, trademarks, logos, and print media), but style guides also offer guidance on content (such as tone of voice and language recommendations) and visual- and interaction-design standards (also known as front-end style guides). These guidelines are sometimes incorporated into the component library as well, to provide relevant guidance in context.

The 1976 NASA Graphics Standards Manual (NHB 1430.2) is an example of a thorough branding style guide. It offers much more than remarkably modern visual examples:  guidelines on color pairings to improve visibility and readability, explicit design principles, like “A sign should be thought of as a large-scale headline; therefore, language should be clear and concise. Brevity is desirable in order communicate quickly, especially to drivers of vehicles.”

Mailchimp’s Content Style Guide contains robust guidelines for how to write different kinds of content so that they align with Mailchimp’s company values and company tone of voice.

Component Library

Component libraries (also known as design libraries) are what many people associate with design systems: these thorough libraries house predetermined, reusable UI elements and serve as a one-stop shop for designers and developers alike to learn about and implement specific UI elements. Creating these libraries takes significant time and resources. In addition to visual examples of components, they include:

  • Component name: a specific and unique UI component name, to avoid miscommunication between designers and developers
  • Description: a clear explanation for what this element is and how it is typically used, occasionally accompanied by do’s and don’ts for context and clarification
  • Attributes: variables or adjustments that can be made to customize or adapt the component for specific needs (i.e., color, size, shape, copy)
  • State: recommended defaults and the subsequent changes in appearance
  • Code snippets: the actual code excerpt for the element (some design systems go as far as sharing multiple examples and offering a “sandbox” environment to try out different component customizations)
  • Front-end & backend frameworks to implement the library (if applicable), to avoid painful and unnecessary debugging


Google’s Material Design system features a component library which includes implementation guidelines and code snippets (shown above) for specific operating systems and frameworks, as well as thorough design guidelines with usability do’s and don’ts in a separate tab.


IBM’s Carbon design system features usage, style, and code guidelines, as well as accessibility considerations and a code sandbox for designers and developers to visualize any customizations before implementation.

Pattern Library

Sometimes, the terms ‘component library’ and ‘pattern library’ are used synonymously; however, there is a distinction between these two types of libraries.  Component libraries specify individual UI elements, while pattern libraries feature collections of UI-element groupings or layouts. Pattern libraries are often thought of as less robust compared to component libraries, but they can be as thorough or as high-level as needed. They typically feature content structures, layouts, and/or templates. Much like the components, the patterns are meant to be reused and adapted.


The Atlassian design system identifies a number of reusable patterns including a page-header template. Not only does it show a visual example, but it also highlights the exact component that designers should leverage and explains how each component should be used.


While many public-sector websites have a long way to go, the US Web Design System (USWDS) is a great starting point to unify many disparate departments and agencies with clear guidelines. The USWDS specifies page templates (pictured above), as well as design principles, components, and coding specifications.

Design-System Team

A design system is only as effective as the team that manages it. Whether created or adapted, design systems require continuous maintenance and oversight to ensure they don’t become outdated, obsolete, or overcrowded with redundant entries or submissions. The size of this team can vary, given that design systems themselves can take on different sizes and levels of customization, but, at a minimum, the team should include 1 interaction designer, 1 visual designer, and 1 developer, each meant to help write interaction-design guidelines, create visual examples, and provide code snippets and implementation specifications for each element, respectively. Ideally, the team should also include a part-time researcher, part-time architect, and content writer, if these roles are explicitly determined in your organization.

Lastly, consider securing an executive sponsor (from leadership ranks) to orchestrate design-system efforts. While the lack of a sponsor won’t be a show-stopper, sponsors can secure money and resources, while also conveying the strategic importance of a design system to the rest of the organization.

How to Approach Design-System Adoption

There are generally three approaches to using a design system:

  • Adopting an existing design system
  • Adapting an existing design system
  • Creating your own proprietary or custom design system

There are pros and cons to each, but generally speaking, the more custom your design-system solution is, the more time and money it will take to implement. Thus, using an existing design system is the lowest-cost approach and requires the least time to implement. (It will, still, need more time than if you continue design as usual, however, because you will have to either replace or update some UI elements and agree upon a standard).

Investment in a custom design system will be worth it if the organization has particular needs that cannot be met by open-source design systems. As customizations and adjustments to the design system increase, the cost savings you may have gained from using the existing design system will diminish, and, in the long run, you may be better off creating your own design system anyway. Be sure you know what your organization needs before you embark on design system endeavors and evaluate the tradeoffs.

Depending on budget and needs, companies can select one of three approaches to design systems: adopt an existing system in its entirety, adapt an existing system to the company’s needs, or create an entirely new one.

Last, for a proof of concept or an initial prototype which is likely to change, creating a full-fledged design system is probably not going to generate a desirable ROI in the near term. The benefit, after all, is the replicability of design, which is in the future. Though it may be tempting to establish these from the outset, keep in mind that a design system should not be thought of as a portfolio of work, but rather as a functional toolkit or resource for designers and developers to work more quickly. That said, if you are doubting the usefulness of a design system, it might be worth considering the timescale you will use to evaluate your design work. Design systems are best when the company foresees years of future, replicable design work.

Conclusion

Design systems are made of many components, patterns, styles, and guidelines, which can help operationalize and optimize your design efforts. However, they are designed, managed, and implemented by people. The main factors to consider when creating a design system are the scale and replicability of your projects, as well as the resources and time available. When poorly implemented and maintained, design systems can become unwieldly collections of components and code; but, when implemented well, they can educate team members, streamline work, and enable designers to tackle complex UX problems.

Christian Jacob - Simulating Evolution with Mathematica

Mike's Notes

I have collected here some historical references to work by Christian Jacob, a Professor at the University of Calgary, about evolutionary algorithms. There are many Mathematica Notebooks available in Mathematica version 2.2. I hope to use the Wolfram-provided copy of WolframOne to open and try out these notebooks.

These references are for future planned Pipi developments.

Resources

References

  • Simulating Evolution with Mathematica (1997) by Christian Jacob
  • Illustrating evolutionary computation with Mathematica by Christian Jacob. Morgan Kaufmann Publishers Inc., San Francisco, CA, 2001. 578 pp. Type: Book (9781558606371)
  • Holland, J.H. Adaptation in Natural and Artificial Systems : An Introductory Analysis with Applications to Biology, Control, and Artificial Intelligence. MIT Press, Cambridge, MA, 1992.

Repository

  • Home > Ajabbi Research > Library > Authors > Christian Jacob
  • Home > Ajabbi Research > Library > Evolutionary Algorithm
  • Home > Ajabbi Research > Library > Membrane Computing

Last Updated

23/04/2025

Simulating Evolution with Mathematica

By: Christian Jacob
Google Scholar: 1997

Evolutionary mechanisms as observed in nature are successfully used in evolutionary algorithms (EA) in order to solve complex optimisation tasks or to mimic natural evolution processes. We present a collection of evolutionary algorithms which we have implemented in Mathematica, together with some visualisation examples and applications. The three major EA classes are discussed: Evolution Strategies (ES), Genetic Algorithms (GA), and Genetic Programming (GP). Interactive evolution is demonstrated by the breeding of biomorphs, recursively branched line drawings. Multi-modal ES- and GA- experiments are demonstrated for a parameter optimisation task. The evolution of robot control programs shows a simple GP application. The article concludes with a more sophisticated GP example: breeding developmental programs for artificial plant-like structures encoded based on Lindenmayer systems.

The Physics of Flow: How the Constructal Law Can Revolutionize Product Development

Mike's Notes

"The constructal law, stated by Duke’s Adrian Bejan in 1996, is the law of physics that accounts for the phenomenon of evolution (configuration, form, design) throughout nature, inanimate flow systems and animate systems together." - Duke University


Adrian Bejan 2018

Resources

References

  • Reference

Repository

  • Home > Ajabbi Research > Library > Authors > Adrian Bejan
  • Home > Handbook > 

Last Updated

22/04/2025

The Physics of Flow: How the Constructal Law Can Revolutionize Product Development

By: Leah  Brown
IT Revolution: 17/04/2025

Leah Brown, Managing Editor at IT Revolution working on publishing books and guidance papers for the modern business leader. I also oversee the production of the IT Revolution blog, combining the best of responsible, human-centered content with the assistance of AI tools.

In product development, the quest for better flow has been a constant for nearly two decades. From Donald Reinertsen’s seminal work in 2009 to the DevOps movement and beyond, creating smooth, efficient value streams has been central to organizational success. But what if there was a fundamental law of physics that could deepen our understanding of flow and revolutionize how we approach product development?

In the Spring 2025 issue of the Enterprise Technology Leadership Journal, Brian Moore of RTX offers a fascinating perspective in his paper “It’s All About Flow: Applying the Constructal Law of Physics to Product Development.” Moore introduces the constructal law, a principle of physics formulated by Duke professor Adrian Bejan in 1996, and shows how it applies to product development value streams.

What is the Constructal Law?

The constructal law states: “For a flow system to persist in time (to live) it must evolve freely such that it provides easier and greater access to its currents.”

Simply put, this principle explains why flow systems throughout nature—from river basins to tree branches to our own circulatory systems—evolve certain patterns and hierarchies. They naturally organize to provide better access to their flows. Moore argues that this same law governs our product development processes, and understanding it can help us accelerate improvement in our value streams.

Three Key Imperatives

Moore distills three primary imperatives from the constructal theory that can transform how we approach product development:

1. Support Freedom

For flow systems to evolve and improve, they need freedom to change. In nature, water inexorably finds the fastest path downhill because it’s free to do so. Similarly, product development teams need freedom to adapt both their processes and products in response to feedback.

The paper examines how freedom exists on a continuum in organizations, with various factors limiting it:

  • Team mindset (“We can’t change that.”)
  • Organizational policies and processes
  • Product architecture
  • Tooling and infrastructure
  • Alignment and accountability

Moore demonstrates how freedom is already central to many Lean-Agile practices, including SAFe’s principles of decentralized decision-making, preserving options, and unlocking intrinsic motivation. Industrial DevOps similarly emphasizes team autonomy within clearly defined objectives.

2. Embrace Hierarchy

Though hierarchy often gets a bad reputation in organizational theory, Moore points out that it’s essential in nature—without hierarchy, life would be limited to single-cell organisms. Effective flow systems naturally organize in hierarchical patterns with “many small components and a few large ones that are flowing together.”

This applies to product development in several ways:

  • SAFe’s focus on organizing around value and applying systems thinking.
  • Industrial DevOps principles of architecture for flow and establishing cadence.
  • Reinertsen’s guidance on embedding fast control loops inside slow loops.
  • Team Topologies’ emphasis on appropriate team structures.

The key insight is that without hierarchy, development would be limited to small, isolated teams rather than coordinated solutions to complex problems.

3. Pursue Beauty

Perhaps the most surprising imperative is the pursuit of beauty. Drawing on the work of Frederick Turner and Christopher Alexander, Moore argues that beauty is not subjective fluff but a central organizing principle relating to wholeness, meaning, fitness for purpose, and harmony.

Beauty serves as a powerful pull force for product development flow systems. As the paper states: “When we deliver products that create beauty in the world, we delight our customers, enhance society and the environment, and provide a profound source of motivation to our team members.”

Moore shows how this manifests in:

  • SAFe’s strategic themes and solution visions
  • Design thinking practices that focus on holistic solutions
  • Industrial DevOps’ systems engineering sensibility
  • The wholeness approach in Wiring the Winning Organization

Why This Matters

Moore’s application of constructal theory to product development is groundbreaking because it provides a unifying scientific framework for understanding the evolution of value streams. Just as Newton’s laws transformed civil engineering, enabling the construction of previously unimaginable structures, the constructal law can potentially accelerate our ability to design more effective product development systems.

The paper argues that this approach allows practitioners to:

  1. See how various Lean-Agile and DevOps principles relate to each other
  2. Apply these principles more confidently in their organizations
  3. Communicate more effectively about transformational initiatives

“Just as structural engineers, grounded in their knowledge of physics, can confidently build amazing bridges or aircraft that are both daring and safe, so can we accelerate the evolution of product value streams in the direction of making access to better value easier and faster,” Moore writes.

Practical Applications

For leaders in technology and product development, the paper offers several practical takeaways:

  • Evaluate freedom constraints: Identify where your organization limits the freedom of teams to respond to feedback and evolve their processes.
  • Design appropriate hierarchies: Rather than rejecting hierarchy outright, focus on creating value-oriented hierarchies that enable coordination without bureaucracy.
  • Connect work to beauty: Help teams understand how their contributions create holistic, meaningful solutions rather than just features.

Moore’s work doesn’t reject existing Lean-Agile frameworks but rather enriches them by providing a deeper scientific foundation. It shows how principles from SAFe, DevOps, and other methodologies align with natural laws that govern all flow systems.

The Future of Flow

By grounding product development theory in physics, Moore opens the door to new insights about how to design organizations that can evolve faster and more effectively. His paper suggests that as we deepen our understanding of constructal theory, we’ll continue to discover new ways to improve value flow.

For anyone involved in product development, process improvement, or organizational design, Moore’s paper represents a significant contribution to the field. It bridges the gap between science and practice, offering both theoretical depth and practical guidance.

“It’s All About Flow” is available in the Spring 2025 issue of the Enterprise Technology Leadership Journal from IT Revolution Press. For those intrigued by the intersection of physics, organization design, and product development, it promises to be essential reading.

As Moore himself recommends, those interested in this approach would benefit from exploring Adrian Bejan’s work directly and starting to observe constructal patterns in nature, society, and their workplaces. The more we understand these fundamental patterns of flow, the better we can design systems that harness them.

Ranked: Duolingo’s Most Popular Languages in Every Country in 2024

Mike's Notes

This could be a rough guide to what languages to initially target for translating Pipi UI and documentation. Pipi 9 has already been set up and tested to be multi-lingual and multi-script.

Resources

References

  • Reference

Repository

  • Home > Ajabbi Research > Library > Subscriptions > Visual Capitalist
  • Home > Learn > Reference > i18n

Last Updated

21/04/2025

Ranked: Duolingo’s Most Popular Languages in Every Country in 2024

By: Marcus Lu & Amy Kuo
Visual Capitalist: 6/04/2025

Key Takeaways

  • English is the number #1 ranked language on Duolingo in 134 different countries.
  • Other popular languages include Spanish (#1 in 33 countries) and French (#1 in 16 countries).

About half of the world’s population speaks at least two languages.

Learning a second language is a valuable endeavor, improving cognitive function, social awareness, and providing more career opportunities.

But what languages are people around the world trying to learn, and how does it differ from country to country?

We map the most popular languages studied on Duolingo from their 2024 language report.

The Most Popular Languages For Learning

English is the number #1 ranked language on Duolingo in 134 different countries. It is also the most prominent language on the planet, with approximately 1.5 billion speakers.

Browse the below table to see the top language and second-most popular language in every country Duolingo is available in.

Country Top Language on DuoLingo 2nd Language
🇦🇫 Afghanistan English German
🇦🇱 Albania English German
🇩🇿 Algeria English French
🇦🇩 Andorra English Spanish
🇦🇴 Angola English French
🇦🇷 Argentina English Portuguese
🇦🇲 Armenia English French
🇦🇹 Austria English German
🇦🇿 Azerbaijan English Turkish
🇧🇭 Bahrain English French
🇧🇩 Bangladesh English Korean
🇧🇾 Belarus English German
🇧🇪 Belgium English French
🇧🇯 Benin English Spanish
🇧🇴 Bolivia English Portuguese
🇧🇷 Brazil English Spanish
🇧🇬 Bulgaria English German
🇧🇫 Burkina Faso English French
🇧🇮 Burundi English French
🇨🇻 Cabo Verde English French
🇰🇭 Cambodia English Chinese
🇨🇲 Cameroon English German
🇨🇫 Central African Republic English French
🇹🇩 Chad English French
🇨🇱 Chile English Portuguese
🇨🇳 China English Japanese
🇨🇴 Colombia English French
🇰🇲 Comoros English French
🇨🇬 Republic of the Congo English Spanish
🇨🇷 Costa Rica English Spanish
🇨🇮 Côte d'Ivoire English Spanish
🇭🇷 Croatia English Spanish
🇨🇺 Cuba English French
🇨🇾 Cyprus English Spanish
🇨🇿 Czechia English German
🇨🇩 Democratic Republic of the Congo English French
🇩🇯 Djibouti English French
🇩🇴 Dominican Republic English French
🇪🇨 Ecuador English French
🇪🇬 Egypt English French
🇸🇻 El Salvador English French
🇬🇶 Equatorial Guinea English French
🇪🇷 Eritrea English French
🇪🇪 Estonia English Spanish
🇪🇹 Ethiopia English French
🇫🇷 France English Spanish
🇬🇦 Gabon English Spanish
🇬🇪 Georgia English German
🇩🇪 Germany English German
🇬🇷 Greece English Spanish
🇬🇹 Guatemala English French
🇬🇳 Guinea English French
🇬🇼 Guinea-Bissau English French
🇭🇹 Haiti English Spanish
🇭🇳 Honduras English French
🇭🇺 Hungary English German
🇮🇳 India English Hindi
🇮🇩 Indonesia English Japanese
🇮🇷 Iran English German
🇮🇶 Iraq English French
🇮🇱 Israel English Hebrew
🇮🇹 Italy English Italian
🇯🇵 Japan English Korean
🇯🇴 Jordan English French
🇰🇿 Kazakhstan English French
🇰🇮 Kiribati English Spanish
🇰🇼 Kuwait English French
🇰🇬 Kyrgyzstan English Russian
🇱🇦 Laos English Chinese
🇱🇻 Latvia English German
🇱🇧 Lebanon English French
🇱🇾 Libya English French
🇱🇮 Liechtenstein English Spanish
🇱🇹 Lithuania English Spanish
🇱🇺 Luxembourg English French
🇲🇬 Madagascar English French
🇲🇼 Malawi English French
🇲🇾 Malaysia English Japanese
🇲🇻 Maldives English Spanish
🇲🇱 Mali English French
🇲🇹 Malta English Spanish
🇲🇷 Mauritania English French
🇲🇽 Mexico English French
🇲🇩 Moldova English German
🇲🇨 Monaco English French
🇲🇳 Mongolia English Korean
🇲🇪 Montenegro English Spanish
🇲🇦 Morocco English French
🇲🇿 Mozambique English French
🇲🇲 Myanmar English Japanese
🇳🇵 Nepal English Japanese
🇳🇱 Netherlands English Spanish
🇳🇮 Nicaragua English French
🇳🇪 Niger English French
🇴🇲 Oman English French
🇵🇰 Pakistan English Arabic
🇵🇦 Panama English French
🇵🇾 Paraguay English Portuguese
🇵🇪 Peru English Portuguese
🇵🇱 Poland English Spanish
🇵🇹 Portugal English French
🇶🇦 Qatar English Spanish
🇷🇴 Romania English Spanish
🇷🇺 Russia English German
🇷🇼 Rwanda English French
🇸🇲 San Marino English Italian
🇸🇹 São Tomé and Príncipe English French
🇸🇦 Saudi Arabia English French
🇸🇳 Senegal English Spanish
🇸🇨 Seychelles English Spanish
🇸🇬 Singapore English Japanese
🇸🇰 Slovakia English German
🇸🇴 Somalia English Arabic
🇰🇷 South Korea English Japanese
🇸🇸 South Sudan English French
🇪🇸 Spain English Spanish
🇱🇰 Sri Lanka English Japanese
🇸🇩 Sudan English French
🇨🇭 Switzerland English French
🇸🇾 Syria English German
🇹🇯 Tajikistan English Russian
🇹🇭 Thailand English Japanese
🇹🇱 Timor-Leste English Portuguese
🇹🇬 Togo English German
🇹🇳 Tunisia English French
🇹🇷 Türkiye English German
🇹🇲 Turkmenistan English Russian
🇦🇪 United Arab Emirates English French
🇺🇦 Ukraine English German
🇺🇾 Uruguay English Portuguese
🇺🇿 Uzbekistan English Russian
🇻🇪 Venezuela English Portuguese
🇻🇳 Vietnam English Chinese
🇾🇪 Yemen English French
🇧🇼 Botswana French Spanish
🇨🇦 Canada French Spanish
🇸🇿 Eswatini French Spanish
🇬🇲 Gambia French English
🇬🇭 Ghana French Spanish
🇰🇪 Kenya French Spanish
🇱🇸 Lesotho French Spanish
🇱🇷 Liberia French English
🇲🇺 Mauritius French English
🇳🇬 Nigeria French Spanish
🇸🇱 Sierra Leone French Spanish
🇹🇿 Tanzania French Swahili
🇺🇬 Uganda French English
🇻🇺 Vanuatu French English
🇿🇲 Zambia French English
🇿🇼 Zimbabwe French Spanish
🇧🇦 Bosnia and Herzegovina German English
🇲🇰 North Macedonia German English
🇳🇦 Namibia German Spanish
🇷🇸 Serbia German English
🇸🇮 Slovenia German Spanish
🇻🇦 Vatican City Italian English
🇧🇹 Bhutan Japanese Korean
🇧🇳 Brunei Japanese Chinese
🇵🇼 Palau Japanese English
🇵🇭 Philippines Japanese English
🇦🇬 Antigua and Barbuda Spanish French
🇦🇺 Australia Spanish French
🇧🇸 Bahamas Spanish French
🇧🇧 Barbados Spanish French
🇧🇿 Belize Spanish English
🇩🇰 Denmark Spanish German
🇩🇲 Dominica Spanish French
🇫🇯 Fiji Spanish French
🇫🇮 Finland Spanish Finnish
🇬🇧 United Kingdom Spanish French
🇬🇩 Grenada Spanish French
🇬🇾 Guyana Spanish English
🇮🇸 Iceland Spanish English
🇮🇪 Ireland Spanish Irish
🇯🇲 Jamaica Spanish French
🇲🇭 Marshall Islands Spanish Japanese
🇫🇲 Micronesia Spanish Japanese
🇳🇷 Nauru Spanish Chinese
🇳🇿 New Zealand Spanish French
🇳🇴 Norway Spanish Norwegian
🇵🇬 Papua New Guinea Spanish English
🇼🇸 Samoa Spanish French
🇸🇧 Solomon Islands Spanish English
🇿🇦 South Africa Spanish French
🇰🇳 St. Kitts and Nevis Spanish French
🇱🇨 St. Lucia Spanish French
🇻🇨 St. Vincent and the Grenadines Spanish French
🇸🇷 Suriname Spanish English
🇸🇪 Sweden Spanish Swedish
🇹🇴 Tonga Spanish French
🇹🇹 Trinidad and Tobago Spanish French
🇹🇻 Tuvalu Spanish French
🇺🇸 U.S. Spanish English

Aside from English, other popular languages include Spanish (#1 in 33 countries) and French (#1 in 16 countries). But there’s clearly an overwhelming preference.

According to Duolingo research, the top reasons people learn English are to support their education, connect with others, and boost their careers.

English’s journey to become the dominant global language goes all the way back to British colonialism that spread it around the world. Back then, other languages—also part of empires—competed for lingua franca status, like French and Spanish.

Rank Language Countries Where
Language is #1
on Duolingo
1 🇬🇧 English 134
2 🇪🇸 Spanish 33
3 🇫🇷 French 16
4 🇩🇪 German 5
5 🇯🇵 Japanese 4
6 🇮🇹 Italian 1

However, with the Industrial Revolution, English gained economic influence, and after the U.S. emerged as a global superpower, it became the preferred language for trade.

American cultural exports—Hollywood movies, music, clothing brands—also increased the language’s prominence.

What to Do

Mike's Notes

Notes on the worldview of Paul Graham.

Resources

References

  • Reference

Repository

  • Home > Ajabbi Research > Library >
  • Home > Handbook > 

Last Updated

19/04/2025

What to Do

By: Paul Graham
paulgraham.com: March 2025

Paul Graham is a programmer, writer, and investor. In 1995, he and Robert Morris started Viaweb, the first software as a service company. Viaweb was acquired by Yahoo in 1998, where it became Yahoo Store. In 2001 he started publishing essays on paulgraham.com, which now gets around 25 million page views per year. In 2005 he and Jessica Livingston, Robert Morris, and Trevor Blackwell started Y Combinator, the first of a new type of startup incubator. Since 2005 Y Combinator has funded over 3000 startups, including Airbnb, Dropbox, Stripe, and Reddit. In 2019 he published a new Lisp dialect written in itself called Bel.

Paul is the author of On Lisp (Prentice Hall, 1993), ANSI Common Lisp (Prentice Hall, 1995), and Hackers & Painters (O'Reilly, 2004). He has an AB from Cornell and a PhD in Computer Science from Harvard, and studied painting at RISD and the Accademia di Belle Arti in Florence..

What should one do? That may seem a strange question, but it's not meaningless or unanswerable. It's the sort of question kids ask before they learn not to ask big questions. I only came across it myself in the process of investigating something else. But once I did, I thought I should at least try to answer it.

So what should one do? One should help people, and take care of the world. Those two are obvious. But is there anything else? When I ask that, the answer that pops up is Make good new things.

I can't prove that one should do this, any more than I can prove that one should help people or take care of the world. We're talking about first principles here. But I can explain why this principle makes sense. The most impressive thing humans can do is to think. It may be the most impressive thing that can be done. And the best kind of thinking, or more precisely the best proof that one has thought well, is to make good new things.

I mean new things in a very general sense. Newton's physics was a good new thing. Indeed, the first version of this principle was to have good new ideas. But that didn't seem general enough: it didn't include making art or music, for example, except insofar as they embody new ideas. And while they may embody new ideas, that's not all they embody, unless you stretch the word "idea" so uselessly thin that it includes everything that goes through your nervous system.

Even for ideas that one has consciously, though, I prefer the phrasing "make good new things." There are other ways to describe the best kind of thinking. To make discoveries, for example, or to understand something more deeply than others have. But how well do you understand something if you can't make a model of it, or write about it? Indeed, trying to express what you understand is not just a way to prove that you understand it, but a way to understand it better.

Another reason I like this phrasing is that it biases us toward creation. It causes us to prefer the kind of ideas that are naturally seen as making things rather than, say, making critical observations about things other people have made. Those are ideas too, and sometimes valuable ones, but it's easy to trick oneself into believing they're more valuable than they are. Criticism seems sophisticated, and making new things often seems awkward, especially at first; and yet it's precisely those first steps that are most rare and valuable.

Is newness essential? I think so. Obviously it's essential in science. If you copied a paper of someone else's and published it as your own, it would seem not merely unimpressive but dishonest. And it's similar in the arts. A copy of a good painting can be a pleasing thing, but it's not impressive in the way the original was. Which in turn implies it's not impressive to make the same thing over and over, however well; you're just copying yourself.

Note though that we're talking about a different kind of should with this principle. Taking care of people and the world are shoulds in the sense that they're one's duty, but making good new things is a should in the sense that this is how to live to one's full potential. Historically most rules about how to live have been a mix of both kinds of should, though usually with more of the former than the latter. [1]

For most of history the question "What should one do?" got much the same answer everywhere, whether you asked Cicero or Confucius. You should be wise, brave, honest, temperate, and just, uphold tradition, and serve the public interest. There was a long stretch where in some parts of the world the answer became "Serve God," but in practice it was still considered good to be wise, brave, honest, temperate, and just, uphold tradition, and serve the public interest. And indeed this recipe would have seemed right to most Victorians. But there's nothing in it about taking care of the world or making new things, and that's a bit worrying, because it seems like this question should be a timeless one. The answer shouldn't change much.

I'm not too worried that the traditional answers don't mention taking care of the world. Obviously people only started to care about that once it became clear we could ruin it. But how can making good new things be important if the traditional answers don't mention it?

The traditional answers were answers to a slightly different question. They were answers to the question of how to be, rather than what to do. The audience didn't have a lot of choice about what to do. The audience up till recent centuries was the landowning class, which was also the political class. They weren't choosing between doing physics and writing novels. Their work was foreordained: manage their estates, participate in politics, fight when necessary. It was ok to do certain other kinds of work in one's spare time, but ideally one didn't have any. Cicero's De Officiis is one of the great classical answers to the question of how to live, and in it he explicitly says that he wouldn't even be writing it if he hadn't been excluded from public life by recent political upheavals. [2]

There were of course people doing what we would now call "original work," and they were often admired for it, but they weren't seen as models. Archimedes knew that he was the first to prove that a sphere has 2/3 the volume of the smallest enclosing cylinder and was very pleased about it. But you don't find ancient writers urging their readers to emulate him. They regarded him more as a prodigy than a model.

Now many more of us can follow Archimedes's example and devote most of our attention to one kind of work. He turned out to be a model after all, along with a collection of other people that his contemporaries would have found it strange to treat as a distinct group, because the vein of people making new things ran at right angles to the social hierarchy.

What kinds of new things count? I'd rather leave that question to the makers of them. It would be a risky business to try to define any kind of threshold, because new kinds of work are often despised at first. Raymond Chandler was writing literal pulp fiction, and he's now recognized as one of the best writers of the twentieth century. Indeed this pattern is so common that you can use it as a recipe: if you're excited about some kind of work that's not considered prestigious and you can explain what everyone else is overlooking about it, then this is not merely a kind of work that's ok to do, but one to seek out.

The other reason I wouldn't want to define any thresholds is that we don't need them. The kind of people who make good new things don't need rules to keep them honest.

So there's my guess at a set of principles to live by: take care of people and the world, and make good new things. Different people will do these to varying degrees. There will presumably be lots who focus entirely on taking care of people. There will be a few who focus mostly on making new things. But even if you're one of those, you should at least make sure that the new things you make don't net harm people or the world. And if you go a step further and try to make things that help them, you may find you're ahead on the trade. You'll be more constrained in what you can make, but you'll make it with more energy.

On the other hand, if you make something amazing, you'll often be helping people or the world even if you didn't mean to. Newton was driven by curiosity and ambition, not by any practical effect his work might have, and yet the practical effect of his work has been enormous. And this seems the rule rather than the exception. So if you think you can make something amazing, you should probably just go ahead and do it.

Notes

[1] We could treat all three as the same kind of should by saying that it's one's duty to live well — for example by saying, as some Christians have, that it's one's duty to make the most of one's God-given gifts. But this seems one of those casuistries people invented to evade the stern requirements of religion: you could spend time studying math instead of praying or performing acts of charity because otherwise you were rejecting a gift God had given you. A useful casuistry no doubt, but we don't need it.

We could also combine the first two principles, since people are part of the world. Why should our species get special treatment? I won't try to justify this choice, but I'm skeptical that anyone who claims to think differently actually lives according to their principles.

[2] Confucius was also excluded from public life after ending up on the losing end of a power struggle, and presumably he too would not be so famous now if it hadn't been for this long stretch of enforced leisure.

Thanks to Trevor Blackwell, Jessica Livingston, and Robert Morris for reading drafts of this.

Kent Beck on Empirical Software Design: When & Why

Mike's Notes

An ACM Tech Talk interview yesterday with Kent Beck, author of Tidy First.

Resources

References

  • Reference

Repository

  • Home > Handbook > 

Last Updated

18/04/2025

Kent Beck on Empirical Software Design: When & Why

By: Kent Beck and Margaret-Anne Storey
ACM Tech Talk: 18/04/2025

Kent Beck is an American software engineer and the creator of Extreme Programming, a software development methodology that eschews rigid formal specification for a collaborative and iterative design process. Beck was one of the 17 original signatories of the Agile Manifesto.

Beck pioneered Test-Driven Development, its successor TCR: Test && Commit || Revert, software design patterns, and 3X: Explore/Expand/Extract. He wrote the SUnit unit testing framework for Smalltalk, which spawned the xUnit series of frameworks, notably JUnit for Java, which Beck wrote with Erich Gamma. Beck popularized CRC cards with Ward Cunningham, the inventor of the wiki.

Margaret-Anne Storey is a Professor of Computer Science and a Canada Research Chair in Human and Social Aspects of Software Engineering at the University of Victoria. Together with her students and collaborators, she seeks to understand how software tools, communication media, data visualizations, and social theories can be leveraged to improve how software engineers and knowledge workers explore, understand, analyze, and share complex information and knowledge. She has published widely on these topics and collaborates extensively with high-tech companies and non-profit organizations to ensure real-world applicability of her research contributions and tools.

Since the publication of Parnas' "On the Criteria to Be Used in Decomposing Systems into Modules" we have had good advice on how to design software. However, most software is more difficult to change than it should be and that friction compounds over time. The Empirical Design Project seeks to resolve the seemingly-irresolvable tradeoff between short-term feature progress and long-term optionality, focusing on:

  • How is software actually designed? What can we learn from data about how software is designed?
  • When should software design decisions be made? What is the optimal moment given unclear and changing information & priorities?
  • How can we enhance the survival of software projects while expanding optionality?

Spoiler alert: make design decisions later and in small, safe steps.

Other talks

Tidy First? A Daily Exercise in Empirical Design • Kent Beck • GOTO 2024