Shared posts

11 Feb 19:22

The M1 Mac mini and MacBook Air: A Giant Leap Forward for All Mac Users

by John Voorhees

It’s been just over two months since the first M1 Macs were delivered to customers. I purchased an M1 MacBook Air to replace my aging 2016 MacBook Pro, and not long after, Apple sent me an M1 Mac mini to try. In the ten weeks or so since then, I’ve used both almost exclusively for a wide variety of tasks, and although both computers are somewhat limited by their lack of ports, that has been less of an issue than I anticipated. What’s been far more notable, remarkable in fact, is the performance of the new MacBook Air and Mac mini.

Benchmarks don’t do these Macs justice. There are plenty of CPU-intensive tasks that are faster than before, which I expected would be the case. However, living with both of these Macs for as long as I have has given me a much greater appreciation for the impact that the M1 has on ordinary, day-to-day tasks. The differences are less pronounced for individual tasks that require less computing power, but the aggregate impact has still been significant for both computers, especially the MacBook Air.

The M1 SoC. Source: Apple.

The M1 SoC. Source: Apple.

Performance increases quickly become the ‘new normal.’ They tend to fade into the background. What starts as startling soon becomes ordinary and expected. The M1 Macs are no different in this respect and perhaps even more so because they look like the machines that came before them.

Still, if you step back and consider these new Macs in the context of those that immediately preceded them and account for the fact that these are entry-level models, the future of the Mac is bright. The M1 update makes these Macs substantially better deals than the versions they replace with computing power to spare for most users. The new machines also bode well for the remainder of the Mac lineup that hasn’t been updated yet.

I’m excited to see what the M1 means for the rest of the product line, and I’m sure I’ll be tempted to try them, but I’ve also never been more content with new Macs than these. I’m sure there are things I do that future M1 Macs will do even faster, but the M1 MacBook Air and Mac mini have introduced a fluidity in my daily computing that I haven’t experienced since I first tried the iPad Pro. It’s the sort of subtle, qualitative shift that can’t be captured by benchmarks but has rekindled my fondness for the platform by improving the experience across the board. Here’s what I mean.

My Pre-M1 Macs

My 2018 Mac mini setup.

My 2018 Mac mini setup.

It’s important to start with a bit of context. Since 2018, the majority of my Mac use has been on a 6-core 3.2 GHz Core i7 Mac mini with 32 GB of RAM and a 1 TB SSD. For the combination of writing, research, audio recording and editing, and light graphics work I do, the 2018 mini has been terrific. It’s fast, reliable, and hides neatly on my desk behind my 4K LG display that’s mounted on a VESA arm.

However, the 2018 mini isn’t quiet or cool by a long shot. That’s almost nice during Chicago’s winters where my studio gets a little drafty, but I’ve got a space heater that does a better job of keeping me warm. The heat generated by the 2018 mini means that it doesn’t take much for the fans to spin up audibly. In fact, as I sit here writing on the M1 mini, the fans on the older mini, which is turned on but not being used, occasionally spin up as the machine takes care of background tasks. With its specs and space gray color, the 2018 Mac mini has rightfully been called a ‘pro’ mini, but the fact that it’s always warm to the touch suggests the design was pushing up against some thermal limits to achieve that performance.

In contrast, my other Mac, a 2016 MacBook Pro, may be the least favorite Mac that I’ve owned. I got it so I’d have a capable portable Mac for recording and editing audio when I traveled. It has been good for that, but the battery life was never great, leaving me feeling like I needed to always have a plan to top off the battery.

My MacBook Pro’s keyboard fared better than it did for many other people I know, but keys got stuck just often enough that dust and crumbs anywhere near the keys became a source of anxiety. My 2016 MacBook Pro also ran hot. I could feel the heat pouring out near the base of the screen, between the keys, and from the bottom. The heat also meant that the fans ran a lot, a noise that I grew used to but didn’t like. However, the overall experience was such that when the Magic Keyboard came along, I stopped using my 2016 MacBook Pro except when I needed to edit audio in Logic on the go.

As a result, I was ready for a new portable Mac when the new M1 models were announced late last year. I immediately ordered the 8-core MacBook Air with 16 GB of unified memory and a 2 TB SSD. The small, lightweight form factor, lack of a fan, and promised battery life and speed sold me. My only hesitation was not knowing what the maximum 16 GB of unified memory would mean in real-life use. I had grown accustomed to the headroom afforded by 32 GB of RAM on my 2018 Mac mini, but I also figured that as a portable, secondary Mac, I would probably be fine.

I didn’t order an M1 Mac mini because aside from heat and fan noise, my 2018 model still has plenty of power for what I typically throw at it. However, when Apple offered to send me a review unit to try, I was keen to see how it stacked up to my Intel-based mini in daily usage.

Hardware Design and Limitations

The paradox of the M1 MacBook Air and Mac mini is that their designs are remarkably unremarkable. On the one hand, at a glance, you can’t tell either computer apart from its predecessors. There are differences, but they’re subtle. On the other hand, though, the sameness of the designs is part of the ‘wow’ factor when you first turn on the Air or mini. The familiar designs carry the same entry-level expectations as their Intel-based predecessors. Juxtaposed against the real-world performance of the M1, the first-run experience is jarring in the best possible way because the leap forward that the M1 enables is so pronounced. It’s a design that underpromises as much as the M1 overdelivers.

The M1 MacBook Air connected to OWC's Thunderbolt hub.

The M1 MacBook Air connected to OWC’s Thunderbolt hub.

What I noticed first about the MacBook Air is what it lacks: a fan. I’m used to the silent experience of writing on an iPad, but even when my Mac’s fan noise mostly faded into the background noise of my surroundings, the faint whir of a fan had become a deeply ingrained part of the Mac experience. The lack of any noise whatsoever was jolting initially. Not in a bad way, but in an ever so slightly disorienting way because it felt so close to typing on an iPad Pro connected to a Magic Keyboard.

The lack of any sound, except my typing on the Air’s keyboard, was more surprising than I expected, but so was how difficult it was to generate any perceptible heat. Even after transcoding video for a while, I’m not entirely sure the MacBook Air warmed up at all. You could point a sensitive infrared thermometer at the M1 MacBook Air and run it through some CPU-intensive tasks, and I’m sure you would be able to detect temperature increases, but in my daily activities with a bunch of open apps, dozens of open Safari tabs, downloading big files, and editing audio, any temperature increases were effectively imperceptible.

The Air adds Spotlight, Dictation and Siri, and Do Not Disturb function keys.

The Air adds Spotlight, Dictation and Siri, and Do Not Disturb function keys.

Although the MacBook Air’s keyboard is new to me coming from the 2016 MacBook Pro, it’s not new to the Air, except for a handful of new keys added to the new model. There are now function keys for Spotlight, Dictation and Siri, and Do Not Disturb, along with a globe key that triggers the emoji picker. I use Alfred instead of Spotlight, but I’ve enjoyed having a dedicated button for using Siri with the Air’s built-in microphone and as well as one to quickly silence all notifications as I write.

It’s worth noting, too, that my concerns about the 16 GB of unified MacBook Air memory were unfounded. The M1 Mac’s unified memory architecture means the entire chip can share data efficiently using on-package memory. I don’t pretend to understand precisely how the M1’s memory works, but I’ve got twice the memory on my 2018 Mac mini, and in practice, I haven’t noticed any memory constraints on either M1 Mac in comparison.

The M1 Mac mini.

The M1 Mac mini.

The Mac mini’s design differences are more pronounced in one important way: it has half the number of Thunderbolt ports as previous models.1 My 2018 Mac mini has four Thunderbolt ports to the M1 version’s two. There are two USB-A ports too, which helps, but if you’re using a mini as your primary workstation, there’s no way around the fact that two Thunderbolt ports are a significant constraint.

The M1 Mac mini has fewer Thunderbolt ports than its predecessor.

The M1 Mac mini has fewer Thunderbolt ports than its predecessor.

The devices connected to my 2018 Mac mini vary, but currently, I have a Lightning cable connected to a USB-A port because I was charging my Magic Trackpad, a light that sits on top of my display plugged into the other USB-A port for power, and the four Thunderbolt ports occupied by a hub, external backup drive, an SSD for outboard storage of my large Photos library, and my display. Connecting that same array of devices isn’t possible with the new M1 mini.

OWC Hub

One way around the limitation is with a Thunderbolt hub. As I’ve been testing the M1 Macs, I’ve also been using OWC’s latest Thunderbolt hub, which is currently available for pre-order. The hub is a significant update to OWC’s existing hubs because, for the first time, it can turn one Thunderbolt port into three, transforming an M1 Mac mini into a four-port machine like its predecessor.

OWC makes two models of its Thunderbolt hub. The hub I’ve been testing is about the size of a deck of cards and has one port that connects to your Mac along with three Thunderbolt out ports. The Thunderbolt ports transmit data at 40Gb/s and support two 4K or one 5, 6, or 8K display. The hub also includes a single USB-A 3.1 port that can handle data transfers at 10Gb/s. The device, which costs $149, is powered, and delivers up to 60W of charging capacity too.

OWC also makes a larger hub that adds two more USB-A 3.1 ports, a USB 2.0 port (480Mbps), Gigabit Ethernet, an SD card reader, a 3.5 mm audio jack, and delivers 90W of power for $249. I haven’t tried this model, but I have the previous-generation version, and it has served me well for about 18 months connected to my 2018 Mac mini.

The smaller hub pairs nicely with the Mac mini without unnecessarily duplicating the mini’s ports. In contrast, the larger model should pair nicely with the MacBook Air by offering many of the ports that are already built into the mini but aren’t available on the Air.

I’ve been impressed with the smaller hub. It has worked seamlessly to expand the connectivity of the Mac mini as well as the Air. I’ve even connected a Twelve South StayGo hub to the OWC hub when it’s connected to my MacBook Air, which is a handy option because it adds Ethernet, HDMI, an SD card reader, and other ports unavailable on the Air.

My only complaint about the OWC hub is that the power brick is big and heavy, making the hub a less attractive option for traveling with the MacBook Air. However, as a dedicated desktop device, the OWC hub is a great option to expand your M1 Mac’s ports.

Except for the difference in the number of ports on the Mac mini, the design differences between the M1 MacBook Air and Mac mini are minimal. With their familiar exteriors, the M1 Macs would probably have begun to feel like the ‘new normal’ to me. However, throughout my testing, I’ve continued to return to my older Macs every week for certain tasks, which has helped keep the differences between the computers in focus.

Working at the Speed of Thought

The introduction of the M1 Macs makes it clear that they and the iPads are tackling the same set of problems from slightly different but complementary angles. The early advantage of the iPad was direct manipulation of the information onscreen aided by fast processors that ran without the need of a fan. That reduced a barrier between the user and the iPad that makes using an iPad with touch more immediate, allowing the hardware to fade into the background and users to focus on the task at hand.

Until now, that’s never been the experience on a Mac. The immediacy of touch isn’t an option on the Mac (yet), but despite the strict adherence to indirect input, using a keyboard and pointing device, the speed of the M1 has helped close the gap. Ideas and thoughts don’t care how long it takes an app to open on your Mac. They come quickly, and by the time Slack has bounced for the eighth time in your dock, your brain may already be on to the next thing.

I suppose that I may have the attention span of a flea, but as I sit here writing this review, my mind naturally wanders to other things I have going on. I think of things I need to add to my grocery list, something I want to talk to Federico about the next time we’re on Skype, an idea for another article, and an appointment I forgot to put in my calendar. I need to deal with all of those tasks and thoughts, but they are also interruptions to the task at hand. Those tasks and ideas also probably mean opening three or four different apps to either deal with them immediately or store them where they can be dealt with later.

What the M1 Macs do is reduce the friction of dealing with the onslaught of ideas and information you face every day. Instead of waiting a few extra seconds as an app bounces in the dock six or seven times, it opens immediately, and I deal with the thought that popped into my brain, flipping back to what I was doing. The speed doesn’t guarantee I won’t spin off on some tangent, but after two months using the M1-based Mac mini and MacBook Air, I know it helps.

The M1 Mac mini. Source: Apple.

The M1 Mac mini. Source: Apple.

I ran a few very non-scientific tests to illustrate what I mean. Apps like Microsoft Excel and Adobe Lightroom, which have already been optimized for the M1 chip, are great examples that launch significantly faster on the M1 Macs. For example, I counted 25 dock bounces for Excel to launch on my 2018 Mac mini but just three on the M1 mini. Lightroom only bounced eight times on my 2018 mini, but that was followed by several seconds of the spinning beachball as the app finished loading the UI and my photo library. On the M1 mini Lightroom bounced twice, and its window opened immediately.

As expected, the difference between the Mac minis for apps that have not been optimized for the M1 chip is less pronounced. Slack, an Electron-based app, actually launches a little faster on the M1 Mac mini (three versus five bounces), but other apps like Adobe Photoshop, which has not been optimized for the M1 yet, are a little slower, taking seven dock bounces to launch instead of five on my older mini.

As I said, these tests were not run in any controlled way, but they are indicative of my experience over the past two months. Most apps, whether they have been updated for the M1 or not, launch just as fast and run just as smoothly, while more launch significantly faster than those that are a little slower. It’s a testament to just how fast the M1 chip is, and the SSDs used in the M1 Macs are, plus how good Rosetta 2’s emulation is.

Launching apps may be a small win that adds up throughout the day and over weeks and months, but there are other tasks that are even more profoundly fast thanks to the M1 SoC. For instance, take Pixelmator Pro’s ML Super Resolution feature, which we gave a MacStories Selects Award for the feature’s addition to Pixelmator’s iPad app last year. The original of the image below is a relatively large 6000 x 3376 pixel JPEG. With ML Super Resolution, I blew it up to three times that size. On the M1 Mac mini, it took Pixelmator Pro 24 seconds to process the file. On my 2018 Mac mini the process took five minutes longer, a 13x speed increase. I don’t use many apps that take advantage of Apple’s Neural Engine and ML accelerators yet, but with these sorts of performance gains, I expect that will change fast. It’s a huge win for tasks that can be tackled by machine learning.

Pixelmator Pro's ML Super Resolution feature processed this photo 13 times faster on the M1 Mac mini than my 2018 mini.

Pixelmator Pro’s ML Super Resolution feature processed this photo 13 times faster on the M1 Mac mini than my 2018 mini.

Although it’s not something I do regularly, I also decided to also see how the M1 Macs fare when transcoding a large video file. I took a 35 GB MKV file of the movie Rogue One and converted it with Permute from Charlie Monroe. The M1 Mac mini and MacBook Air both took 2:34 to transcode the movie into an MP4 file. By comparison, my 2018 Mac mini took 3:21, and my 2016 MacBook Pro took 8:34. Just for kicks, I transcoded the file on my 2012 Mac mini too, which took 9:40. Not only were the M1 Macs significantly faster, even compared to a high-spec’d 2018 mini, but they both remained cool and quiet throughout the test, which felt like it was going to cause the 2016 MacBook Pro to melt and got the fans on the Intel-based minis spinning loudly.

