1K Followers
·
Follow

Like many other programming languages designed before emojis started to dominate our daily communications and the rise of multilingual support in commercial apps, Dart represents a string as a sequence of UTF-16 code units. The encoding worked fine in most cases, until increased internationalization and the introduction of emojis that go with any language made the encoding’s inherent problems become everybody’s problems.

Consider this example:

The image shows the string “Hello” with a handwaving emoji at the end and it’s UTF-16 code units. The emoji takes two units.
The image shows the string “Hello” with a handwaving emoji at the end and it’s UTF-16 code units. The emoji takes two units.

In the string “Hello👋”, each user-perceivable character is mapped to a single code unit except the waving hand emoji 👋. …


Photo of the book “Showstopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft”
Photo of the book “Showstopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft”

I got my first computer at the age of 12. It ran Windows 95. Later, I learned that Microsoft had another version of Windows called Windows NT for professionals. I never knew that NT was an entirely different beast from Windows 95 until I read a book dedicated to the making of this operating system.

This book is entitled “Showstopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft”. I thought I’d share a few takeaways from reading it.

First, building production-grade software is really hard, not to mention a new operating system. The NT team put a tremendous amount of effort into testing, debugging, and optimization. The most difficult part of their job was often not about building out the features but making sure those features were not buggy or slow. As a result, the NT team was extremely careful and sometimes resistant to adding new features even when they sounded great. …


When you write computer programs, it’s inevitable that errors are introduced, even for the most experienced developer. To resolve an error, the first step is often reading the error message that’s displayed in the console. But, research shows that programmers, especially novices, struggle to make sense of error messages, never mind take action on them.

Admittedly, when it comes to helping you, the developer, recover from errors, Flutter hasn’t done a great job. The console output from an error is typically verbose, and it’s often unclear how an error can be traced back to a particular place in your code. Lately, we’ve been working on addressing both problems. …

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store