inessential by Brent Simmons

May 2018

Rumor: Running iOS Apps on Macs

I’ve heard more than once that at WWDC we’ll learn about how we can run iOS apps on Macs.

I’m worried, of course, that this will lead to the further degradation of the Mac UI, and even less incentive for developers to write Mac apps.

I’m agin’ it. But, also, I don’t know if it’s true and I don’t know any details — so maybe it would be awesome? We’ll see.

Or not see. Could be totally made up. Could just be speculation run wild.

PS “Agin’” is short for “against,” not “aging.” Okay?

Delta Blues

Lately I’ve been trying to learn to play delta blues. I’m not ever going to play like Robert Johnson — nobody ever will — but I’d like to learn it as well as I can. Well enough so that, if you like the blues, and you heard me at a coffee shop, you’d enjoy it.

(Not that I’m going to start playing at coffee shops.)

I’ve been playing guitar for 38 years, and I’ve known the 12-bar blues progression and the blues scale for almost as long. But I always figured that learning to play like this would be way beyond my abilities.

* * *

The first thing to notice is that, in the hands of someone like Robert Johnson, it sounds like two guitars playing.

Roughly speaking: the thumb is doing a regular shuffle beat, often with two strings, while the other fingers are doing fills and melodies. At the same damn time.

I’m a life-long strummer and power-chord player. Flat pick. Rhythm guitarist. I’ve never had to develop this kind of coordination. It’s difficult.

The second thing to notice is that every single pitch your guitar can make is on the table. Sure, there’s a progression and a scale — but players regularly use notes outside the standard blues scale, and they hit pitches, by bending strings, that are between the notes.

And throw a slide in — which I’m learning to do — and it’s just nuts.

This music is incredibly complicated compared to the pop rock I’ve always played.

* * *

But I am learning it. Slowly. It’s going to take a few years before it sounds effortless. Right now I sound like a person trying really hard.

The thing is this, though, and this has wider application: for some reason, when I was a teenager, I told myself that I didn’t have the talent to play anything more complex than basic rhythm guitar.

I learned the cowboy chords, barre chords, power chords, notes in first position — and convinced myself I didn’t have the ability to learn fingerpicking or delta blues or anything that would make me a musician as opposed to just someone with a relaxing hobby.

I honestly don’t know why I thought that! I mean, I learned all this stuff, and figured I couldn’t keep learning at some point?

But here I am, now, learning it. It’s hard, but I’m learning.

* * *

Maybe I was confused by the word “talent.” I didn’t think I had that thing — where is it? I can’t see it — and I figured that, without it, I had hit my wall.

But… I’ve always been good at rhythm. It comes so easy that I thought everybody had that ability. And then I’ve seen other guitarists struggle at rhythm bits that take me no time to learn.

I’m also very good at remembering songs. It’s like I have a karaoke machine in my head. This comes with little effort at all — once I learn a song (sometimes just by hearing it) then, usually, I know it forever.

At least the chords. At least enough to be able to play it by the campfire. (Or at a piano, because that’s a thing I do too. Though I play piano like a rhythm guitarist. :)

Maybe these are some small musical talents that I actually do have?

But: hearing pitches and intervals and understanding melody is much harder for me, and that’s just come with a ton of practice. Mostly by listening, trying to recreate what I hear, and trying to figure out why it works.

* * *

I think I’m making a point about impostor syndrome. I told myself I couldn’t learn to play guitar at a deeper level — at the level of real musicians — and here I am at age 50 wondering why I told myself that, because here I am doing it.

Why did I wait so long?

And, sure, maybe I do have some small amount of musical talent, but whatever. If I hadn’t, I probably wouldn’t have been interested at all.

So maybe it’s a good bet that if you’re interesting in a thing, you may already have some talent for it. And maybe, just maybe, interest and talent are really synonyms, or close to it.

* * *

PS I started playing with a thumbpick to get that bass shuffle sounding good.

The Developers Union

Some of the press coverage about The Developers Union uses words like “angry” and “fed up.” These aren’t accurate characterizations at all. Nobody’s mad here!

But here‘s the deal: Apple controls the App Store and its economics. The system could be set up better to support high-quality apps, by indies, that last for years.

Apple doesn’t have to, of course. But we can ask! It’s totally okay to ask, so we are.