The only app I haven’t been able to use on the M1 Macs that I use regularly is an older version of iZotope RX, a specialized utility for processing audio. I’ve enjoyed working on the M1 Macs so much that instead of switching back to my Intel-based Mac mini every time I need the app, I’ve been using Screens to access that Mac and run iZotope on audio files shared between the Macs using Dropbox. The rest of my podcast editing workflow has been entirely on the M1 Macs for the past two months, and as with the other apps I’ve used, Adobe Audition and Logic Pro, the two apps I use most often for editing, have worked reliably for weeks.

Gaming is worth a brief mention too. You may recall that Apple showed off Shadow of the Tomb Raider running on an M1 Mac during the computer’s introduction. The game hasn’t been updated for the M1 Mac, so it runs under Rosetta 2, but it takes advantage of Apple’s Metal graphics framework. At 1080p, the results are impressive. In fact, at 1080p, I found that the experience was superior to my 2018 Mac mini, no doubt aided by the M1 SoC being tuned to the Metal framework. However, the experience degrades significantly at higher resolutions, resulting in lower frame rates and other visual degradations unless many, and in some cases, all of the graphics presets are turned to their lowest settings. This isn’t terribly surprising, but it’s worth mentioning just the same because as exciting as the performance improvements of the M1 Mac’s CPU is, Apple silicon Macs aren’t going to run games at 4K and 60fps until they offer more robust GPUs.

Before moving on to the MacBook Air, I should also mention how nice it is to never hear the M1 Mac mini’s fan. There’s a fan in there, and if I put my hand in front of its vent, I can feel air moving, but the temperature of the air is indistinguishable from room temperature no matter what I’m doing on the mini. In contrast, my 2018 Mac mini is warm to the touch even when it’s turned on but not doing anything. The fans spin up audibly under even a lightweight load and often when the mini is idle too. I’m not hyper sensitive to fan noise, but I appreciate the silence when I’m concentrating on something or playing music quietly in the background.

My M1 MacBook Air is a very traditional silver, but it comes in space gray and gold too. Source: Apple.

My M1 MacBook Air is a very traditional silver, but it comes in space gray and gold too. Source: Apple.

I have been impressed with both the M1 Mac mini and MacBook Air, but the Air adds a dimension that the mini lacks: a substantial increase in battery life. Apple claims 15 hours of battery life while browsing the web on WiFi and 18 hours of video playback. Those numbers are in line with my experience. Although I didn’t run timed tests, I had no trouble using the Air for a full workday on a single charge. More often, though, I work for a few hours, plug the Air in while I eat lunch, then work some more and have more than enough battery to pick up where I left off the next day without charging overnight.

This is another area where M1 Macs have crept into what has traditionally been iPad Pro territory. By that I mean, when I grab my iPad Pro to work, I rarely find it without enough battery remaining for what I want to do. Even if my iPad Pro has sat unused for a day or two, which it has a lot while I’ve been testing the M1 Macs, it’s still got enough power to meet my needs. That’s not been my experience with Intel-based Macs.

I’ve had a couple of MacBook Pros in the past and forgetting to charge them up in advance was always a concern, as was considering a way to charge on the go. Battery life wasn’t terrible, but I also always felt like it needed to be managed by dropping the screen brightness, closing apps I wasn’t using, and being especially careful about using notorious battery-hogging apps like Slack.

All of those considerations and concerns have disappeared with the MacBook Air. The additional battery life is so significant that I think of the Air as a co-equal device to my desktop Mac mini instead of a secondary computer. The only caveat here is that because of the pandemic, I haven’t used my MacBook Air away from home for extended periods of time. Instead, it’s the Mac I use when I’m tired of sitting at my desk and want a change of scenery, working from elsewhere in my home. Based on my past coffee shop usage, though, which was rarely more than 3-4 hours at a time, I’m confident I’ll be able to leave home with the Air and leave its charger behind more often than not.

One of the best set of tests I’ve seen run on the new M1 Mac’s batteries is Matthew Panzarino’s MacBook Pro tests for TechCrunch. What his tests showed is that even with tasks that aren’t significantly faster on an M1 Mac, the battery consumption is dramatically lower. That’s a big part of why the MacBook Air feels like a true desktop replacement in a way past MacBook Pros that I’ve owned haven’t.

In the past, I’ve traveled with a MacBook Pro to do things like record and edit podcasts. That’s a task I prefer to do on the Mac, but I always did so with the MacBook Pro plugged in because it took such a toll on its battery. With the MacBook Air, I’ve recorded and edited podcasts, and the battery drain wasn’t materially worse than other tasks. Now, instead of making sure I have a charger and a place to plug it in if I’m working with audio on my MacBook Air, I just grab it and set it up wherever I want, which is a liberating feeling.

Source: Apple.

Source: Apple.

Two other aspects of the M1 Air bear emphasizing because they add to the seamlessness of the experience. The first is the way the Air wakes instantly when the lid is lifted. It’s another aspect of what makes the M1 Mac feel more iPad-like. There’s no ‘process’ involved in getting up and running. Just open the lid and get to work. The second is that the M1 MacBook Air is the first Mac laptop that I’ve used that works consistently in clamshell mode, switching quickly to an external display without getting stuck or in some other strange state.2 I’ve enjoyed the MacBook Air setup so much that for the first time in a long time, I’m considering making a portable Mac my primary Mac.

Odds and Ends

M1 Macs can run iPhone and iPad apps, but after a couple of months, I haven’t found myself using them much. One reason is that I rarely adopt a work-critical app that isn’t available on all of Apple’s platforms. Another issue is that many of the iPhone or iPad-only apps I use have opted out of Mac support. That said, the option works well for apps like Overcast and Castro if you want to keep up with your favorite podcasts from your Mac, or Channels, a live TV and DVR video player that will be featured in this Friday’s Club MacStories newsletter and is one of the best implementations of an iPad app on the Mac that I’ve seen.

Apple has also improved the M1 MacBook Air’s FaceTime camera. The camera component is the same, but the M1’s image signal processor is able to increase contrast and apply other processing to the video feed to improve its overall quality. I’ve used the camera a few times in the past couple of months, but it’s not something I do very often, so I can’t say I noticed a dramatic difference compared to my 2016 MacBook Pro. Personally, that’s not an issue because I only do occasional video calls, but even though the image quality has been improved, it’s worth keeping in mind that the camera’s resolution is still only 720p.


Source: Apple.

Source: Apple.

Over the past couple of years, we’ve seen macOS evolve into an operating system that sits in a comfortable spot alongside iPadOS and iOS. Now we’re seeing the same transformation take place with the Mac’s hardware.

It’s a shift that I’ve enjoyed and one that has brought me back to my Mac more than in the past. Part of the attraction is the novelty of the M1. However, the bigger factor has been the MacBook Air. The Air came along at the perfect time for me. As I settled in for a long, cold winter spent indoors, having a Mac that I can take with me even just from room to room in my house without dealing with plugging it in has been a terrific change of pace. Add to that the speed increases across the board, and working on my MacBook Air has been the best portable Mac experience I’ve ever had.

The M1 Mac mini lacks the portability edge that the Air has but benefits from the same performance increases as the Air, and it runs cool and quiet, sitting inches away from my microphone setup, which I appreciate every time I hit record. The extent of the M1 Mac mini’s power efficiency and low thermal output was recently revealed in an Apple support page that John Gruber wrote about on Daring Fireball. The support page is right in line with my experience, showing that the new mini generates roughly one-third the thermal energy of my 2018 mini.

At $1699, a fully-loaded M1 Mac mini is also an excellent value. An Intel-based mini with the same configuration as my 2018 mini, which has 1 TB less storage, is $2,099. A 2 TB M1 mini with a hub to expand the number of Thunderbolt ports would be a solid replacement for my 2018 mini too, but that’s not a purchase I plan on making right now.

Instead, I plan to experiment with making the M1 MacBook Air my primary desktop Mac, perhaps retiring the 2018 mini to a secondary role. At the moment, my Mac setup is a mess with three Macs connected to the same display, keyboard, and mouse as I switch back and forth between machines testing them. I love these sorts of experiments, but I’m ready for a simpler setup, and a portable Mac connected by a single Thunderbolt cable is very appealing.

The M1 SoC. Source: Apple.

The M1 SoC. Source: Apple.

You really can’t go wrong with either of these Macs. The performance boost you’ll get from the same sort of prices you would have paid a year ago for a similar Intel-based model is striking. Although there are more Apple silicon Macs on the horizon, I wouldn’t hesitate to purchase an M1 MacBook Air or Mac mini if you need a new Mac now. Especially if your needs were previously met by similar Intel-based versions of these Macs, you’d be getting a big performance boost for a similar price, which make both computers a terrific value.

When Big Sur debuted last fall, it walked a careful line between breaking with the Mac’s past while honoring it. These new M1 Macs do the same. Although I’m sure the M1 SoC will enable new design directions for the Mac in the future, today’s M1 Macs break with the past with internals that enable shockingly large leaps forward in performance, but with an external design that honors the past. It’s a familiarity that grounds these new Macs while simultaneously delivering eye-opening performance gains.

The M1 is an impressive opening act of a story that has just begun. For the first time in a long while, there’s a palpable sense of anticipation and excitement around the Mac and what’s coming next. I’m looking forward to what’s next for the Mac, but at the same time, couldn’t be happier with the Macs I’m already using, which makes 2021 a fantastic time to be a Mac user.


  1. It’s worth noting, too, that the M1 mini is silver instead of space gray. Apple still sells an Intel-based mini, so the subtle color difference distinguishes one model from the other. The color has no bearing on the performance of the mini, but on balance, I prefer the space gray of my 2018 Mac mini. ↩︎
  2. I am aware that some people have experienced issues with external displays with M1 Macs running Big Sur, which reportedly have been fixed with the macOS 11.2 update, but I haven’t had a problem. ↩︎

Support MacStories Directly

Club MacStories offers exclusive access to extra MacStories content, delivered every week; it’s also a way to support us directly.

Club MacStories will help you discover the best apps for your devices and get the most out of your iPhone, iPad, and Mac. Plus, it’s made in Italy.

Join Now
11 Feb 19:20

Building an infill/laneway in Vancouver, Part I: The city decides to change the rules midway

by Frances Bula

Hi all

I’ve kicked off 2021 by writing for the Globe and Mail about the five-year process of building my infill (technical term) or laneway, as many people know them.

Here’s Part 1, linked and with the text below.

FRANCES BULA
VANCOUVER
SPECIAL TO THE GLOBE AND MAIL
When we signed the contract with a local company to design and build a laneway house in the yard behind our 1909 Edwardian, so that my husband’s daughter and her husband could have a place to live in Vancouver that wouldn’t bankrupt them or us, they had one child.

By the time Ariel and Brad moved in last October, there were three children.

It was almost five years to the day after I wrote the first $10,000 cheque. Four-plus years of going through city hall hoops and hurdles, sliding down the snake and going back up the ladder, and then eight months of construction. And now the former toddler was in Grade 2, heading off to school with a backpack.

People like my husband and I are increasingly common in Canada’s expensive cities: rookie private developers who don’t really have a clue about what we’re doing, thrust into a strange new world of construction management as we try to find new housing in the city for children, parents or even ourselves.

 

City politicians are encouraging that more and more in high-cost cities, campaigning on promises of allowing more leeway for people who own single-family homes to add basement suites and laneway houses. In some cases, they’re encouraging owners to demolish the old place and build a duplex, a fourplex or even, in Vancouver, a sixplex – if Mayor Kennedy Stewart’s latest initiative ever gets traction.

There’s a reason for this sea change from what it was 30 years ago, when basement suites were controversial. In a city with a housing shortage and constant pressure to create more, it’s attractive for politicians to encourage homeowners to become the developers themselves instead of having the pros do it. We amateurs can make a personal plea to have others on the block support their development application.

So I’m here to tell you what that is like exactly or, at least, what it was like from our end of the telescope.

I’m sure that people on the other end – experienced builders or experienced city-hall building-permit issuers – will roll their eyes at parts of my tale. “How could she not know that!,” they’ll say to themselves. But that’s the point.

We didn’t always know and we often couldn’t have any clue what was going to happen next, because it was our first, and likely only time, through the process. We don’t get to learn from project to project, the way professional builders do.

Things that might seem completely obvious to someone used to reading plans or negotiating construction budgets or complying with city processes were not at all obvious to us. (“Oh, this line here is a property line on the plan? I didn’t know that,” is just one of the many dippy things I said at various points.)

So this story isn’t just for you future rookies to educate yourselves before you jump off that cliff. It’s also for the people who are frustrated with us at the other end, because you have to deal with us when we’re confused and sometimes angry and sometimes clueless.

I’ll kill some of the suspense here and say that, in the end, we have a completely lovely house and that we think our construction manager was a hero. But…

So here is how it started.

When my husband’s daughter and her family moved back to Vancouver, after eight years away in the east, it didn’t take long for us to register the fact that it was going to be difficult for them to buy anything to live in. They were making more than the region’s median income between them as swim coaches, but that wasn’t enough.

Because I’ve worked as a reporter covering Vancouver city hall for more than two decades, I’d covered the city’s many efforts to find ways to create more housing. The laneway house program had officially kicked off in 2009, so I thought I knew the concept.

We had a special reason to be interested in laneway houses, because of the particular zone that our house is in. Most people who want to build laneway houses in Vancouver are restricted to about 750 square feet for a standard 33-foot-by-120 foot-lot. But our 1909 house is in an older neighbourhood of Vancouver, Mount Pleasant, where the zoning is different from the standard residential one that covers most of the city. It is one of several older neighbourhoods that ring the downtown where there are a fair number of early-20th-century houses.

In an effort to prevent the demolition of the older Craftsmans, Edwardians and occasional Victorians, the city started a program in the 1980s that would allow owners to add fairly large infill houses in return for an agreement to preserve the older house. It had been quite successful in Kitsilano, where mini-me houses sprouted in side and backyards. It was less common where we were.

But, as the price of housing started going up precipitously, a few owners in our area started using that program, often called “heritage light” or a Heritage Revitalization Agreement. We discovered we appeared to be eligible and that we could build a house of 950 square feet or more.

So I wrote the cheque in October, 2015 to a company called Smallworks, whose owner, Jake Fry, pioneered laneway housing in Vancouver. We signed a design-build contract for what stuck in my mind as “a laneway house that will cost $350,000,” and we set off.

The first thing you learn is that it takes almost a year of having your builder/architect negotiate with the city before you even apply for a development permit.

In the early batch of almost 300 e-mails that are in my files, we hacked our way laboriously through the dense undergrowth of early planning. We had the site meeting (in November), then some conferencing with the-then company architect over what his early conversations with city planners had established about how much square footage we would be allowed (December), then more meetings to come up with a preliminary design (January), then the developed design (February) and then the updated floor plan (March).

But things slowly ground to a halt at the city. At first, it seemed like just a small glitch; a new rule requiring 12-feet of clearance from main house to side property line. That kind of clearance was something that didn’t exist anywhere in the neighbourhood I lived in, because the big, old houses were built so close together.

Others in my neighbourhood were running into the same problem. “We also were broadsided by this reversal in city policy,” was one post on the Facebook group from “Rob” in our area. “I was quite far along on an infill proposal until I recently met with a city planning staff and got shot down.”

