Thursday, May 7, 2020

Swift Supports New Linux Distributions ↦

The Swift open source project recently announced that they are now officially supporting some Linux distributions other than Ubuntu:

It is my pleasure to announce a new set of Linux distributions officially supported by the Swift project. now offers downloadable toolchain and Docker images for the following new Linux distributions:

  • Ubuntu 20.04
  • CentOS 8
  • Amazon Linux 2

The above are added to the Linux platforms we already supported:

  • Ubuntu 16.04
  • Ubuntu 18.04

To include Ubuntu 20.04 in a list of newly supported distributions when versions 16.04 and 18.04 were already supported is a bit of a stretch but it is at least fairly quick turnaround1. The support of CentOS and Amazon Linux are nevertheless most welcome.

I can’t help but point out, however, that Swift’s support of Linux remains... quirky. The downloads for all of these platforms comes in the form of a .tar.gz file that must be manually verified, expanded, resulting files moved into a desirable location in the filesystem, and added to the PATH. Why aren’t they at least offering packages (.deb for Ubuntu and .rpm for CentOS and Amazon Linux)? Where is the PPA for Ubuntu to enable apt install commands? To say nothing of persuading the distributions to themselves include Swift as they do with other languages like Python, Ruby, Go, Rust, etc.

Still, this is progress.

  1. Ubuntu 18.04 wasn’t supported until several months after it was released. 20.04 is being supported within a week or two of its release. 

Wednesday, January 29, 2020

Stuffing a Universe Onto a Single CD‑ROM ↦

Lee Hutchinson from Ars Technica recently interviewed Rand Miller about the creation of the seminal ’90s video game Myst:

Originally available only for Macintosh computers, I had to play Myst at a friend’s house as my parent’s computer was a PC. I was immediately captivated by the surreal world created by Rand and his brother Robyn. Myst has been regularly re-released, including for iOS, so now my children have played it, too.

If you were into computers in the ’90s, and possibly even if you weren’t, you’ll thoroughly enjoy this interview.

Friday, January 24, 2020

Jay Sekulow Is the Blue-Haired Lawyer From the Simpsons

So, in case you haven’t heard, President Trump has been impeached by the House of Representatives and that impeachment is now being tried in the Senate. It’s a very serious matter, even if Mitch McConnell treats it very unseriously.

But speaking of unserious, can we just pause for a moment to reflect on something quite remarkable? One of Trump’s personal lawyers participating in his defense in the Senate is Jay Sekulow. Jay Sekulow, it turns out, bears a remarkable resemblance to the ubiquitous but anonymous blue-haired lawyer in the long-running animated series The Simpsons:

Comparing Jay Sekulow to Simpsons Lawyer

Apropos of nothing, but funny nonetheless.

Thursday, January 23, 2020

Saudi Crown Prince Was Involved in Hacking Jeff Bezos’ Phone ↦

Mark Fisher of the Washington Post reports that Saudi Crown Prince Mohammed bin Salman was involved in hacking Jeff Bezos’ phone:

[…] on May 1 [2018], the prince sent Bezos a WhatsApp message containing a video in Arabic promoting Saudi Arabia’s telecom market. Allegedly inside the video file, according to a United Nations report released Wednesday, was a tiny, malicious piece of code that allowed the sender to extract massive amounts of information from the phone over the course of many months.

Jeff Bezos owns the Washington Post, which published opinion pieces from Saudi dissident Jamal Khashoggi. Khashoggi was later killed in October 2018 at the Saudi Consulate in Istanbul.

Thursday, January 23, 2020

Terry Jones Has Joined the Choir Invisible ↦

Terry Jones, most famous for being part of the legendary comedy troupe Monty Python, has passed away at the age of 77.

You may remember him as the nude organist, or as Sir Bedevere. But he also did a fantastic Karl Marx:

Wednesday, January 22, 2020

“How Swift Achieved Dynamic Linking Where Rust Couldn’t” ↦

Alexis Beingessner digs into some of the details of Swift’s recent effort to achieve ABI stability and contrasts that to Rust:

For those who don’t follow Swift’s development, ABI stability has been one of its most ambitious projects and possibly it’s defining feature, and it finally shipped in Swift 5. The result is something I find endlessly fascinating, because I think Swift has pushed the notion of ABI stability farther than any language without much compromise.


Also for context on why I’m writing this, I’m just naturally inclined to compare the design of Swift to Rust, because those are the two languages I have helped develop. Also some folks like to complain that Rust doesn’t bother with ABI stability, and I think looking at how Swift does helps elucidate why that is.

What is ABI stability and why is it important?

When the Swift developers talk about “ABI Stability” they have exactly one thing in mind: they want native system APIs for MacOS and iOS to be written in Swift, and for you to dynamically link to them. This includes dynamically linking to a single system-wide copy of the Swift Standard Library.

Ok so what’s dynamic linking? For our purposes it’s a system where you can compile an application against some abstract description of an interface without providing an actual implementation of it. This produces an application that on its own will not work properly, as part of its implementation is missing.

To run properly, it must tell the system’s dynamic linker about all of the interfaces it needs implementations for, which we call dynamic libraries (dylibs). Assuming everything goes right, those implementations get hooked up to the application and everything Just Works.

Dynamic linking is very important to system APIs because it’s what allows the system’s implementation to be updated without also rebuilding all the applications that run on it. The applications don’t care about what implementation they get, as long as it conforms to the interface they were built against.


So dynamic linking is our goal, and ABI stability is just a means to that end.