We think that an important first step would be a standardized, App-Store-supported way of offering free trials. (And where, once purchased, Family Sharing works.)

Trial versions have worked great for years for indie Mac developers, before the App Store, and we think it would benefit indies on the iOS and Mac App Stores.

And the platform would get better — and more sustainable — apps. Everyone wins!

If you agree, you can sign up. Add your name. Add your app.

I realize you might be worried about doing a thing that could upset powerful people inside Apple. I strongly doubt that that worry is actually well-founded — but, then again, that’s part of why this is a big list.

* * *

I should note that I’m not doing this as part of Omni. I’m not even doing it for my side projects — they’re all free, and it’s quite possible that none of them will ever appear on any App Store at all.

Instead, I’m thinking of my friends, of developers I admire, of up-and-coming developers I haven’t even heard of yet. I — quite selfishly! — want them to thrive. I want to see what great stuff they could make. I want everybody to have the opportunity I’ve had.

I’ve been lucky, and I’ve done well — and my experience should not be rare.

Making Apps Is Harder Than It Needs To Be

With the recent talk about Electron and “Marzipan” — or maybe Amber or something, according to Mark Gurman — I’m reminded of a thing I think about kind of often: that making iOS and macOS apps is way harder than it needs to be.

For most apps (except games, I suppose), a huge percentage of the code might as well be written in a scripting language. We absolutely do not need to be writing everything in Swift, Objective-C, C++, or C.

“But Brent,” you say, “what about performance?”

Consider the case where you set up an animation and then run the animation. The system does that animation. Or consider Core Data — your choice of language doesn’t affect how fast it can read from SQLite. Or think of networking — it’s bound by the connection, not the speed of your code. Or think of pushing a view controller onto the current navigation view controller. Or setting up view constraints. And so on.

All this code might as well be Ruby — or, preferably, a scripting language designed for app making. (I would have liked an Objective-C-without-the-C.)

And the thing that would make it all so worthwhile is editing the code while the app is running. You could go all day without an explicit build step!

Sure, some of your code would still have to be written in Swift or whatever. The part that really does have to be fast. I’m a performance junkie myself, so I get this. (Evergreen’s RSS parser is fast, and I wouldn’t switch it to a scripting language.)

But most of most apps (again, probably besides games, about which I know nothing) could be written using a scripting language.

PS Yes, I’m quite aware that we used to have Fix & Continue. And WebScript.

Godot.framework

I wouldn’t wait for “Marzipan” or XKit or whatever it is.

We don’t know what it is. But my guess — based on my 38 years of writing code for Apple computers — is that it’s something you can use along with UIKit and AppKit, and not a wholesale replacement.

Maybe it’s a declarative API that helps make some things easier, and maybe you can make a cross-platform button more easily. Maybe your table view code could be the same on iOS and macOS. Great!

But don’t expect Macs to turn into large iPads all of a sudden. Macs are gonna Mac. Apps are going to have multiple resizable windows and a menubar. Targets will still be sized and designed for mice and trackpads.

In other words, if you want to write a Mac app, you’re still going to have to deal with the things that are inherently different about Mac apps, regardless of the specific API.

Let’s say this thing ships in the fall of 2019, over a year from now. If past is a guide, we might imagine it would be fun to play with, but not more useful than, say, the original version of Swift. (Swift didn’t get really good for writing apps until Swift 3.)

So it might be 2020 before it’s something that accelerates Mac development in any real way.

You could write a few Mac apps between now and then.

* * *

I realize that documentation on writing Mac apps is hard to find these days. Books on the subject are rare, and any book you find may be out of date.

But…

One of the reasons I made Evergreen open source is so that people who want to write a Mac app have some examples.

And I just learned that there’s a big list of open source Mac apps. This is way more than than was available when I started writing apps for OS X.

I don’t have time to write a book on Mac app development. I wish I did. I might make the time to do a small article now and then, using Evergreen as example. Maybe.

But it’s not my job (as I have to keep reminding myself). It’s Apple’s job to document and evangelize the Mac platform.

(As an additional part of that, I’d like to see Apple update the Mac App Store, and maybe also deal with some of the issues with sandboxing. It would signal that the company cares about Mac apps. I know it does care, but a more public demonstration would be welcome.)