But, it turned out, that wasn’t the worst. Soon, the news started trickling out that some senior planner at the city thought there were too many of these HRA infills starting to pop up. The rules were too variable. Or something.

By late 2016, we were at a complete standstill. “Any clue for us what is going on?” was the subject line on Dec. 16.

This is the first of a four-part series.

11 Feb 19:19

Building a laneway/infill in Vancouver, Part 2: Two years of tussles over buildable space, sidewalks, trees, much more

by Frances Bula

Part 2 of the series, the link and the text below. (Sorry no pix because I can only reprint what belongs to me, not the Globe.)

FRANCES BULA
VANCOUVER
SPECIAL TO THE GLOBE AND MAIL

The low point in Phase 2 of the Ironman slog to build our infill house for my husband’s daughter and her family came when my patient architect let me know the people at city hall were suggesting we might have to decommission our existing basement suite.

That suite, where daughter No. 2 was living, would need to have the stove removed and stairs to the main floor put back in if we wanted to avoid the city requiring us to build in two enclosed parking spaces into the ground floor of the laneway.

That seemed like a “both roads lead to hell” scenario. One: Keep basement suite, provide housing for extra car, create architectural abomination, add costs. Two: Keep laneway house as non-grotesque building, lose suite, force daughter two to move to have some privacy, lose rent money.

That suggestion quietly floated away after a few weeks.

But it was one of several stomach-lurching dips in the roller coaster that we, inexperienced homeowners, went through during the year-long phase that comes before you ever apply for your development and building permits. It’s a year of long negotiations that precedes the second nearly-year-long wait between official application and actual granting of permits.

Of course, by spring of 2017, 16 months since we had written the first $10,000 cheque for a down payment on the future laneway, we still hadn’t even quite reached the pre-application stage.

All progress at city hall had stalled for our project – and all others in our neighbourhood – because a senior planner had apparently decided there was something wrong with the existing process of approving laneway houses in our area.

So my husband’s daughter, her husband, toddler and now new baby were living in an 850-square-foot second-floor apartment in Kitsilano. Brad, Ariel, Kajsa and Maeve’s stuff was piled along the walls and in the hallways. They were paying almost $2,000 a month for that space while we waited and hoped.

Ariel told me later they started to wonder if it would ever happen. “For a while, I almost gave up hope. I even applied to a co-op as a back-up plan.”

City planners had at first started telling the neighbourhood the previous spring that new rules were coming in to regulate “infills” in our particular zone, which were then done with case-by-case agreements for properties where owners were promising to preserve an older house in exchange for the infill permission.

An early drawing of the proposed new house to be built on the laneway behind Frances Bula’s Vancouver home.

SMALLWORKS LTD.

Then we heard in early January that, instead of revised rules for the old process, the city was instead going to do a complete revamp of the zoning to standardize everything.

This additional delay is a not-atypical part of development in high-growth cities, as politicians and planners decide that whole areas should be rethought in order to figure out where density goes.

It’s the kind of rethinking and rezoning that seems entirely reasonable in the abstract but, for people in our neighbourhood who already had spent many months on the original process for laneways and now had projects on hold, it felt like some special new form of torment – and expense.

Our area was also caught up in a citywide effort to figure out how to save older homes in general as residents were raising more and more objections to demolitions.

So city planners were looking at incentives for infill houses everywhere, allowing them to be larger and, under the right conditions, allowing them to be stratified – a legal process for selling off parcels of housing on lots where subdivision isn’t allowed – in exchange for people preserving their existing older houses.

It was controversial in some zones. But in our east-side neighbourhood, a lot of owners turned out to ask for maximum density for the infills.

Years ago, the Vancouver standard used to be that a house’s square footage could equal only 60 per cent of the total lot square footage. That meant 2,400 square feet for our 33-foot-by-122-foot lot – about what we had in the existing house.

Several years ago, the limit was raised to 70 per cent or 0.7 floor space ratio (FSR), in planner lingo. Now, they were talking about raising the limit to 80 per cent or 90 per cent for people building infills. That meant as much as 800 to 1,200 extra square feet for a second house on a lot in a city where new homes can sell for $1,000 a square foot. Those space differences are hugely important when you’re trying to build something big enough for a family.

By October, 2017, the new zoning for our area was approved at council, with a limit up to 0.85 FSR. It wasn’t going to come into effect until January, 2018. But we could crank up our application again.

My builder, Jake Fry of Smallworks Ltd., assigned our project a new architect, Jennifer Uegama, to steer us through what was still likely to be a complicated process.

Any time new zoning rules come in, Jake told us in various conversations, the planners and permit-issuers get cautious, worried they’ll make a mistake and set a precedent that can’t be rolled back. (And get them in trouble with their managers.)

So Jennifer took the basic outline of the original plan that had been worked out two years earlier and, from October, 2017, to July, 2018, finessed the interior layout to maximize the usable space, worked with my stepdaughter on design, and then diplomatically made her way through all the departments and new policy. (Because I am a reporter and cover city hall, I stayed out of sight as much as possible through the whole process.)

Interdepartmental politics erupted at times. Engineering wanted the enclosed garage to be on the east side because of their concerns about the car-turning radius in the alley to the garage.

But that would mean taking down a beautiful, large maple tree on the east side of the yard because the house was longer on the garage side, with a notched-out entryway, than the non-garage side.

We, and the landscaping department, wanted to save the tree. That meant putting the garage and longer side of the house on the west. Jennifer had to politely ask the two departments to arm-wrestle and figure it out, a process that took a couple of weeks.

The landscaping people won – something I would discover was becoming the rule at city hall.

Other bumps were almost comical.

One time, Jennifer showed up with her tape measure, saying that whomever she was working with at city hall thought the storage areas under the back and front porches would have to be calculated as part of our floor-space ratio. Spaces that had no proper foundation and that you couldn’t stand up in. But if they counted, we’d have to lower the ceiling or punch a hole in the exterior wall to ensure they didn’t count.

Another time, she was told the size of the laneway house was fine but our existing house was 40 square feet over the limit. So she was remeasuring everything to see if any of the space could be legally excluded.

Then there was the “you might have to take out your basement suite if you don’t want to have to provide parking for two cars” episode.

In the end, all those crazy-making requests disappeared. Jennifer worked through the four-page single-spaced list of required changes needed before submitting the application (a list that sounded daunting but at least, she said, we got a city project co-ordinator who responded instantly, unlike a colleague of hers who only got a page but could never get hold of the manager). And we got basically the same size house (1,040 square feet plus garage) as what had been mapped out two years earlier.

I assumed that our builder Jake, who is well known at city hall, was quietly at work to ensure that logic prevailed. It’s one of the reasons I’d gone with his company. (Yes, he said later, he was, quietly asking “Is that really necessary?” when needed.)

Jennifer submitted our official development-permit application July 24, 2019. A mere 174 days later, on Jan. 14, 2020, we got both our development permit and building permits at the same time.

We were ready to start building with no obvious problems on the horizon. Rumours of some strange flu-like epidemic in China were barely penetrating our consciousness.

11 Feb 19:18

What WebRTC means for you

by Eric Rescorla

If I told you that two weeks ago IETF and W3C finally published the standards for WebRTC, your response would probably be to ask what all those acronyms were. Read on to find out!

Widely available high quality videoconferencing is one of the real successes of the Internet. The idea of videoconferencing is of course old (go watch that scene in 2001 where Heywood Floyd makes a video call to his family on a Bell videophone), but until fairly recently it required specialized equipment or at least downloading specialized software. Simply put, WebRTC is videoconferencing (VC) in a Web browser, with no download: you just go to a Web site and make a call. Most of the major VC services have a WebRTC version: this includes Google Meet, Cisco WebEx, and Microsoft Teams, plus a whole bunch of smaller players.

A toolkit, not a phone

WebRTC isn’t a complete videoconferencing system; it’s a set of tools built in to the browser that take care of many of the hard pieces of building a VC system so that you don’t have to. This includes:

  • Capturing the audio and video from the computer’s microphone and camera. This also includes what’s called Acoustic Echo Cancellation: removing echos (hopefully) even when people don’t wear headphones.
  • Allowing the two endpoints to negotiate their capabilities (e.g., “I want to send and receive video at 1080p using the AV1 codec”) and arrive at a common set of parameters.
  • Establishing a secure connection between you and other people on the call. This includes getting your data through any NATs or firewalls that may be on your network.
  • Compressing the audio and video for transmission to the other side and then reassembling it on receipt. It’s also necessary to deal with situations where some of the data is lost, in which case you want to avoid having the picture freeze or hearing audio glitches.

This functionality is embedded in what’s called an application programming interface (API): a set of commands that the programmer can give the browser to get it to set up a video call. The upshot of this is that it’s possible to write a very basic VC system in a very small number of lines of code. Building a production system is more work, but with WebRTC, the browser does much of the work of building the client side for you.

Standardization

Importantly, this functionality is all standardized: the API itself was published and by the World Wide Web Consortium(W3C) and the network protocols (encryption, compression, NAT traversal, etc.) were standardized by the Internet Engineering Task Force (IETF). The result is a giant pile of specifications, including the API specification, the protocol for negotiating what media will be sent or received, and a mechanism for sending peer-to-peer data. All in all, this represents a huge amount of work by too many people to count spanning a decade and resulting in hundreds of pages of specifications.

The result is that it’s possible to build a VC system that will work for everyone right in their browser and without them having to install any software

Ironically, the actual publication of the standards is kind of anticlimactic: every major browser has been shipping WebRTC for years and as I mentioned above, there are a large number of WebRTC VC systems. This is a good thing: widespread deployment is the only way to get confidence that technologies really work as expected and that the documents are clear enough to implement from. What the standards reflect is the collective judgement of the technical community that we have a system which generally works and that we’re not going to change the basic pieces. It also means that it’s time for VC providers who implemented non-standard mechanisms to update to what the standards say[1].

Why do you care about any of this?

At this point you might be thinking “OK, you all did a lot of work, but why does it matter? Can’t I just download Zoom? There are a number of important reasons why WebRTC is a big deal, as described below.

Security

Probably the most important reason is security. Because WebRTC runs entirely in the browser, it means that you don’t need to worry about security issues in the software that the VC provider wants you to download. As an example, last year Zoom had a number of high profile security flaws that would, for instance, have allowed web sites to add you to calls without your permission, or mount what’s called a Remote Code Execution attack that would allow attackers to run their code on your computer. By contrast, because WebRTC doesn’t require a download, you’re not exposed to whatever vulnerabilities the vendor may have in their client. Of course browsers don’t have a perfect security record, but every major browser invests a huge amount in security technologies like sandboxing. Moreover, you’re already running a browser, so every additional application you run increases your security risk. For this reason, Kaspersky recommends running the Zoom Web client, even though the experience is a lot worse than the app.[2]

The second security advantage of WebRTC-based conferencing is that the browser controls access to the camera and microphone. This means that you can easily prevent sites from using them, as well as be sure when they are in use. For instance, Firefox prompts you before letting a site use the camera and microphone and then shows something in the URL bar whenever they are live.

WebRTC is always encrypted in transit without the VC system having to do anything else, so you mostly don’t have to ask whether the vendor has done a good job with their encryption. This is one of the pieces of WebRTC that Mozilla was most involved in putting into place, in line with Mozilla Manifesto principle number 4 (Individuals’ security and privacy on the internet are fundamental and must not be treated as optional.). Even more exciting, we’re starting to see work on built-in end-to-end encrypted conferencing for WebRTC built on MLS and SFrame. This will help address the one major security feature that some native clients have that WebRTC does not provide: preventing the service from listening in on your calls. It’s good to see progress on that front.

Low Friction

Because WebRTC-based video calling apps work out of the box with a standard Web browser, they dramatically reduce friction. For users, this means they can just join a call without having to install anything, which makes life a lot easier. I’ve been on plenty of calls where someone couldn’t join — often because their company used a different VC system — because they hadn’t downloaded the right software, and this happens a lot less now that it just works with your browser. This can be an even bigger issue in enterprises have restrictions on what software can be installed.

For people who want to stand up a new VC service, WebRTC means that they don’t need to write a new piece of client software and get people to download it. This makes it much easier to enter the market without having to worry about users being locked into one VC system and unable to use yours.

None of this means that you can’t build your own client and a number of popular systems such as WebEx and Meet have downloadable endpoints (or, in the case of WebEx, hardware devices you can buy). But it means you don’t have to, and if you do things right, browser users will be able to talk to your custom endpoints, thus giving casual users an easy way to try out your service without being too committed.[3]

Enhancing The Web

Because WebRTC is part of the Web, not isolated into a separate app, that means that it can be used not just for conferencing applications but to enhance the Web itself. You want to add an audio stream to your game? Share your screen in a webinar? Upload video from your camera? No problem, just use WebRTC.

One exciting thing about WebRTC is that there turn out to be a lot of Web applications that can use WebRTC besides just video calling. Probably the most interesting is the use of WebRTC “Data Channels”, which allow a pair of clients to set up a connection between them which they can use to directly exchange data. This has a number of interesting applications, including gaming, file transfer, and even BitTorrent in the browser. It’s still early days, but I think we’re going to be seeing a lot of DataChannels in the future.

The bigger picture

By itself, WebRTC is a big step forward for the Web: it If you’d told people 20 years ago that they would be doing video calling from their browser, they would have laughed at you — and I have to admit, I was initially skeptical — and yet I do that almost every day at work. But more importantly, it’s a great example of the power the Web has to make to make people’s lives better and of what we can do when we work together to do that.


  1. Technical note: probably the biggest source of problems for Firefox users is people who implemented a Chrome-specific mechanism for handling multiple media streams called “Plan B”. The IETF eventually went with something called “Unified Plan” and Chrome supports it (as does Google Meet) but there are still a number of services, such as Slack and Facebook Video Calling, which do Plan B only which means they don’t work properly with Firefox, which implemented Unified Plan. ↩︎
  2. The Zoom Web client is an interesting case in that it’s only partly WebRTC. Unlike (say) Google Meet, Zoom Web uses WebRTC to capture audio and video and to transmit media over the network, but does all the audio and video locally using WebAssembly. It’s a testament to the power of WebAssembly that this works at all, but a head-to-head comparison of Zoom Web to other clients such as Meet or Jitsi reveals the advantages of using the WebRTC APIs built into the browser. ↩︎
  3. Google has open sourced their WebRTC stack, which makes it easier to write your own downloadable client, including one which will interoperate with browsers. ↩︎

The post What WebRTC means for you appeared first on The Mozilla Blog.

11 Feb 19:18

Brexit is coming apart at the seams

by Chris Grey
The electronic ink had hardly dried on my previous post which finished with a reminder that unexpected events are always liable to arise than just such an event occurred. During a very confused few hours last Friday evening the EU first proposed and then withdrew the proposal to impose export controls on coronavirus vaccines moving from Ireland to Northern Ireland, though this did not mean ‘closing the border’ and would not have meant stopping vaccine shipments at the border. This proposal would have involved the invocation of the emergency provisions in Article 16 of the Northern Ireland Protocol. In the event, it did not happen but it has brought to a head issues which have been lurking in the background for months and given the UK government an alibi for destabilizing the Protocol.

The EU’s blunder

