tbolt

Apple Music on the Web

A few months ago Apple opened up beta.music.apple.com on the web as a beta. I spent a few minutes poking around in dev tools and found some neat things about it. Keep in mind it’s still in beta, so it’s subject to change.

  • Ember.js - Interesting to see Apple use this as it’s not currently fashionable in the way React/Vue are. Good for them.
  • SF Pro Icons - Seeing a few font files come down in /fonts/SF-Pro-Icons/v1/. I assume these contain SF Symbols.
  • Musickit - This name is used in a primary JS file musickit.js and throughout the app. I’m curious if there will be any developer APIs offered under a MusicKit name in the future.
  • BEM Syntax - They’re using a variant of BEM, at least thats my impression from just a quick glance at the markup.
  • Frosted Glass - Apple is using -webkit-backdrop-filter to achieve it’s characteristic “frosted glass” look.
  • Page Weight - It’s heavy. Based on my current ~1280x800 viewport it’s ~12MB.

I’m looking forward to this launching, and hoping Apple posts more technical details about how they built it.

Update: Apple does have a MusicKit API.

Dealers of Lightning

Dealers of Lightning: Xerox PARC and the Dawn of the Computer Age is a good read on the significance PARC played in the history of computing. The book is twenty years old now, but it still offers great insight. One bit that stood out to me was this excerpt:

Their first step was to do something PARC had never tried before: They analyzed how non-engineers would actually use a computer.

This survey was conducted back at Ginn, to which Mott returned with an Alto display, keyboard, and mouse. He installed them as a sort of dummy setup (the machine was nonfunctional) and invited editors to seat themselves in from of the equipment, imagine they were editing on-line, and describe what they expected it to do.

“They were a little skeptical,” he recalled. “But —surprise, surprise— what you got was them wanting the machine to mimic what they would do on paper” They even described the processes in terms of the tools they had always used. That is why to this day every conventional word processor’s commands for deleting a block of text and placing it elsewhere in a file are called “cut” and “paste” —because Ginn’s editors, the first non-engineers ever to use such a system, were thinking about the scissors and paste pots they used to rearrange manuscripts on paper.

Skeuomorphism is often misunderstood in design. The recent period of “flatness” in the past 5-10 years was a shallow episode that only harped on being visually defiant to Web 2.0 era designs. If we take the “design is how it works” stance, then skeuomorphism never really went away. We never dropped “cut” or “paste.”

Favorite Programming Language Names

Here are my favorite programming language names. I tried to be unbiased and not factor in my knowledge of the language design, history, or the surrounding community.

Programmers are often notoriously bad at naming things, so it’s no surprise that this list of programming languages is full of boring names. Not that it really matters, but if a new language was released named K++# I likely wouldn’t pay it any attention.

Honorable mentions: C Ruby ColdFusion Simula AWK

Rust

A great name for a programming language, and easily my favorite. The subtle hint that this is intended to be a systems language and “closer to the metal” is just perfect.

Ada

The name Ada stands up on it’s own. Being named after the first computer programmer is just icing on top.

Lua

What does Lua mean? Don’t know, but I like it.

Swift

I haven’t used Swift enough to know if it’s a truly swift programming language, but the name checks out.

Update: Lua means “moon” in Portuguese.

Prototypes and Production

Great post by Jeremy Keith on Prototyping, I particularly like this bit:

Build prototypes to test ideas, designs, interactions, and interfaces …and then throw the code away. The value of a prototype is in answering questions and testing hypotheses. Don’t fall for the sunk cost fallacy when it’s time to switch over into production mode.

I’m a huge proponent of prototyping for all the reasons mentioned, but anytime a prototype morphs into the final product, it causes more headache than if we were to shelve it and start fresh.

Window Systems, Window Managers, Desktop Environments

If you’ve ever been confused when seeing names like “desktop environment” and “window manager,” this exerpt from A History of the GUI is a nice summary on it’s origins:

The initial design goal of the X Window System (which was invented at MIT in 1984) was merely to provide the framework for displaying multiple command shells and a clock on a single large workstation monitor. The philosophy of X was to “separate policy and mechanism” which meant that it would handle basic graphical and windowing requests, but left the overall look of the interface up to the individual program.

To provide a consistent interface, a second layer of code, called a “window manager” was required on top of the X Window server. The window manager handled the creation and manipulation of windows and window widgets, but was not a complete graphical user interface. Another layer was created on top of that, called a “desktop environment” or DE, and varied depending on the Unix vendor, so that Sun’s interface would look different from SGI’s. With the rise of free Unix clones such as Linux and FreeBSD in the early 90s, there came a demand for a free, open-sourced desktop environment. Two of the more prominent projects that satisfied this need were the KDE and GNOME efforts, which were started in 1996 and 1997 respectively.

The Rise and Demise of RSS

Great post on the history of RSS:

There are two stories here. The first is a story about a vision of the web’s future that never quite came to fruition. The second is a story about how a collaborative effort to improve a popular standard devolved into one of the most contentious forks in the history of open-source software development.

I still use RSS everyday. It’s my preferred way of reading news. Feedbin for syncing and managing feeds, Reeder for iOS, and Readkit for MacOS.