I’ll be honest and say that I don’t really follow all of the details here. I’ve never been much of a compiler nerd. My takeaway is that ABI stability is hard. Really hard. So hard, in fact, that even though Apple has wanted Swift to be ABI-stable from the beginning, it took 5 years and 5 major versions of Swift to achieve.

There are some features of Swift’s design and approach to compilation that lend themselves well to the goal of ABI stability. Even so, ABI stability and dynamic linking are complex goals even under the best of circumstances. I think this final thought from the article sums it up nicely:

Rust actually originally tried a polymorphic design similar to Swift’s, but they eventually backed off from it once the difficulties became clear. Supporting both polymorphic and monomorphic compilation helped Swift a lot, but I think the key difference was ultimately just that Apple had a more significant motivation than Mozilla to pursue dynamic linking and way more resources to throw at this very hard problem.

Tuesday, January 21, 2020

Is America a Democracy or a Republic?

Simple answer: yes.

Every now and then, I have a conversation with someone who seems to take particular delight in insisting that America is a republic and not a democracy. Indeed, as a younger person, I myself frequently made such a statement with the firm belief that it was not only factual but significant.

The most common justification for this view comes in the form of asserting certain definitions of the words republic and democracy. Take for example, this article from the website “Foundations of Liberty”:

In a democracy, all laws and decisions of government are made by the majority. This is not how the United States is governed. The key difference between a democracy and a republic lies in the limits placed on those in the government by the law. In a republic there exists a constitution, or charter of rights, to protect certain inalienable rights that cannot be taken away— even if a majority of voters demand it.

But these definitions don’t really match the ones in the dictionary. The New Oxford American Dictionary defines republic as:

a state in which supreme power is held by the people and their elected representatives, and which has an elected or nominated president rather than a monarch

And democracy as:

a system of government by the whole population or all the eligible members of a state, typically through elected representatives

Those in the know might go so far as to cite Federalist No. 10, which contrasts democracies and republics. The problem is that it doesn’t. It contrasts pure democracies with republics. It even defines what is meant by pure democracy:

[…] a pure democracy, by which I mean a society consisting of a small number of citizens, who assemble and administer the government in person[…]

So yes, Federalist No. 10 contrasts direct, participatory democracy with representative republics but as the dictionary entry above clearly demonstrates, that is simply not what most people mean when they say democracy (without a pure or direct in front of it).

Put simply, republic and democracy are not mutually exclusive terms. They are utterly compatible and often appropriately used together: a democratic republic. Indeed, John Adams and Thomas Jefferson themselves used the term representative democracy. While we’re at it, why not throw in a few more non-mutually-exclusive descriptors? How about constitutional? How about federal? So is America a federal republic? Yup! Is America a constitutional federation? Yes! Is America a constitutional democracy? You betcha! Now let’s put them all together: the United States of America is a federal constitutional democratic republic.

Instead of focusing on semantics, might I humbly suggest we direct our energies instead to ensuring that everyone has a voice in our country? Perhaps by fighting against voter suppression wherever it rears its ugly head?

Tuesday, January 21, 2020

Checking in on Open Offices ↦

I’ve mentioned open office layouts before and the TL;DR version is that they’re terrible. Now Fast Company gives us an update. Here’s the TL;DR version:

Are open offices still terrible?

Yup. They’re still loud and distracting. They still dehumanize everyone with a complete lack of privacy.

Are companies finally going to stop using them?

Nope. They’re so damn cheap compared to building walls that most companies won’t even consider anything else.

Meanwhile, where I’m working at the moment, not only is the office completely open with not so much as a cubicle in sight, we don’t even have permanently assigned desks. So no family pictures on your desk unless you pack them up every night and if you want to keep your same desk, you better get to the office before anyone else who wants it does. It is every bit as awful and dehumanizing as it sounds.

Friday, February 22, 2019

For Everyone ↦

As a great follow-up to the previous post, please watch this 35-minute documentary on the creation of the World Wide Web, and where it stands today.

Friday, February 22, 2019

The WorldWideWeb Rebuild ↦

The European Organization for Nuclear Research (more commonly known as CERN) recently celebrated the 30th anniversary of the creation of the World Wide Web in a unique way:

In December 1990, an application called WorldWideWeb was developed on a NeXT machine at The European Organization for Nuclear Research (known as CERN) just outside of Geneva. This program – WorldWideWeb — is the antecedent of most of what we consider or know of as “the web” today.

In February 2019, in celebration of the thirtieth anniversary of the development of WorldWideWeb, a group of developers and designers convened at CERN to rebuild the original browser within a contemporary browser, allowing users around the world to experience the rather humble origins of this transformative technology.

I doubt that even many technical people know much about the origins of the World Wide Web. When its creator, Tim Berners-Lee was featured sitting at a NeXT computer during the opening ceremonies of the 2012 Olympics in London, I’m certain there were very few watching who knew what precisely was being referenced. Nevertheless, the World Wide Web has unquestionably changed the world and Tim Berners-Lee’s declaration during that ceremony that, “This is for everyone”, should inspire us all.

CERN’s recreation of that original software is a fitting tribute. It’s amazing that many well-constructed modern websites are still readable in this faithful reconstruction. (My own website fairs well on that point, with the notable exception of the generous helping of HTML entities used to better control typography.)

I’m particularly happy that they chose to reproduce the user interface of the NeXT operating system. It’s notable that Tim Berners-Lee’s original creation was as much editor as it was browser; indeed, it made extensive use of what, at the time, were NeXT’s industry-leading frameworks for building rich text editing software.