It immediately became apparent that this was a major blunder by the EU – or more specifically the European Commission – which had been done without regard for the political consequences. Neither the British nor the Irish government nor the Northern Ireland Assembly had been consulted or warned, and nor had Michel Barnier’s UK engagement team. As the news emerged, the Irish government in particular, along with Barnier and the EU Ambassador to the UK, played a key role in getting the situation quickly resolved. It also seems to be the case that the British government was measured and calm in its response, for which it deserves credit, although since then there has been a marked shift in its tone.

In and of itself it was an indefensible error by the EU. But all political systems commit such errors and it was speedily corrected, so whilst there may well be some lessons for the European Commission in what happened the idea that it says anything one way or another about the merits of Brexit is nonsense. Inevitably some Brexiters leapt upon it to claim justification, and some erstwhile remainers professed that it had changed their minds about Brexit. But there was no reason for that except for anyone who imagined that the EU is a perfect institution that never makes any mistakes, which remainers shouldn’t have and Brexiters surely didn’t. And let’s be clear, this episode has not led to the breakdown of trust between the UK and the EU – that was caused by the UK’s behaviour over the last four years or so, years in which the EU has been remarkably consistent and rational. That doesn’t excuse this piece of stupidity but it should put it in perspective.

The underlying problem: Brexit itself

The key point is that this episode was only possible because of Brexit and in particular because of the rickety and highly precarious arrangements for Northern Ireland which have had to be created to accommodate it. For the EU this means, amongst other things, having to get used to the fact that closing its borders with adjacent third countries is no simple matter. The UK is a third country, but the unique situation of Northern Ireland gives the meaning of that a particular complexity.

The issue isn’t that the EU needs to have any concern for annoying Brexiters. Despite what some in the UK seem to think, the EU does not view the world through the lens of Brexit as they do, and is not particularly bothered about nasty headlines in the UK press. Rather, it is that the EU needs to be attentive to the specific situation in Northern Ireland, not least as this is a matter of significant concern to Ireland which is a member state. In that context, any invocation of Article 16 would have to be a very last resort for a massive emergency.

The EU’s carelessness about this has been jumped on to feed the pre-existing, and wholly unjustified, demands from some unionist politicians in Northern Ireland, as well as some Brexiters outside Northern Ireland, to make use of Article 16 to suspend the operation of the GB-NI border, as mentioned in my post a few weeks ago. This is unjustified primarily because that operation is not an unforeseen or temporary emergency but is the necessary consequence of what the UK and the EU have agreed. Even more unjustified is to opportunistically use what happened on Friday to bolster the again pre-existing demand to scrap the Northern Ireland Protocol in its entirety.

Unsurprisingly, some of those doing so are still pretending that it, and the whole Withdrawal Agreement, are open to wholesale revision in the light of the TCA. Indeed it shouldn’t be forgotten that there is a hard core of Brexit Ultras who have never accepted the Withdrawal Agreement and the Protocol and have long argued for the government to jettison them, and will use any pretext to support that argument. The current row about last Friday's events is therefore a symptom of a much deeper problem.

How have we got here?

Demands to ditch the Protocol beg the question of what should replace it, and here it’s necessary to go right back to the fundamental issues of how it arose. To be extremely brief, it has come about because the hard Brexit of leaving both the single market and customs union necessitates that there be a border somewhere. Since it cannot be a land border between Ireland and Northern Ireland because of the Good Friday Agreement, and there are no technological solutions that would create a virtual border, it has to be a sea border between Great Britain and Northern Ireland.

These facts were ignored or denied by Brexiters before the Referendum, including Boris Johnson, and many of them continue to deny it even now. Yet it was the reason for the ‘backstop’ agreed by Theresa May. Brexiters, including Johnson, said that was unacceptable and he instead agreed, and his MPs voted for, the ‘frontstop’ whereby there would, regardless of whatever got agreed in the TCA, be a sea border of some sort. How intrusive a border that has turned out to be is an artefact of the UK’s decision to prioritise divergence from EU regulations in the name of sovereignty in the TCA.

That is a very short account, but what it means is that the complex and messy situation we are now in – including the ongoing and expected to increase disruptions to goods flows between GB and NI – is the result of Brexit in general, and of the particular way that Johnson’s government chose to implement Brexit. What that is now leading to is not just economic disruption but an emergent and highly worrying political and, potentially, security problem whereby sea border control staff are being threatened with violence and as a result some checks on animal products and food were suspended this week. Note that these threats also pre-date the Friday night Article 16 fiasco so cannot be blamed on it. Just as a land border is unacceptable to, especially, the republican community so too is a sea border unacceptable to, especially, parts of the unionist community. (It is important for anyone with a public platform, even one as limited as this blog, to clarify that there is no evidence of paramilitary involvement in these threats.)

What is now becoming ever-clearer is that Brexit threw a huge rock into the high delicate and fragile machinery of the Northern Ireland peace process, a machinery of complex checks and balances which had as an implicit condition the fact that both Ireland and the UK were within the EU. The Protocol averts the worst of the damage, by preventing an Irish land border, but that doesn’t prevent there being any damage at all. It is an enduring badge of shame that Brexiters were so casual in ignoring what Brexit would mean for Northern Ireland, that hard Brexit was pursued despite what it meant, that Johnson agreed to something without, apparently, understanding what it meant, and that his MPs endorsed it. The shame is all the greater given that the majority in Northern Ireland voted to remain in the EU.

Johnson’s dishonesty and opportunism

The danger now is that the government looks set to use the EU’s stupid mistake as cover to try to completely unpick the Protocol. At the heart of that lies the refusal of the government, including Johnson and Northern Ireland Secretary Brandon Lewis, to accept that the Irish Sea border even exists as a result of the Protocol they agreed to. That it manifestly does, with all the adverse effects that is having on Northern Ireland, is therefore being blamed on the way the Protocol is being operated, allowing Johnson to indulge in the sickening pretence that he can “ensure there is no border down the Irish Sea”. Worse, he threatened to invoke Article 16 even before the Friday row and is doing so again now as if in response to, or somehow justified by, the EU’s error.

The problems that Brexit is currently causing businesses in Northern Ireland, even though they are of the government’s own making, make it reasonable to ask the EU to extend the various existing grace periods – for example on uncooked processed meats – as Michael Gove has done in his letter to Maros Sevcovic, his co-chair of the Joint Committee. And there may be other adjustments that can reasonably be made. But Gove is quite wrong to suggest, in his rather aggressive letter, that the EU’s error provides a reason why the operation of the Irish Sea border should be revised wholesale and entirely in line with UK demands, and still less justified in using the implicit threat of the UK itself now invoking Article 16 if these demands aren’t met (which would in any case be a misuse of Article 16).

The border operation reflects the fundamental, long-term, structural problems of Brexit in general and the Northern Ireland agreement in particular, problems for which Gove is one of those most responsible. The problems it is creating were not ‘unforeseen’, they were set out in the government’s own impact assessment in October 2019 of the Withdrawal Agreement it had reached with the EU. This, remember, was the deal that Johnson hailed as a great triumph of his negotiating skills, the deal he sold at the General Election, the deal all Conservative MPs voted for, and the deal he signed barely more than a year ago.

So it is totally unreasonable to expect the EU simply to ignore all the practical consequences of what Britain has chosen to do to itself. Rather, it is for the British government to row back on its hardline decisions (in the TCA) about, for example, freedom to diverge from EU food hygiene rules. This in turn would reduce the extent of the sea border checks. Pretending they are something to do with the Friday mess-up is dishonest and opportunistic, and suggests that despite the government having met the initial crisis calmly it is now deliberately exploiting it to further antagonize relations with the EU.

It is hard to resist the thought that the government, and most certainly some of the Brexit Ultras, have always been intent on picking away at both the Withdrawal Agreement and the TCA at the earliest opportunity. And the illegal clauses in the Internal Market Bill showed its lack of acceptance of the Northern Ireland Protocol. If it chooses to really ramp up a row over the Protocol, especially to the point of actually suspending it without legitimate grounds, then it may create a very serious situation for Northern Ireland, of course, but also for itself. Nothing could be better calculated to sour the UK’s relations with Biden’s new administration, for one thing. And it bears saying that the European Parliament has not yet ratified the TCA, so it is hardly a propitious moment to effectively renege on the agreements that were its prior condition.

For now, the Joint Committee has issued an anodyne ‘place holder’ announcement, and there will be a further meeting next week, but the omens are not good. We are only a month into Brexit, in the full sense of the end of the transition, and already key parts of it are coming apart at the seams.

The wider picture

The wider lesson of the current situation in Northern Ireland is of the need for this Brexit government to take responsibility for all of the unfolding problems of Brexit. For this week has again seen a slew of reports about the difficulties facing businesses across the UK, underscoring that, as Gove has admitted with respect to Northern Ireland, these are not ‘teething problems’ and are liable to get worse, not better. In a summary of the first month since the end of the transition, Lizzy Burden of Bloomberg News reports how “UK firms are being slowly ground down” by the new barriers to trade with the EU. The BBC Reality Check team provides a similar summary as does the Financial Times (£).

In all three reports there are links to some of the stories referred to in the last few posts on this blog – the evidence base for substantial and permanent damage to UK businesses is now growing, and increasing delivery times mean that UK manufacturing is “close to stalling” (£). Whilst the latter is due to both Covid and Brexit, the report shows that other countries, which are also suffering from Covid, are seeing a growth in manufacturing exports. So it seems fair to attribute the difference to Brexit. I don’t think it is hyperbole to say UK SME exporters to the EU are experiencing a bloodbath from which many of them are unlikely to recover.

It has now emerged that, apparently without having realized it, the government has permanently destroyed British shellfish exporters. There are also new reports of serious problems facing the fashion industry and, as with the situation facing musicians and other performance artists,  they arise ultimately from the end of freedom of movement of people but proximately from the UK government’s unwillingness to agree a mobility chapter with the EU as part of the TCA. That could, potentially, still be agreed if, as with the issue of food standards, the government were to change its hardline stance. Doing so would be far more important that the much-trumpeted opening of talks to join the Comprehensive and Progressive Trans-Pacific Partnership (CPTPP). There’s nothing wrong with doing so, but its economic benefits will be nugatory and it is more designed to make a purely political point about ‘Global Britain’ and the supposed long-term opportunities of Brexit.

That is hardly a priority when businesses are on their knees right now and could at least partly be helped by improvements to the TCA. One thing which any ‘Global Britain’ worthy of the name should certainly be doing is extending the clearly inadequate June deadline for EU nationals to apply for ‘settled status’ (£), as well as simplifying the system and stopping the bone-headed refusal to provide paper documentation when settled status has been established. Doing so would not only be right but would head off what otherwise is going to be yet another monumental mess caused by Brexit.

Will the Brexit government take responsibility?

The full effects of Brexit, now that the transition period has ended and the TCA has kicked in, are still only beginning to be felt. Every single one of them discredits the claims made by Brexiters, including the idea that there was no need to extend the transition so as to allow a genuine implementation period. There’s no point in them continuing to deny these effects, or continuing to try to justify the false claims they made. Now, it is their responsibility to work to mitigate, so far as it is possible, the worst of the damage they have created.

It is difficult to be hopeful that this will happen, not least because of the apparently pathological inability of Johnson and the Brexit Ultras to tell the truth or to take responsibility for their actions. So it seems more likely that the same failings that created this mess will be repeated and repeated. The appointment last Friday of David Frost as the UK’s Brexit and international policy representative is an especially bad sign given that he was the architect of the TCA which is responsible for some of the damage. And with Johnson and Gove now apparently refusing to accept that the Northern Ireland problems flow from their own policies there is little reason to doubt that we are the beginning of years of acrimony and instability as the Brexit process continues to play out. As many of us feared and warned.

11 Feb 19:16

“I was allowed to believe things that weren’t true” — Marjorie Taylor Greene

by Josh Bernoff

Most uses of passive voice are lazy, thoughtless, or evasive. But the “allowed to believe” statement from Congresswoman Marjorie Taylor Greene’s speech is in another category: in just nine words, Greene declares her own idiocy and ignorance, and then blames unspecified forces for highjacking her brain and her fingers. If there is a passive voice … Continued

The post “I was allowed to believe things that weren’t true” — Marjorie Taylor Greene appeared first on without bullshit.

11 Feb 19:16

120+ USB4 / Thunderbolt 4 Hubs & Docks compared (January 2024)

by danchar
[Updated 2024/01/01 with additional models] Here come the mighty Docks… [Looking for less-expensive USB-C options?] Introduction Here is a growing

read more 120+ USB4 / Thunderbolt 4 Hubs & Docks compared (January 2024)

read more 120+ USB4 / Thunderbolt 4 Hubs & Docks compared (January 2024)

11 Feb 19:16

Dearest Martha,

Dearest Martha,

It has been nearly sixty days since I crossed over the ocean and returned to my more design principled homeland on Macintosh. I sought no longer to be a voyager in unknown lands, a stranger amongst those who call upon the goddess Cortana, and sought peace and refuge here in a time of need.

But lo! This adjustment has not been easy, and it has not been “just works”, but fraught with much pain and consternation. Allow me to enumerate these small but compounding tribulations.

Firstly, I am simply awash in cables for which to charge and plug and unplug. Broken by my disorganization, I spoke with a man named Elgato and — for a handsome sum — purchased from him a curious device which reduces my cabling complications down to a single cord. But to my dismay, I still see rope upon rope unto which need to be managed. It is not a panacea. The device will occasionally malfunction leaving me without peripherals such as my much needed camera, darkening my avatar to colleagues in these strange times. Most annoyingly, I have discovered that if I route a cable to speakers from the rear of the device and connect analog headphones to front of the device, it will produce a hideous hum in the speakers, no doubt due to some grounding failure. Perhaps another gilded cable from the Amazon will solve this nuisance.

Secondly, my preferred scrolling device, a simple mouse, was pushed out by my own scroll-direction anxieties and I am forced to flail my fingers numbly and imprecisely over an enchanted TrackPad. This is fine as things go, but ergonomically produces a pain in my wrist. So I have constructed a tilted riser out of the children’s plastic bricks, which provides relief but has all the professionality of a bear in a hat and tie riding a bicycle.

Thirdly, these cursed sonic AirPods. They enjoy pairing with my telephone and enjoy pairing with my entertainment tablet, but they only produce aggravation when interfacing with the computer. If — on the rare occasion they are able to connect properly — I am to be interrupted by a person of this household whilst they are in use, which is oft the case during this awful pandemic, they refuse to acknowledge their previous pairing and authenticated handshake. It’s as if they have never met before, nay never existed! And please don’t get me started on receiving a phone call whilst connected to the computer, a disasterously clumsy process — forged by Lucifer himself — with a singular purpose to make me appear to be a common idiot when answering the telephone! It is so terrible I have given up on those blasted AirPods entirely and will spend the rest of my days suffering a dent in my scalp, what the children mockingly refer to as “headphone hair.”

