Archive for December 27, 2018

Thursday, December 27, 2018

Microsoft Word for Windows 1.0 Postmortem

Opus Development Postmortem (PDF, via Hacker News):

In the summer of 1989, at a point where it seemed we might never converge, a program emphasizing quality of changes instead of quantity of changes was instituted. This program included code reviews and code ownership as well as a series of reminders and discussions to encourage people to think about and to be careful with the changes they made. This program was an attempt to instill some of the methods of zero-defects into a project that had gone a long time using an infinite-defects methodology and was too far in its development to consider starting from scratch.

[…]

The interesting thing shown by these charts is that at no time did testing find significantly more bugs than development was fixing. Yet the small difference in the find rate and fix rate caused the bug list to skyrocket[…]

[…]

During the entire period from December 1987 until September 1989 we estimated that we were between three and six months of shipping.

Why It’s Hard to Escape Amazon’s Long Reach

Paris Martineau and Louise Matsakis (tweet):

The company is known as the “everything store,” but in its dogged pursuit of growth, Amazon has come to dominate more than just ecommerce. It’s now the largest provider of cloud computing services and a maker of home security systems. Amazon is a fashion designer, advertising business, television and movie producer, book publisher, and the owner of a sprawling platform for crowdsourced micro-labor tasks. The company now occupies roughly as much space worldwide as 38 Pentagons. It has grown so large that Amazon’s many subsidiaries are difficult to track—so we catalogued them all for you. This is our exhaustive map of the Kingdom of Amazon.

@dynamicCallable: Unix Tools as Swift Functions

Helge Heß:

A new feature in Swift 5 are Dynamic Callable’s. We combine this with the related Dynamic Member Lookup feature to expose the filesystem and Unix shell commands as regular Swift objects and functions.

[…]

This is intended as a demo. It should work just fine, but in the name of error handling and proper Swift beauty, you might want to approach forking processes differently 🤓

[…]

An obvious limitation is that both features are statically typed. You can’t lookup one function thats returns an Int, and another function which returns a String. You have to tell the compiler in advance what type you expect.

[…]

Another limitation is that the reverse is not possible, i.e. you cannot lookup a Callable for a Swift function and dynamically invoke it via m.dynamicallyCall(withArguments:).

Previously: Schema-less Database With Dynamic Swift, Exploring @dynamicMemberLookup.

Shortcuts JS

Shortcuts JS (via Accidental Tech Podcast):

Shortcuts JS lets you build Shortcuts more efficiently by allowing you to leverage all of the features of JavaScript to generate a Shortcut, allowing you to create complex Shortcuts more quickly and more easily than ever before.

The JavaScript code is pretty ugly, but on the other hand you can edit it using an actual text editor on a big screen. The Shortcuts app has so much potential, but I get discouraged whenever I try to use the graphical editor—as well as when I try to run a simple shortcut from the home screen and it takes so long bouncing between apps that I don’t know whether it saved any time.

Computer Pioneers Advent Calendar

Alvaro Videla:

We just launched an advent calendar to highlight the lives of the pioneers of the computing age.

It’s called A Computer of One’s Own and features a wide range of women from early pioneers Elizabeth Holberton and Grace Hopper, to academics Barbara Liskov and Nancy Lynch, to game designer Roberta Williams.