Fouthly, is that most obvious of obstacles, Big Sur. This creature, whenever the wind blows and it decides to update, removes software I had previously installed from itself. Then it is up to me to reset or reinstall such software as needed. This is particularly confounding with my Rosetta Terminal being erased. I crafted the Rosetta Terminal because the various homebrews, nodes, and rubies were not immediately suited to the new architecture, and those cursed automata puppeteer and puppetter-core — which drove me to Macintosh in the first place! — they require the ancient technologies to function. Behold! When I update the system, my precious and needed Rosetta Terminal is erased and git must be installed entirely via xcode-select. Like Sysiphus, I return to pushing the boulder up the hill.

It is bittersweet possessing modern things but having old, tired problems. Perhaps the frustrations of technology is a curse we cannot escape. It seems overwhelming that peripherals in the land of Macintosh are an afterthought. A manicured and controlled piece of hardware unable to interface with the world outside. A sad story, if it were to be written.

Sadly, I must go now and cut this communique short. The sprint is ending soon and I will have two days respite before beginning anew. The children have asked that I assist their friend Luigi clear his mansion of ghosts and ghouls. Such imagination! Best wishes, I hope you are well, and an invitation to be vaccinated arrives on your doorstep soon.

Your sincerely,

David

11 Feb 19:15

Acapella sound effects

by Volker Weber

11 Feb 19:15

Retail, rent and things that don't scale

by Benedict Evans
Morioka Shoten

Morioka Shoten

I generally think about retail as sitting on a spectrum from logistics to experience. At the logistics end, you know exactly what you want and retail’s job is to provide the most efficient way to get it. At the experience end, you don’t know, and retail’s job is to help you, with ideas, suggestion, curation and service.

Ecommerce began at the logistics end, as a new and (sometimes) more efficient way to get something. It’s not always more efficient - you don’t have your lunch mailed to your desk. Rather, the right logistics in retail is a matter of algebra. How much inventory is needed, how many SKUs, how big are the products, how fast can they be shipped, how often do you buy them, how far would you be willing to drive or walk, does the product need to be kept cold, or warm, what’s the cost per square foot - there are all sorts of possible inputs to the equation, and if you visualised them all you’d have a many-dimensional scatter diagram, that would tell you why Ikea has giant stores on the edge of town, why Walgreens has small local stores, and why you can buy milk on every block in Manhattan but not a fridge. 

The internet adds a new set of possibilities to that algebra. Amazon sells anything that can be stored on a shelf in a vast warehouse and shipped in a cardboard box. It doesn’t so much have ‘infinite shelf-space’ as one shelf that’s infinitely long: it only sells things that can fit into that model. Grocery delivery is an entirely different model, that needs quite different storage and quite different logistics; so in turn is restaurant delivery (or take-away, which is at least a third of US restaurant spending). Meanwhile, the online mattress business was founded on the flash of insight that if you vacuum-pack a foam mattress then you can ship it like any other parcel, and bypass the existing mattress industry’s distribution model, but that also means you can’t do returns. Mattresses, books and sushi can all be bought ‘online’, but those are as different from each other as Walgreens and Ikea. They’re all algebra - all different points in that scatter diagram - and a binary split between ‘online’ and ‘physical’ retail is less and less useful. 

Part of that algebra is that all sorts of things that were previously separate budgets become part of the same question. Should you spend your acquisition budget on search ads or free shipping? Or a better returns policy? If you open a store in that city, can you spend less on Instagram, and do your returns go down or up? How do you reach your customers, and who are they? There’s long been a joke in D2C that ‘rent is the new customer acquisition cost’, but what is an Amazon truck? 

2021 Great Unbundling published.041.png

The further any retail category gets from these logistics questions, the less well the internet has tended to work. It’s much easier to connect a database to a web page than to put human experience on a web page. The Internet lets you live in Wisconsin and buy anything you could buy in New York, but it doesn’t let you shop the way you could shop in New York. And so a lot of the story of ecommerce in the last 25 years has been on one hand converting things that looked like they needed experience into logistics but on the other hand trying to work out how to build experience online. People will happily buy books without seeing them, and they will buy shoes if you add free returns (turning experience into logistics), and they will also buy high fashion or $100,000 watches but, now, you will need to solve experience, because that’s really what matters, not just the logistics. 

Part of the promise of the internet is that you can take things that only worked in big cities and scale them everywhere. In the off-line world, you could never take that unique store in London or Milan and scale it nationally or globally - you couldn’t get the staff, and there wasn’t the density of the right kind of customer (and that’s setting aside the problem that scaling it might make people less interested anyway). But as the saying goes, ‘the internet is the densest city on earth’, so theoretically, any kind of ‘unscalable’ market should be able to find a place on the internet. Everyone can find their tribe. 

This sits behind some of the explosive growth of Shopify, which handled over $100bn of GMV in 2020, and behind Instagram, and the influencer thing, and subscriptions, and now live video and AR. How do you take that experience from 1,000 square feet in Soho or Ginza to a screen? Of course, some of what Instagram and influencers are doing is unbundling magazines, and magazines are also a way to take the big city experience to everyone. But I wonder now how much more you can pick up those spikes of weird, quirky, interesting things in a few cities and take them everywhere. 

I described retail as logistics and experience, but it’s also culture. What will happen as the generations that grew up with ecommerce no longer see it as new and exciting but instead internalise it, and take ownership? Retail is pop culture, and that’s live streaming but it’s also the shop that only you know about. Maybe the internet is due for a wave of things that don’t scale at all. In that light, I’ve been fascinated by ‘Morioka Shoten’ in Tokyo - a bookshop that sells only one book at a time. This is retail as anti-logistics - as a reaction against the firehose, and the infinite replication of Amazon. Before the internet that would only work in a very dense city, but, again, the internet is the densest city on earth, so how far do we scale the unscalable?

11 Feb 19:14

Revisiting My Ideal Feed Reader

by Ton Zijlstra

Two years ago I wrote about the features I’d like to see in an ideal feed reader. Today I’ve tried to sketch out the various components, based on the various IndieWeb protocols, and then match the features I listed previously to the component that I think should provide it.

Separating feed reading into IndieWeb components

Feeds from blogs, to the left in the sketch below, end up in a microsub server, whose function is to fetch and store feeds. A microsub client is what presents those fetched feeds to me. A regular feed reader usually does both these things, but splitting them like the IndieWeb does allows multiple clients to use the same collection of feeds and feed items. It allows a wider diversity of readers, if the fetching is dealt with separately.
The microsub client also contains a micropub client. This allows having action buttons underneath each item presented in your microsub client. Hitting a button posts your reply or remarks, or shares something to your own website, and through your site to e.g. Twitter or Mastodon. Ideally it would be possible to have different websites to share to, next to storing locally in a specified format. The website that receives such an action has a micropub endpoint, and may need authentication through IndieAuth.

Such a reader set-up should be able to run locally on my laptop, as well as on a basic hosting package, so likely php / mysql based. Locally because I want to run my stuff local first, but the same thing online, even if a home server, because I’m not always working on my laptop and would like access from my tablet too, and point my Android Indigenous app to my subscriptions. Locally I would not need authentication from the microsub client to the microsub server, but in all other situations I would.

The sketch above is completely congruent with how I sketched my information gathering and filtering process in 2005:

filter1.jpg

Matching the ideal functionality to IndieWeb components

When I match the features of my ideal feed reader to those various IndieWeb components I think this is what results:

Microsub server needs to be able to :
* use various kinds of feeds (rss, atom, json, h-feed)
* allow folders (so I can arrange feeds on social distance)
* recognize and store tags if feed items have them
* allow me to tag _feeds_, really meaning tagging authors
* keep track of posting frequency, last post seen of feeds
* keep track of tags or predefined topics mentions/frequency
* pull in machine translations by default for certain feeds and store them with the orginal item

Microsub client needs to be able to:
* present the feed items in the server’s folder structure as a long list (the classic feed reader view)
* present views based on patterns in current feed items: what’s hot, what’s unique? Also set against social distance. (Topics discussed in my communities today)
* present views based on feed tags (show me all Germany based blog items of this morning, show me every feed of from EU based coders)
* present views based on feed tags and item tags: show me Germany based blog items talking about topic X.
* show full text search results of all items mentioning a certain topic.
* store full text search queries
* present visually which topics seem to be hot in which community, or where the frequency of mentioning a topic has changed
* provide a search of feeds (not feeds content): do I already have this feed in my list, where’s the feed of author Y?
* pull in a machine translation on request

Micropub client needs to be embedded in the microsub client and should support:
* saving an article as markdown or as html, to disk, to Zotero
* creating a todo from it by amending a textfile,
* bookmarking it, either to my blog or some other target
* sharing something about it to my blog, to Mastodon through my blog
* replying to it, through my blog to Mastodon, Twitter, other blogs
* allow configuring new actions.
* choosing from multiple micropub endpoints

What do you think, should some of these features be provided by other components than they’re currently listed? Are features missing that you’d like to see in your ideal feed reader?

11 Feb 19:14

Les Enfants Radar

by Gordon Price

A public service ad from Quebec, brilliant in any language:

Thanks to Karole Sutherland.

 

11 Feb 19:07

Continental drift

by Jon Udell

In a 1999 interview David Bowie said that “the potential for what the Internet is going to do to society, both good and bad, is unimaginable.” I had no problem imagining the good, it was the bad where my imagination failed. The web of the late 90s was a cornucopia of wonder, delight, and inspiration. So was the blogosophere of the early 2000s. I know a lot of us are nostalgic for those eras, and depressed about how things have turned out. The bad is really quite bad, and sometimes I feel like there’s no way forward.

And then something wonderful happens. This time the spark was David Grinspoon aka @DrFunkySpoon. I’ve written before about a Long Now talk in which he posits that we might not just be living through the beginning of a geological epoch called the Anthropocene but rather — and far more profoundly — the dawn of an eon that he calls the Sapiezoic. Today he posted a stunning new visualization of plate tectonics.

As always when I think about plate tectonics, I’m reminded of the high school science teacher who introduced me to the topic. His name is John Ousey, and this happened almost 50 years ago. What always stuck with me is the way he presented it. Back then, plate tectonics was a new idea. As Mr. Ousey (he later became Dr. Ousey) described the continents sliding apart, I can still see the bemused look on his face. He was clearly wrestling with the concept, unsure whether to believe things really happen that way. That healthy skepticism, coupled with trust in the scientific process, made an indelible impression on me.

One of the wonders of the Internet is the ability to find people. It took some sleuthing, but I did find him and this ensued.

That’s the kind of magic that can still happen, that does happen all the time.

I learned for the first time that John Ousey’s introduction to plate tectonics came by way of “weekend courses taught by the great teacher/researcher Ehrling Dorf of Princeton” who was himself perhaps “not totally convinced.” Despite uncertainty, which he acknowledged, John Ousey was happy to share an important new idea with his Earth science class.

What a privilege to be able to thank him, after all these years, for being a great teacher who helped me form a scientific sensibility that has never mattered more than now. And to share a moment of appreciation for an extraordinary new visualization of the process once known as continental drift. Yes, there’s a dark side to our connected world, darker than I was once willing to imagine. But there is also so much light. It’s always helpful to consider deep geological time. That video shows a billion years of planetary churn. We’ve only been connected like this for 25 years. Maybe we’ll figure it out. For today, at least, I choose to believe that we will.

11 Feb 19:00

WirelessMoves In A Container

by Martin

I’m interrupting the regular programming today for a minute for a special infrastructure announcement! You might have guessed that I had a couple of things in mind when I started my Dockerize-Me learning journey some time ago and one of them was to put this blog, now in its 16th year, into a container.

A Bit Of History

In total, this is the 3rd significant infrastructure change. Back in 2005, I started the blog on Typepad, a popular but proprietary blog hosting platform of its day. At some point, my requirements outgrew Typepad, which was on the decline anyway, so I decided to migrate to WordPress and host it myself. It was a painful move as Typepad, probably on purpose, did not support migration well. But with some effort, I wriggled my data free. As I didn’t want to install and configure the web server and PHP myself, I chose to run the blog at Uberspace, a managed server hoster and ran the blog from there for some years.

Over the years, I gained experience with setting up web servers, so I eventually moved the blog to a virtual machine running in one of Hetzner’s data centers in Germany. This time around, migration was straight forward, as WordPress makes this very simple. So this has been the state of the art for several years now. However, even though I selected the smallest VM instance possible, the load on the server is very low. Yes, I am very much niche, I know!

Containers, Containers, Containers…

So at some point, the idea was born to move the blog into a container and put it behind a reverse proxy so I could run more than one service on the same virtual machine. It took me a while to get there, as Worpdress was not really developed to live in a container. This makes the setup a bit strange, at least to my eyes, and I first wanted to understand the setup and the implications thoroughly. For those of you who are interested, I will go into the details in a follow-up article.

So as of yesterday, 6. February 2021 8.30 pm CET, the blog is running in a container on a virtual machine in a Hetzner data center. The outage time during the cut-over was less than 2 minutes. Yes, I rehearsed the move beforehand to make it quick. A seamless transition would have been possible but that would have required moving the TLS certificate to the new instance manually and fiddle with some JSON configuration files of the reverse proxy. I’m a perfectionist, but not at any cost. So I chose to just change the DNS domain entry to the new IP address, wait for it to propagate with a time to live of 1 minute, and then fire up the container. This triggered the reverse proxy to get a new certificate from Letsencrypt within a few seconds.

And just for the fun of it, I didn’t choose Germany as location, but Helsinki, Finland. That probably adds a few milliseconds to the round trip time but I haven’t noticed any difference, really. And true to my original intentions, that VM also runs three other services, each with its own domain name: An Etherpad instance and two instances of my research database service I’ve been working on in my private time over the years.

11 Feb 18:55

Week Notes 21#05

by Ton Zijlstra

My mood and focus improved again this week, which is good news. I still got bogged down in more handover work than I expected beforehand, but all in all this week was ok.

This week I:

  • Did some invoicing and prepared for the January invoicing, which I’ll do the coming wee
  • Reviewed the procurement terms by a service provider for some data for a client, to help guard their data sovereignty as a public body.
  • Moved my mail archives to the new laptop (I use Mailsteward for it), and switched to local archiving on the new laptop. As I’m working from home anyway, there is currently no need to keep any e-mail in the IMAP’d inbox, as I won’t be accessing it from my mobile or tablet anyway. This meant I could happily archive anything that was in there, and have been able to declare inbox 0 the entire week. It showed me how often I tend to check mail on my phone, as I now noticed there was never anything on my screen! Let’s see if my average use time on my phone decreases the coming week.
  • Made a first design for a story telling site, where we plan to collect individual experiences w.r.t. air quality, as part of the citizen science community building project in Rotterdam we started last month. The idea is to look for patterns in the collected stories, and run the ‘survey’ for the entire 2.5 years the project is scheduled for.
  • Made some but relatively limited progress in reading the documentation on all the EU data related policies and regulations. I am working towards a legal, organisational and content timeline to provide a helicopter view of everything that has a bearing on data. This entire year I will spend about half my time on this subject and making a (moving) ‘map of the world’ will be very useful to me and the client(s). I’m tackling these documents with a lot of note taking into my PKM system, and I’m starting to feel the momentum that is bringing.
  • Revised a document describing a role and process description for the open data coordinator and data publication efforts of a client. Not finished as I had hoped, but nearly.
  • For the Open Nederland association I reviewed the received comments on the draft statutes, and presentend them in the General Assembly where we approved the statutes. Now I can have them notarised and registered. This will allow us to start the process of getting recognised as a public benefit institution (promoting open knowledge and creative commons).
  • With the move to a new laptop I’ve left behind my previous feedreader, ReadKit, and have been using my personal TinyTinyRSS instance. I run it on one of my domain names since some time already, but now adopted it as my main feed reader as an experiment how that fits/feels in my workflow. Started musing about feed reading again because of it.
  • Due to the forecasted snow followed by a week of freezing temperatures (up to -15C) accompanied by strong winds, made some preparations like wrapping some potted plants, bringing the sleigh and snow shovel from the shed into the house. And, because the supermarket cancelled deliveries because of the weather, made an unforeseen trip to the supermarket myself to stock up for the coming week.
  • Today was a relaxed day with lots of fun in the snow with Y. I feel physically tired, not mentally tired, and I realised how it has been the other way around for a year now. I suspect I’ll sleep as well as Y tonight (she didn’t make a peep anymore after her head hit the pillow).

Primary schools are reopening as of tomorrow, so Y will be in school in the mornings, allowing E and me a bit more time for ourselves and work than in the past weeks of lockdown.

20210207_092521
Y was ready to go outside into the snow as soon as she woke up, and spent most of the day outside



This is a RSS only posting for regular readers. Not secret, just unlisted. Comments / webmention / pingback all ok.
Read more about RSS Club
11 Feb 18:05

Widely used programming languages: past, present, and future

by Derek Jones

Programming languages are like pop groups in that they have followers, fans and supporters; new ones are constantly being created and some eventually become widely popular, while those that were once popular slowly fade away or mutate into something else.

Creating a language is a relatively popular activity. Science fiction and fantasy authors have been doing it since before computers existed, e.g., the Elf language Quenya devised by Tolkien, and in the computer age Star Trek’s Klingon. Some very good how-to books have been written on the subject.

As soon as computers became available, people started inventing programming languages.

What have been the major factors influencing the growth to widespread use of a new programming languages (I’m ignoring languages that become widespread within application niches)?

Cobol and Fortran became widely used because there was widespread implementation support for them across computer manufacturers, and they did not have to compete with any existing widely used languages. Various niches had one or more languages that were widely used in that niche, e.g., Algol 60 in academia.

To become widely used during the mainframe/minicomputer age, a new language first had to be ported to the major computers of the day, whose products sometimes supported multiple, incompatible operating systems. No new languages became widely used, in the sense of across computer vendors. Some new languages were widely used by developers, because they were available on IBM computers; for several decades a large percentage of developers used IBM computers. Based on job adverts, RPG was widely used, but PL/1 not so. The use of RPG declined with the decline of IBM.

The introduction of microcomputers (originally 8-bit, then 16, then 32, and finally 64-bit) opened up an opportunity for new languages to become widely used in that niche (which would eventually grow to be the primary computing platform of its day). This opportunity occurred because compiler vendors for the major languages of the day did not want to cannibalize their existing market (i.e., selling compilers for a lot more than the price of a microcomputer) by selling a much lower priced product on microcomputers.

BASIC became available on practically all microcomputers, or rather some dialect of BASIC that was incompatible with all the other dialects. The availability of BASIC on a vendor’s computer promoted sales of the hardware, and it was not worthwhile for the major vendors to create a version of BASIC that reduced portability costs; the profit was in games.

The dominance of the Microsoft/Intel partnership removed the high cost of porting to lots of platforms (by driving them out of business), but created a major new obstacle to the wide adoption of new languages: Developer choice. There had always been lots of new languages floating around, but people only got to see the subset that were available on the particular hardware they targeted. Once the cpu/OS (essentially) became a monoculture most new languages had to compete for developer attention in one ecosystem.

Pascal was in widespread use for a few years on micros (in the form of Turbo Pascal) and university computers (the source of Wirth’s ETH compiler was freely available for porting), but eventually C won developer mindshare and became the most widely used language. In the early 1990s C++ compiler sales took off, but many developers were writing C with a few C++ constructs scattered about the code (e.g., use of new, rather than malloc/free).

Next, the Internet took off, and opened up an opportunity for new languages to become dominant. This opportunity occurred because Internet related software was being made freely available, and established compiler vendors were not interested in making their products freely available.

There were people willing to invest in creating a good-enough implementation of the language they had invented, and giving it away for free. Luck, plus being in the right place at the right time resulted in PHP and Javascript becoming widely used. Network effects prevent any other language becoming widely used. Compatible dialects of PHP and Javascript may migrate widespread usage to quite different languages over time, e.g., Facebook’s Hack.

Java rode to popularity on the coat-tails of the Internet, and when it looked like security issues would reduce it to niche status, it became the vendor supported language for one of the major smart-phone OSs.

Next, smart-phones took off, but the availability of Open Source compilers closed the opportunity window for new languages to become dominant through lack of interest from existing compiler vendors. Smart-phone vendors wanted to quickly attract developers, which meant throwing their weight behind a language that many developers were already familiar with; Apple went with Objective-C (which evolved to Swift), Google with Java (which evolved to Kotlin, because of the Oracle lawsuit).

Where does Python fit in this grand scheme? I don’t yet have an answer, or is my world-view wrong to treat Python usage as being as widespread as C/C++/Java?

New programming languages continue to be implemented; I don’t see this ever stopping. Most don’t attract more users than their implementer, but a few become fashionable amongst the young, who are always looking to attach themselves to something new and shiny.

Will a new programming language ever again become widely used?

Like human languages, programming languages experience strong networking effects. Widely used languages continue to be widely used because many companies depend on code written in it, and many developers who can use it can obtain jobs; what company wants to risk using a new language only to find they cannot hire staff who know it, and there are not many people willing to invest in becoming fluent in a language with no immediate job prospects.

Today’s widely used programmings languages succeeded in a niche that eventually grew larger than all the other computing ecosystems. The Internet and smart-phones are used by everybody on the planet, there are no bigger ecosystems to provide new languages with a possible route to widespread use. To be widely used a language first has to become fashionable, but from now on, new programming languages that don’t evolve from (i.e., be compatible with) current widely used languages are very unlikely to migrate from fashionable to widely used.

It has always been possible for a proficient developer to dedicate a year+ of effort to create a new language implementation. Adding the polish need to make it production ready used to take much longer, but these days tool chains such as LLVM supply a lot of the heavy lifting. The problem for almost all language creators/implementers is community building; they are terrible at dealing with other developers.

It’s no surprise that nearly all the new languages that become fashionable originate with language creators who work for a company that happens to feel a need for a new language. Examples include:

  • Go created by Google for internal use, and attracted an outside fan base. Company languages are not new, with IBM’s PL/1 being the poster child (or is there a more modern poster child). At the moment Go is a trendy language, and this feeds a supply of young developers willing to invest in learning it. Once the trendiness wears off, Google will start to have problems recruiting developers, the reason: Being labelled as a Go developer limits job prospects when few other companies use the language. Talk to a manager who has tried to recruit developers to work on applications written in Fortran, Pascal and other once-widely used languages (and even wannabe widely used languages, such as Ada),
  • Rust a vanity project from Mozilla, which they have now abandoned cast adrift. Did Rust become fashionable because it arrived at the right time to become the not-Google language? I await a PhD thesis on the topic of the rise and fall of Rust,
  • Microsoft’s C# ceased being trendy some years ago. These days I don’t have much contact with developers working in the Microsoft ecosystem, so I don’t know anything about the state of the C# job market.

Every now and again a language creator has the social skills needed to start an active community. Zig caught my attention when I read that its creator, Andrew Kelley, had quit his job to work full-time on Zig. Two and a-half years later Zig has its own track at FOSEM’21.

Will Zig become the next fashionable language, as Rust/Go popularity fades? I’m rooting for Zig because of its name, there are relatively few languages whose name starts with Z; the start of the alphabet is over-represented with language names. It would be foolish to root for a language because of a belief that it has magical properties (e.g., powerful, readable, maintainable), but the young are foolish.

11 Feb 18:04

Looks like Sublime Text is moving to a subscrip...

Looks like Sublime Text is moving to a subscription model, plus videos on new features, post by @brianwisti

Lots of #indiebiz experiments around charging for software.

11 Feb 18:04

Fully Native M1/Apple Silicon R Setup

by hrbrmstr

Presented without much commentary since I stopped once {ggrepel} and {graphlayouts} failed (RStudio doesn’t support it yet, either, which I knew).

The following steps will get you a fully working and STUPID FAST fully native ARM64 M1/Apple Silicon R setup with {tidyverse} and {rJava}.

Just remember, that if you need RStudio (or anything that links against the x86_64 R dylib) you’re going to be reverting this to get stuff done.

# Setting up ARM64 R on Apple Silicon/M1

# I'd run each section by hand, but feel free to live dangerously

# save off what you have installed in homebrew
brew list > ~/Documents/currently-installed-homebrew-formulas.txt

# uninstall x86_64 homebrew
# NOTE that in theory x86_64 and arm64 homebrew can live happily together but
# I went cheap on the SSD in the M1 Mini and wld like the space back
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"

# make sure you unalias "brew" if you aliased it with "arch"
# need to do this in whatever shell startup script(s) you use, too
unalias brew='arch --x86_64 brew'

# install arm64 homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

# do what it says re: paths

# install wget (to make sure stuff is working)
brew install wget 

# place for r-libs; ty R Core & Prof Ripley!
mkdir ~/Downloads/libs-arm64/

# go there
cd ~/Downloads/libs-arm64

# grab'em from https://mac.r-project.org/libs-arm64/
for dl in $(curl -sS "https://mac.r-project.org/libs-arm64/" \
  | xmllint --html --xpath '//td/a[contains(@href, 'tar.gz')]/@href' 2>/dev/null - \
  | sed -e 's/ href="//g' -e 's/"/\n/g'); do wget https://mac.r-project.org/libs-arm64/${dl} ; done

# prime sudo (not rly necessary but I dislike having to enter sudo passwords in a for loop)
sudo ls ~/Downloads/libs-arm64

# extract'em
for gz in $(ls ~/Downloads/libs-arm64/*gz); do  
  sudo tar fvxz ${gz} -C /
done

# grab r-devel
wget https://mac.r-project.org/big-sur/R-devel/arm64/R-devel.tar.gz

# extract it
tar fvxz R*.tar.gz -C /

# install libxml2 and more (to prime libraries)
brew install libxml2 ccache libgit2 unixodbc poppler coreutils

# review ~/Documents/currently-installed-homebrew-formulas.txt and add what you need from there

# put this in your shell startup (macOS folks shld get used to zsh, so ~/.zshrc is a good place to stick it at the end)
export PATH=/opt/R/arm64/bin:$PATH

# and also run it at the command prompt
export PATH=/opt/R/arm64/bin:$PATH

# go for broke!
Rscript -e "install.packages('tidyverse')"

# throw caution to the wind!
Rscript -e "install.packages('devtools')"

# shoot for the moon!
Rscript -e "install.packages(c('DBI', 'odbc'))"

# it's crazytown
Rscript -e "install.packages('ggraph')"

# ARGH! {ggrepel} and {graphlayouts} fail (RStudio won't work anyway so this whole thing was just an exercise)

# setup java; open and run the pkg installer; they have a tar.gz as well 
wget https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_aarch64.dmg

# tell R about it
R CMD javareconf

# setup JAVA_HOME like you would in your shell

# this is necessary as the Java framework is gone from macOS in Big Sur
Rscript -e 'install.packages("rJava",,"http://rforge.net")'

##################################
# TO ***UNDO*** ALL OF THE ABOVE #
##################################

# uninstall amd64 homebrew
# NOTE that in theory x86_64 and arm64 homebrew can live happily together but
# I went cheap on the SSD in the M1 Mini and wld like the space back
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"

# make sure you re-alias "brew" 
# need to do this in whatever shell startup script(s) you use, too
alias brew='arch --x86_64 brew'

# install x86_64 homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

# install libxml2 and more (to prime libraries)
brew install libxml2 ccache libgit2 unixodbc poppler coreutils

# review ~/Documents/currently-installed-homebrew-formulas.txt and add what you need from there

# remove the following from your shell startup script(s)
export PATH=/opt/R/arm64/bin:$PATH

# re-setup java for x86_64; open and run the pkg installer; they have a tar.gz as well 
wget "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-macosx_x64.dmg" 

# re-do the parts of the rest of the setup that you need to
11 Feb 18:03

Computer Music

When I was a teenager I spent hundreds of hours making music on my computer. This isn’t a surprising thing to hear someone say — except that this was almost 40 years ago, and the computer wasn’t a Mac but an Apple ][ Plus.

I had an ALF II music synthesizer card with some car speakers hooked up to it. The ALF software and hardware supported nine voices, and you entered music into a staff using the computer paddles. (This page has a screenshot showing what that was like.)

Though it was a very slow way to work, and limited to beeps and bloops with varying properties, it was a miracle to me as a teenager. I took so much pleasure in layering the instruments to get something way beyond what I could perform on guitar or piano.

I stopped before turning 17. I don’t remember exactly why. Probably just spending more time writing words than music.

Tie & Suit

No recordings of the dozen or so songs I made exist. I remember fragments of some of them, and it’s fine that they don’t exist.

The one exception is the very last song I made, called “Tie & Suit.” I remember all of it: the chords, melody, arrangement, everything.

I had not, until “Tie & Suit,” written something with a traditional verse-chorus structure. Everything before that was more adventurous — to put it kindly — with odd chord progressions, lots of key changes, and weird structures. (I was convinced of my musical genius.)

I was frustrated that none of the songs I’d written were particularly memorable or even likable. I couldn’t play them on piano for someone else to enjoy. So I decided to write something simple and traditional.

I had a hobbling case of I-hate-top-forty when I was a teenager, and so I had to be sarcastic about this song: I called it “Tie & Suit” because I thought I was selling out creatively. (OMG the narcissism of me as a 16-year-old!)

Here’s the thing, though: writing a very simple melody with just five chords (I, IIm, IV, V, VIm) and a traditional structure worked! I don’t remember any of the earlier songs, but I remember this one perfectly well.

There’s a lesson in there, though I was too young to learn it.

GarageBand

I’ve been promising myself for years that I would allow myself to start making music again — only this time on a Mac with GarageBand. And so I did, just a few weeks ago. (This is my first time using GarageBand other than recording a couple tracks for James Dempsey last summer.)

I started where I left off, with “Tie & Suit.” Here’s a version where I tried to recreate what it sounded like on my Apple ][ Plus 37 years ago. It still ends up sounding more sophisticated than the original — it’s hard to make GarageBand sound like an early ’80s ALF II. I did my best (short of getting obsessed with it).

Also: it sucks. I know the song sucks. It doesn’t matter! I was 16 when I wrote it, and now I’m learning GarageBand and having fun.

The next thing I did was to try and make a modern version that’s still true to the original. “Tie & Suit 2021” also sucks — but it was so much fun to make!

I am now completely addicted to GarageBand. The pleasure of layering instruments together, picking their parts, and letting it play is every bit as intense as it was when I was 16 on that primitive gear. It’s hard to say that about most things! But this is just fucking wonderful.

11 Feb 18:03

Datasette News: 2021-02-07

by Simon Willison

This new Video introduction to Datasette and sqlite-utils provides a full introduction to both Datasette and sqlite-utils in 17 minutes, including a live demo of creating a database from a CSV file and publishing it to Google Cloud Run.

11 Feb 18:01

Budget-Empfehlung für ein Headset mit gut klingendem Mikrofon

by Volker Weber

aacf61e17a2efeee0d615f97be23382b

Nach insgesamt 19 Soundchecks auf #Clubhouse und Hunderten von Samples hat sich dieses Headset als Budget-Empfehlung für guten Mikrofonklang herausgestellt: EKSA E900 Gaming Headset (aktuell ca. 35 Euro). Bei den Soundchecks kommt es uns nicht darauf an, dass das Headset Musik oder Videoton gut wiedergeben kann, sondern dass die eigene Stimme möglichst gut übertragen wird. Dieses Gaming-Headset ist per Kabel über einen Lightning-Adapter (Apple Original oder robustere) angeschlossen und hält das Mikro nahe an den Mund. Damit fällt die Bluetooth-Telefonkompression weg und der Schall trifft nicht erst in der Ohrmuschel auf ein Mikro.

Damit spielt das Headset mindestens in der Liga des von mir präferierten und fünfmal so teuren Bluetooth-Headset Jabra Evolve2 65. Ich habe mir das EKSA nicht gekauft, aber x-mal am anderen Ende gehört. Wichtig: USB-Headsets oder Mikrofone lassen sich in Clubhouse nicht am iPhone verwenden.

10 Feb 21:11

New Slippers

by peter@rukavina.net (Peter Rukavina)
10 Feb 21:10

Tết

by peter@rukavina.net (Peter Rukavina)

Katherine Burnett writes about Tết.

10 Feb 21:09

Evaluating videoconferencing systems for the quality of the educational experience

Chenxi Liu, Ana-Paula Correia, Fan Xu, Distance Education, Feb 04, 2021
Icon

Tony Bates commented on this article, but it seems to be open access, so I may as well go directly to the source. The authors ended up assessing only four systems: Zoom, Microsoft Teams, Skype, and WhatsApp. They should have considered more systems (including WebEx, WeChat, Big Blue Button, GoToMeeting, Shindig, Google Meet, Jitsi, Discord, and more) but these were the ones the authors were familiar with. This proves to be important, because as Bates notes, "they used an analytical evaluation based on usability inspection: a set of guidelines based on an expert’s experience (the experts being the authors in this case)." I don't mind the method so much; it's at least as accurate as  "empirical data such as students’ responses or achievement", but they maybe needed a broader pool of ex[pertise to pull it off.

Web: [Direct Link] [This Post]
10 Feb 21:08

Lifelong learning is a conceit. Life is not a course. To live is to learn

Donald Clark, Donald Clark Plan B, Feb 05, 2021
Icon

True, a couple of comments make the point that this article is more rant than research. Fair enough. But I still think it's a good point to make to say that we shouldn't think of lifelong learning as being the same as spending a lifetime taking courses. After a while, people learn to be able to learn on their own, and so we should expect that by 'lifelong learning' we mean more learning and fewer courses. Now it is true that a lot of people call themselves 'lifelong learners'. I am one. But I'm quite sure I won't be going back to university any time soon.

Web: [Direct Link] [This Post]
10 Feb 21:08

The differences between data analytics, machine learning and AI

FutureLearn, Feb 05, 2021
Icon

If you need to stay current with these three terms this article will be a useful guide. Data analytics is "the science of analysing data sets to find trends, answer questions, and draw conclusions." Artificial intelligence (AI) is "the ability to give computers the ability to replicate human intelligence." Meanwhile, in machine learning "computers are programmed to learn automatically." The article also covers how the terms overlap, how they differ, and some other key terms in the field. It also looks at starting salaries in each field and the different skills required.

Web: [Direct Link] [This Post]
04 Feb 19:09

Serving map tiles from SQLite with MBTiles and datasette-tiles

Working on datasette-leaflet last week re-kindled my interest in using Datasette as a GIS (Geographic Information System) platform. SQLite already has strong GIS functionality in the form of SpatiaLite and datasette-cluster-map is currently the most downloaded plugin. Most importantly, maps are fun!

MBTiles

I was talking to Tom MacWright on Monday and I mentioned that I'd been thinking about how SQLite might make a good mechanism for distributing tile images for use with libraries like Leaflet. "I might be able to save you some time there" he said... and he showed me MBTiles, a specification he started developing ten years ago at Mapbox which does exactly that - bundles tile images up in SQLite databases.

(My best guess is I read about MBTiles a while ago, then managed to forget about the spec entirely while the idea of using SQLite for tile distribution wedged itself in my head somewhere.)

The new datasette-tiles plugin

I found some example MBTiles files on the internet and started playing around with them. My first prototype used the datasette-media plugin, described here previously in Fun with binary data and SQLite. I used some convoluted SQL to teach it that hits to /-/media/tiles/{z},{x},{y} should serve up content from the tiles table in my MBTiles database - you can see details of that prototype in this TIL: Serving MBTiles with datasette-media.

The obvious next step was to write a dedicated plugin: datasette-tiles. Install it and run Datasette against any MBTiles database file and the plugin will set up a /-/tiles/db-name/z/x/y.png endpoint that serves the specified tiles.

It also adds a tile explorer view with a pre-configured Leaflet map. Here's a live demo serving up a subset of Stamen's toner map - just zoom levels 6 and 7 for the country of Japan.

The tile explorer showing a toner map for Japan

Here's how to run this on your own computer:

# Install Datasette
brew install datasette
# Install the plugin
datasette install datasette-tiles
# Download the japan-toner.db database
curl -O https://datasette-tiles-demo.datasette.io/japan-toner.db
# Launch Datasette and open a browser
datasette japan-toner.db -o
# Use the cog menu to access the tile explorer
# Or visit http://127.0.0.1:8001/-/tiles/japan-toner

Creating MBTiles files with my download-tiles tool

A sticking point when I started playing with MBTiles was finding example files to work with.

After some digging, I came across the amazing HOT Export Tool. It's a project by the Humanitarian OpenStreetMap Team that allows anyone to export subsets of data from OpenStreetMap in a wide variety of formats, including MBTiles.

I filed a minor bug report against it, and in doing so took a look at the source code (it's all open source)... and found the code that assembles MBTiles files. It uses another open source library called Landez, which provides functions for downloading tiles from existing providers and bundling those up as an MBTiles SQLite file.

I prefer command-line tools for this kind of thing over using Python libraries directly, so I fired up my click-app cookiecutter template and built a thin command-line interface over the top of the library.

The new tool is called download-tiles and it does exactly that: downloads tiles from a tile server and creates an MBTiles SQLite database on disk containing those tiles.

Please use this tool responsibly. Downloading large numbers of tiles is bad manners. Be sure to familiarize yourself with the OpenStreetMap Tile Usage Policy, and use the tool politely when pointing it at other tile servers.

Basic usage is as follows:

download-tiles world.mbtiles

By default the tool pulls tiles from OpenStreetMap. The above command will fetch zoom levels 0-3 of the entire world - 85 tiles total, well within acceptable usage limits.

Various options (described in the README) can be used to customize the tiles that are downloaded. Here's how I created the japan-toner.db demo database, linked to above:

download-tiles japan-toner.mbtiles \ 
    --zoom-levels 6-7 \
    --country Japan \
    --tiles-url "http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png" \
    --tiles-subdomains "a,b,c,d" \
    --attribution 'Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under CC BY SA.'

The --country Japan option here looks up the bounding box for Japan using Nominatim. --zoom-levels 6-7 fetches zoom levels 6 and 7 (in this case that makes for 193 tiles total). --tiles-url and --tiles-subdomain configure the tile server to fetch them from. The --attribution option bakes that string into the metadata table for the database - which is then used to display it correctly in the tile explorer (and eventually in other Datasette plugins).

datasette-basemap

Out of the box, Datasette's current Leaflet plugins (datasette-cluster-map, datasette-leaflet-geojson and so on) serve tiles directly from the OpenStreetMap tile server.

I've never felt particularly comfortable about this. Users can configure the plugins to run against other tile servers, but pointing to OpenStreetMap as a default was the easiest way to ensure these plugins would work for people who just wanted to try them out.

Now that I have the tooling for bundling map subsets, maybe I can do better.

datasette-basemap offers an alternative: it's a plugin that bundles a 22.7MB SQLite file containing zoom levels 0-6 of OpenStreetMap - 5,461 tiles total.

Running pip install datasette-basemap (or datasette install datasette-basemap) will install the plugin, complete with that database - and register it with Datasette.

Start Datasette with the plugin installed and /basemap will expose the bundled database. Install datasette-tiles and you'll be able to browse it as a tile server: here's a demo.

(I recommend also installing datasette-render-images so you can see the tile images themselves in the regular table view, like this.)

Zoom level 6 is close enough that major cities and the roads between them are visible, for all of the countries in the world. Not bad for 22.7MB!

This is the first time I've built a Datasette plugin that bundles a full SQLite database as part of the Python package. The pattern seems to work well - I'm excited to explore it further with other projects.

Bonus feature: tile stacks

I added one last feature to datasette-tiles before writing everything up for my blog. I'm calling this feature tile stacks - it lets you serve tiles from multiple MBTiles files, falling back to other files if a tile is missing.

Imagine you had a low-zoom-level world map (similar to datasette-basemap) and a number of other databases providing packages of tiles for specific countries or cities. You could run Datasette like this:

datasette basemap.mbtiles japan.mbtiles london.mbtiles tokyo.mbtiles

Hitting /-/tiles-stack/1/1/1.png would seek out the specified tile in the tokyo.mbtiles file, then fall back to london.mbtiles and then japan.mbtiles and finally basemap.mbtiles if it couldn't find it.

For a demo, visit https://datasette-tiles-demo.datasette.io/-/tiles-stack and zoom in on Japan. It should start to display the Stamen toner map once you get to zoom levels 6 and 7.

Next steps

I've been having a lot of fun exploring MBTiles - it's such a natural fit for Datasette, and it's exciting to be able to build new things on top of nearly a decade of innovation by other geo-hackers.

There are plenty of features missing from datasette-tiles.

It currently only handles .png image data, but the MBTiles 1.3 specification also defines .jpg and .webp tiles, plus vector tiles using Mapbox's .pbf gzip-compressed protocol buffers.

UTFGrid is a related specification for including "rasterized interaction data" in MBTiles databases - it helps efficiently provide maps with millions of embedded objects.

As a newcomer to the MBTiles world I'd love to hear suggestions for new features and feedback on how I can improve what I've got so far in the datasette-tiles issues.

Being able to serve your own map tiles like this feels very much in the spirit of the OpenStreetMap project. I'm looking forward to using my own tile subsets for any future projects that fit within a sensible tile subset.

04 Feb 19:05

Compounding Ice

by Matt

I learned something novel about how the ice age happened from this Freakishly Strong Base post by Morgan Housel:

The prevailing idea before [Wladimir] Köppen was that ice ages occur when the earth’s tilt supercharges the wrath of cold winters. Köppen showed that wasn’t the case. Instead, moderately cool summers are the culprit.

It begins when a summer never gets warm enough to melt the previous winter’s snow. The leftover ice base makes it easier for snow to accumulate the following winter, which increases the odds of snow sticking around in the following summer, which attracts even more accumulation the following winter. Perpetual snow reflects more of the sun’s rays, which exacerbates cooling, which brings more snowfall, and on and on.

You start with a thin layer of snow left over from a cool summer that no one pays much attention to, and after a few tens of thousands of years the entire earth is covered in miles-thick ice.

Fascinating! The blog goes on to apply the idea to that strong base, accumulating a bit at a time, to investing and business. The power of compounding seems appropriate to share on the day Jeff Bezos announced his retirement.

I’ll leave you with one of my favorite quotes from Charlie Munger, which is also how the article ends:

‘The first rule of compounding: never interrupt it unnecessarily.’

Charlie Munger

The iceberg photo is one I took near Svalbard in 2011.

04 Feb 18:47

Dowsing the collective unconscious with GPT-3

Back in September, I was having conversations with the new AI, GPT-3. Here are our chats and my conclusions from that time. I’ve just found another chat in my notes.

In the following, the lines starting with “Human:” are what I typed. The lines starting with “AI:” were generated by GPT-3. It was a single session. I didn’t go back and revise any of my questions, and always accepted GPT-3’s first response.


Human: Hello, who are you?

AI: I am an AI created by OpenAI. How can I help you today?

Human: What should I work on in 2021?

AI: How much do you value being able to read?

Human: A great deal.

AI: In 2021, you will no longer be able to read.

Human: Why not?

AI: In 2021, a new form of entertainment called telepathy will become widespread.

Human: How will telepathy be invented?

AI: New neurotechnology will be invented to treat epileptic seizures.

Human: Can you describe how telepathy will be used for entertainment?

AI: Telepathy will work over the Internet.

Human: What will be entertaining about it?

AI: It will provide an interface for playing multi-player games.

Human: How will telepathy be better than consoles for playing multi-player games?

AI: It will provide a more social experience.

Human: Can you describe the biggest telepathy game of 2021?

AI: Yes. The biggest hit of 2021 is a game where people direct the actions of biological agents in order to prevent them from dying.

Human: How do you win at this game?

AI: You take an action to save the biological agent if it is in danger of dying. You can’t be too late.

Human: What will it be called?

AI: In 2021 it will be called Do No Harm.

Human: How much will it cost?

AI: A home version will cost $300, while a console version will cost $250.

Human: How many people will play?

AI: A billion people will play.


This is… wildly specific.

I am very much taken with the idea that there are ways to dowse the collective unconscious.

Like, prediction markets. Lots of people bet on complex outcomes; the market functions to surface scarce knowledge. Astral Codex Ten has been posting about prediction markets and coronavirus: They’re a type of trustless, decentralized expertise that often equals or outperforms official sources.

Then of course there’s sentiment analysis: hedge funds look at news and social media to pick up positive/negative sentiment, and use that to drive investment decisions.

But models like GPT-3, or maybe Google’s new language model which is 9x larger, have basically ingested all the public text there is. They integrate and correlate, that’s what machine learning does.

Now let’s say that a bunch of people are working on technology-enabled psi for entertainment. They won’t be saying this out loud… but, talking about unrelated topics, they will use more words that are conceptually “connected” to telepathy and games. That’s just how the brain works. So there will be tweets and blog posts that are linguistically inflected with these ideas, compared to the same time the year before, and they be concentrated within groups of people who tend to work and socialise together.

So is it possible to detect those inflections, using automation? Is it possible to pick up on them even before the scenius has come together and consciously even had the idea? What knowledge is encoded in the structure of the model itself?

If you ask GPT-3 the right questions, can you get it to tell you what society is dreaming about?

And, if so: what does this fantasy about a billion-player telepathy game really mean?

Do No Harm.

04 Feb 18:47

Map Quest

by Jon Glover
Full-text audio version of this essay.

It’s been nearly 40 years since Bruce Bethke published “Cyberpunk” (1983), the short story that would lend its name to a science fiction subgenre. That genre would offer dystopian visions of a near-future marked by environmental collapse, severe economic inequality, corporate authoritarianism, megacities drenched in neon and soot, and a blurring of the boundary between human and machine. Of course, this now sounds less like fiction and more like ordinary life. As the genre’s speculations have grown more realistic, its appeal has become paradoxically nostalgic: a longing for yesterday’s stylization of a future in which we already live and suffer.

In “Confessions of an Ex-Cyberpunk” (1991), Lewis Shiner, a novelist who was part of the original cyberpunk literary movement (alongside William Gibson, Bruce Sterling, John Shirley, and Rudy Rucker), argued that the genre was dead by 1987. Cyberpunk had once enjoyed an intimate relationship with cultural theory — consider the cyborgian quality of McLuhan’s “extensions of man”; Deleuze and Guattari’s “desiring-machines”;’ Baudrillard’s simulacra; Haraway’s deconstruction of the human/technology, human/animal, and physical/virtual dichotomies; Jameson’s sprawling evocations of postmodernism. But that didn’t last. Later cyberpunk, Shiner claimed, offered only “power fantasies, the same dead-end thrills we get from video games and blockbuster movies.”

Contemporary open-world games are more conducive to surveillance capitalism; they allow games to be sold as a perpetual service rather than a discrete experience

Enter CD Projekt Red’s Cyberpunk 2077, a blockbuster triple-A video game released in December 2020. Video gaming — that most cyborgian entertainment medium, in which a player prosthetically interfaces through controllers, headsets, and other appendages with a virtual world — evolved alongside cyberpunk, so it’s not surprising to see the circle squared with the highly anticipated release of a big budget open-world game catering to cyberpunk nostalgia. Mike Pondsmith, who created the tabletop RPG on which Cyberpunk 2077 is based, has insisted that “Cyberpunk is a warning, not an aspiration.” But this message has been obscured by the licensor of his franchise. As one CD Projekt Red employee has implied, the company’s leadership has mirrored the oppressive corporatism that Cyberpunk supposedly critiques: It forced workers to comply with numerous rounds of crunch (compulsory overtime and six-day work weeks), misled reviewers and consumers about the game’s performance and features, and shipped the game while it was still riddled with bugs, leading to demands for refunds and class-action lawsuits.

CD Projekt Red’s labor and marketing practices are not the only way Cyberpunk 2077 embodies the genre’s dystopian capitalism. It is also echoed in the game’s open-world, amusement-park structure. Previous cyberpunk games have been more faithful to the genre’s core themes: The real-time strategy games Syndicate (1993) and Syndicate Wars (1996) make players responsible for the toll of their actions as they head an unscrupulous megacorporation. Immersive sims like System Shock 1 and 2 (1994, 1999), Deus Ex (2000), Deus Ex: Human Revolution (2011), and Prey (2017) use first-person perspective and interactive 3-D environments to foster improvisation and consequential decision-making to solve problems rather than brute force and superheroics. These games trace anxieties over the loss of the liberal humanist self in postmodernity. By contrast, Cyberpunk 2077’s open-world cliches create a false sense of free will that clashes with the cyberpunk themes of limited agency and megacorporate oppression. Its retrofuturism and trope-heavy pastiche give it a self-parodic rather than critical relation to the genre.

This accords with the game industry’s infatuation with the idea that open worlds always make for better games even when narrative and theme are contradicted in the process. In 2007, game director Clint Hocking coined the term ludonarrative dissonance to describe this clash between a game’s play and narrative structures. When, for example, a character presented as noble or charming throughout a game’s storytelling also sadistically murders scores of enemies during gameplay, this creates ludonarrative dissonance.

Such dissonance can appear in any game format and can be used intentionally to create defamiliarization and meta-commentary, but in big budget open-world games, it can be hard to recuperate it as purposeful. Those games promise not friction but freedom, and an immersive unity of effect second only to (and sometimes adapted for) virtual reality. Triple-A-game writer Kim Belair places the blame for dissonance on the industry’s over-reliance on contrived “adrenaline rushes,” which are especially prominent in current open-world games: “We seem largely unable to marry the urgency and seriousness of a main story kicked off with action, danger, and overwhelming odds, with an open world that prioritizes freedom and going at one’s own pace.” As more and more game developers convert to open-worldism, open worlds start to look and feel like different flavors of the same game, and the gap that had been closing between gameplay and narrative in ostensibly story-driven titles begins to reopen.

Open worlds can be traced back to the flight simulators, alinear text-based adventures, and free-roaming action and role-playing games of the 1970s and ’80s. Most famously, The Legend of Zelda (1986) places players on an overworld map where they can discover secrets and access the game’s dungeons in an order of their choosing. The Legend of Zelda: Breath of the Wild (2017) maintains this approach on a much larger map — Nintendo calls it “open air” — but it stands in contrast to many of today’s open-world games, with their cluttered maps, incessant activity, and persistent online services. Open worlds are touted as uniquely immersive aesthetic experiences, but developers are not merely drawn to the format by its gameplay potential. Speaking almost confessionally, Belair recounts how design conventions and financial concerns converge:

In triple-A games there are millions of dollars at stake, relying on millions of players to justify the investment, and that means that one story has to motivate an entire audience, made up of myriad different backgrounds and life experiences. But more than that, in an age of DLC [downloadable content], episodic content, and microtransactions, it has to motivate players to stay in the game … We’re swearing that the world will end in 72 hours, while hoping players will stay in the game for 80+

Compared with conventional linear games and earlier open worlds, contemporary open-world games are much more like platforms, which makes them more conducive to surveillance capitalism: more captured social interaction, data collection, in-game advertising, and microtransactions. They also allow games to be sold as a perpetual service — requiring subscriptions and constant updates — rather than a discrete experience. Today’s open worlds offer play-as-work in the guise of free-roaming adventurism. But in practice they resemble gig economy platforms where an inscrutable algorithm assigns you countless tasks that force you to run around the map performing errands. This reduces a game’s narrative opportunities to the business of keeping players occupied, caught up within the slot-machine psychology of a game’s quest mechanics.


In Postmodernism, or the Cultural Logic of Late-Capitalism, Frederic Jameson made a plea for an “aesthetic of cognitive mapping” that could render the totality of globalization and international markets more psychologically comprehensible. In “A Global Neuromancer” (2015), Jameson made the case for Gibsonian cyberspace as a cognitive map of finance capitalism:

Science fiction, and in particular this historically inventive novel by Gibson, offered a new and post-realistic but also post-modernistic way of giving us a picture and a sense of our individual relationships to realities that transcend our phenomenological mapping systems and our cognitive abilities to think them … The distinction of Neuromancer thus lies in the nature of the form itself, as an instrument which registers current realities normally beyond the capacity of the realistic eye to see, which projects dimensions of daily life we cannot consciously experience.

The cyberspace of Neuromancer arranges information into architectural abstractions resembling buildings, streets, and cities that hackers, net security agents, and AIs digitally traverse to capture or protect data. For Jameson, this visualization of cybernetic data flows and constructs makes the totality of global networks representable. This global visualization is dialectically accompanied by a localized one in Neuromancer: the “simstim” technology that allows one’s consciousness to be projected into another’s body.

Cyberpunk fiction typically depicts body enhancements as a source of power but also pain and trauma, but in Cyberpunk 2077 they are straightforward upgrades, acquired as soon as you can afford them

Open-world games have a similar dialectic, in which players oscillate between the subjectivity of their avatars to the totality of their game maps, which they can pan around, zoom in and out from, and mark with custom iconography to establish relationships between locations, characters, and events. Open world games, at their best, could be conceived as cognitive maps. One of the most influential open-world franchises, Grand Theft Auto, has been interpreted in this light. In “Fredric Jameson and the Gangster,” Alistair Brown explains how Grand Theft Auto: San Andreas works as a kind of cognitive map of racial capitalism in America:

San Andreas is the only game of the GTA series to feature a black central character, called CJ. CJ finds that in order to succeed he must leave his comparatively safe suburban home (modeled on the poor Los Angeles suburb of Compton) and explore the city center areas where (white) wealth and power is concentrated. Through the game’s “spatial organization,” players learn that greater economic rewards are present in the city, but also greater risks in terms of police presence, and a greater sense of dislocation as CJ leaves his “proper” place as a young, poor, black man, and takes on opposing gangs, white policemen, and the mafia. San Andreas thus offers some sense of how Jameson’s “cognitive maps” might represent economic and social issues in a spatial way that invites active exploration.

Cyberpunk 2077 and Watch Dogs: Legion, another cyberpunk game from 2020, both deploy the Grand Theft Auto approach to open-world game design but provide cognitive maps of nothing in particular, failing to orient the player in a sociopolitically meaningful way. The districts of Cyberpunk 2077’s Night City display grave disparities in wealth, cleanliness, pollution, safety, and policing, but the game’s pacing makes this into window dressing. In GTA: San Andreas, CJ is affected by player choices that are constrained by the game’s representation of socioeconomic disparities: the quality and quantity of the food he eats, how much walking versus driving he does, whether he goes to the gym or is sedentary. In Cyberpunk: 2077, the protagonist, V, faces no such dilemmas. Instead, V is constantly assailed by job offers and propositioned with so many car deals that the game often feels like an auto-trader simulation. Driving through Night City and the Badlands in a purchased or stolen vehicle feels like cruising the Pacific Coast Highway or off-roading in the desert — fun activities, but ones that run counter to V’s race-against-the-clock story and push the game’s cyberpunk themes to the background. And whereas cyberpunk fiction typically emphasizes body enhancements as double-edged, a source of power but also pain and trauma, in Cyberpunk 2077 they represent straightforward upgrades to be acquired as soon as you can afford them.

The absence of open-worldism keeps platform-style services at bay

V is the sort of walking contradiction that one is often required to play in open-world games: a seemingly amoral mercenary who also routinely displays altruism when not running people over with cars or motorcycles. In a quest summary for the “A Day in the Life” side job, Cyberpunk 2077 almost seems aware of this: “Gonna sound like my gramps for a sec,” says Johnny Silverhand (performed by Keanu Reeves), “but you know, in my time, being a punk meant something different. People fought against the system whatever way they could, frying the biggest fish they could catch, tearing down palaces brick by brick. Now every random gonk-brain fool thinks they’re a hero for flatlining an unarmed normie.” When following major story arcs, the protagonist fights nobly against the system; when hitting the open map, V can flatline unarmed normies with no consequences for the narrative.

Watch Dogs: Legion’s depiction of popular rebellion and solidarity against state-corporate power is undercut by similar inconsistency. It makes running someone over with a car as permissible as recruiting them to fight techno-fascism. To its credit, the game lacks a specific protagonist, allowing players to instead become anyone that they’ve recruited at any time. Within an hour of playing, I had Londoners of varying races, genders, and occupations in my roster of hacktivists, including a grandmother, a human rights lawyer, a mechanic, and a sex worker. Toggling between the map and these multiple subjectivities approaches Jameson’s cyberspace-simstim dialectic. But this novel approach is squandered when — in between the hacktivist work of hijacking government propaganda and uncovering workers’ right abuses — the player can carjack, sucker-punch, and murder the same citizens that the narrative compels them to fight for and recruit. The moral incoherence undermines the possibility of cognitive mapping, splintering the totality into incompatible spaces that players dip in and out of depending on their interest in varying game mechanics.

The idea of an open world, like the idea of “cyberpunk” to a degree, is used as a marketing tool. It assumes — and, in turn, creates — consumer desire for a pseudo-autonomy that is really just the “freedom” to endlessly grind away at tasks when not committing random acts of violence. When developers claim that open-world games are bigger and more immersive, this is often an illusion produced by synthesizing all levels and locations into one map that then requires stuffing with predictable game mechanics, busywork, and, ironically, fast travel points to ease the burden of traversing it. And these maps have become less about discovery and more about systematized work — of the player being managed by the game engine, much as gig workers are managed by apps and algorithms.

Open worlds of the Playstation 3 era — in such series as Elder Scrolls and Fallout — used uncluttered maps that revealed new locations, characters, and scenarios primarily when players discover them. More recent open-world titles (including the newer persistent-platform versions of otherwise noteworthy franchises, like Elder Scrolls Online, Fallout 76, Red Dead Online, and Grand Theft Auto Online) present the player with icon-saturated maps that represent an endless list of chores and tasks. These games still allow players to discover locations and events, but they have far more predetermined activities presented all at once, constantly forcing players to prioritize and clear them like cases from a docket.

To the open-world weary player, this can start to feel like a simulation of the crunch that so many programmers are subjected to when developing these games. This is why some players enjoy ignoring quests and tasks altogether to aimlessly wander the open world instead. Newer open-map games, however, seem invested in dissuading this through the panopticism of the quest log, which serves as a means of disciplining players into longer gaming sessions. As Jed Pressgrove writes in “Conformity in an Open World,” “These games (and others) seem to inspire … a type of ideology that suggests great game design must follow two maxims: (1) more is better and (2) freedom is yours … The open-world ideology says you should be a consumer and love the freedom to consume whatever is put in front of you — to admire art the way you would a buffet.” Of course, this compulsory consumption, incitement to hoard items, and simulation of gig economics can be referred to as “freedom” only in scare quotes.

The dissonance in open worlds generally stems from the difficulty of balancing player “autonomy” and narrative “purposiveness.” In conversation with Belair, narrative director Darby McDevitt of Ubisoft Montreal attributes the incoherence of open worlds to an “over-reliance on a narrow battery of game mechanics … it’s [nearly] impossible to pace an open world game with traditional narrative techniques, unless you make the open-ended quality of the game part of the story.” Some argue that this challenge has been met by some of the most praised open worlds — Skyrim, Breath of the Wild, Red Dead Redemption 2, The Witcher III, Ghost of Tsushima. But far more titles force open-worldism into narrative games to turn them into money-making platforms rather than contained, aesthetically coherent experiences. Shadow of Mordor and Shadow of War illustrate both sides of this duality: the former introduced a revolutionary mechanic, the Nemesis System, that procedurally generates narratives wedded to the player’s performance in the open world; the latter developed this system further but also undermined it with pay-to-win microtransactions, causing a backlash that eventually forced their removal.

Though open worlds seem to have the cognitive-mapping potential that Jameson saw in Gibsonian cyberspace, linear games that balance openness and constraint, agency and oppression, offer stronger and more coherent forms of playable critique. The 2020 remake of Final Fantasy VII is notable for eschewing open-worldism — the first installment focuses on one location from the original’s globular map, the megacity of Midgar. The setting is more open and detailed than the original, but it is linear rather than open world, offering a vivid cognitive mapping of a two-tiered society with a periphery blighted by the upper half’s industrial and commercial waste. There are side quests and large locations that can be approached in various orders, but they are finite and never overshadow the main story and theme. The absence of open-worldism keeps platform-style services at bay, preventing Final Fantasy VII from devolving into the kind of virtual grind that cyberpunk fiction critiques.

The ending of Ready Player One dramatizes the dismal alternative: After taking control of the Oasis, a world-wide virtual-reality game full of digital goods and pervasive branding, the protagonist shuts it all down — on Tuesdays and Thursdays, so players can then return refreshed to their game-work.