The Shape of Everything
A website mostly about Mac stuff, written by Gus Mueller
» Acorn
» Retrobatch
» Twitter
» Micro.blog
» Mastodon
» Instagram
» Github
» Maybe Pizza?
» Archives
» Feed
» Micro feed
October 7, 2019

Brent Simmons: Xcoders 15th Anniversary

We’d be thrilled if you could come to the meeting. Your Xcoders podcasters will be talking to a panel of old-timers about the history of the group. And afterward we’ll go to the Cyclops and hang out — just like we always do.

I don’t think I need to remind anyone of the important of community. It gives back to us so much more than we as individuals could ever put into it.

The New York Times on Blues Guitarist Robert Johnson

"And yet, in the late 20th century, the advent of rock ’n’ roll would turn Johnson into a figure of legend. Decades after his death, he became one of the most famous guitarists who had ever lived, hailed as a lost prophet who, the dubious story goes, sold his soul to the devil and epitomized Mississippi Delta blues in the bargain."

I discovered Robert Johnson in college while learning the guitar and playing blues with friends. Johnson's recording were simple and raw, but full of … something.

Johnson only ever had 41 recordings of almost 30 different songs, but his influence on blues guitar has been immeasurable.

September 23, 2019

Behind the Dark Room is a video by Jeremy Mann detailing what goes into his photo making. And it's amazing, and possibly one of the best things I've ever seen. (Warning- there's a little bit of artistic nudity in it if you think that might offend folks around you).

It's a 20 minute video, but it'll fly by because it sucks you in. It almost had me in tears at one point, because he's doing what I strive to do- the deep dive, the rabbit hole, the work it takes to get to an understanding and building of the new foundation for your work.

Just watch it.

For the past couple of years Jeremy Mann is who I've been going to for inspiration. His paintings, his photos- they just speak to me in ways I can't describe in words. His mark making is one of a kind, and his approach and philosophy to everything is just so refreshing and inspirational.

Mann was on a the Suggested Donation podcast a few years ago. I've listened to it at least four times now, and it gets better every time.

There's also a mailing list you can join, where Mann sends out thoughts and photos every couple of weeks. And I love each and every one of them.

September 20, 2019

Hillel Wayne: Performance Matters

"It wasn’t even that slow. Something like a quarter-second lag when you opened a dropdown or clicked a button. But it made things so unpleasant that nobody wanted to touch it. Paper was slow and annoying and easy to screw up, but at least it wasn’t that."

James Somers: Speed matters: Why working quickly is more important than it seems

"The obvious benefit to working quickly is that you’ll finish more stuff per unit time. But there’s more to it than that. If you work quickly, the cost of doing something new will seem lower in your mind. So you’ll be inclined to do more."

I used to work really fast, but these days not so much. I wish I did though. It's liberating to just throw stuff out there and move around and iterate quickly.

I think the reason I don't work fast anymore is because the code I write and any other actions I take for work cause ripples that effect a whole lot more people now than they did 10 years ago. I have to be conscious of this (at least I assume I do, or should be). But at the same time, it bugs me that I can't just stream ideas out there and iterate without people instantly becoming dependent on these ideas, which might not be fully baked. If I change the behavior of a filter in Acorn is that going to screw someone up? What about a node in Retrobatch which is surely being used in some sort of production environment?

And then I have ideas for apps. Tons of ideas, but which I don't have time or the will to setup a proper website or introduction, and certainly not support. Just fun things that I want to quickly get up and out there. I used to do this all the time!

Maybe I need a skunkworks branch of Flying Meat.

September 16, 2019

A new climbing gym, Vertical World North, just opened up about a month ago near us. It's big, it's spacious, and it's not usually very crowded. I think it's a beautiful gym, so here are some quick pictures of it:

Madeline climbing.

VWN tower and walls.

Main lead wall.

VWN tower.

Holds.

More lead walls.

Dan Erickson also has some great pictures from the construction of it: Behind the Walls - Vertical World North. It's amazing just how much steel and structure goes behind those walls.

So this gym has been in the works for about four years now. Maybe five depending on when you start counting. The climbing community has been waiting a long time for it, but I think it's been worth the wait. It's been great reconnecting with old friends, and making new ones as well (climbers are pretty easy going folks).

It's not fully open yet (there are limited hours during the day, and the second floor bouldering area is yet to be completed), but there's a bunch of top ropes and lead routes for climbers of every skill level. And of course classes have started as well. I find myself there more often than I should be, but climbing's fun- so why not?

If you're in the area, or don't mind a little drive up from Seattle, I highly recommend checking it out if you're curious about climbing or just want to try out a new gym.

September 11, 2019

If you're a programmer that loves cameras or image processing, and working for Apple sounds like a good move- @ivanski wants you to know they're hiring. There are multiple open positions on the Camera Framework and Core Image teams down in Cupertino.

Unsurprisingly, I've had many interactions with the people on Apple's Core Image team over the years from my work on Acorn, and they've always been super great to work with. I think it'd be a great team to join if GPU programming, image processing, and pushing pixels around is something you enjoy.

September 9, 2019

Daniel Jalkut: App Movement Monitoring:

"Essentially, when a Mac app is launched, the location of that app on disk is saved, and used repeatedly whenever an internal component needs to located. The dynamic nature of resource loading in Mac apps means that these components are not typically loaded until they are need. For example, if you never show the Preferences window in a typical Mac app, the resources that define that window will never be loaded.

"If, on the other hand, you decide to show the Preferences window, but you’ve moved the app since it was launched, things have a tendency to go haywire."

Daniel wrote this post after figuring out a crasher in NetNewsWire 5. And the solution he came up with is contained in a single source file you can embed in your Mac app, RSAppMovementMonitor. It's a good solution and I'll have to integrate it into Acorn and Retrobatch for their next updates.

But shouldn't the Finder prohibit moving an app while running in the first pace? I think so, and so does Paul Kafasis as he writes at Rogue Amoeba: The Finder Really Should Prevent Moving Running Applications.

Daniel also talks about his solution on episode 382 of the Core Intuition podcast.

September 5, 2019

Craig Hockenberry: iCloud Clusterfuck:

"Anyone who’s not a developer, and hasn’t been burned by a bad OS, does not know the kind of trouble that lies ahead. It’s irresponsible for Apple to release a public beta with known issues in iCloud. It’s doubly egregious to then promote that release with an email campaign to customers. For a company that prides itself in presenting a unified front, it sure looks like the left hand doesn’t know what the right hand is doing."

I've been doing this long enough to remember when the .Mac APIs were built against an SDK. I understand why Apple ties iCloud API updates to OS releases, but I really wish they wouldn't. Apple's coders are smart enough to make things backwards compatible, and being able to deploy new iCloud APIs to last year's OS release would be a nice win for everyone.

And more importantly, a separate SDK that isn't tied to this year's beta OS means less instability for developers testing the new OS update. At this point in the beta cycle, I would usually be running 10.15 full time. I've barely tested it this year, precisely because of the iCloud issues people were encountering. When a new build comes out I boot into it, test my apps, and then go back to 10.14 for work.

This isn't good for Apple, and I know I'm not the only developer taking this approach for this OS cycle.

September 3, 2019

Bug Bytes: Gus Mueller:

In his 23 years coding for the Mac, Gus Mueller, creator of the popular image editor Acorn, has had ample opportunity to make errors. Here, he talks about his most memorable one, which goes back to VoodooPad, an advanced journaling app Mueller released in 2003.

This was a fun little writeup about what was probably my worst bug ever. Or at least, the one that gave me a giant panic attack when it happened. I can still remember the dread when composing an email to the customer explaining that the data was gone. I felt awful. But then there was the surprise happy ending and I felt like I had dodged a bullet.

The link above will give a little preview to the story, but to read the whole thing, you'll need to follow the link to the Mac App Store.

August 26, 2019

NetNewsWire 5.0 Now Available:

"In case you haven’t been following along until just now: NetNewsWire is an open source RSS reader for Mac. It’s free! You can just download it and use it. No strings.

It’s designed to be stable, fast, and free of bugs. It doesn’t have a lot of features yet, and that’s because we prioritized quality over features. We will be adding more features, of course, but not quickly. We’re also working on an iOS app."

A big congrats to Brent Simmons and everyone else who worked on NetNewsWire 5.0. I've been using NetNewsWire since version 1.0- which was released way back in 2003! I'm super happy to see development started back up on it and I know it has many more great years ahead of it.

July 25, 2019

I go climbing at a local gym at least a couple of times a week if I'm not climbing outside (which sadly, is pretty rare these days). There's always new faces in there, and of course regulars who show up every week on the same nights as myself.

I tend to keep my eye on folks I don't recognize or who look new to climbing, just to evaluate how they are belaying their climber. A "belayer" is the person in charge of holding the end of the rope with a belay device, which keeps the climber at the opposite end of the rope from hitting the ground should they fall. A belayer also lowers the climber when they are ready to come down.

I keep an eye out because over the years I've seen a couple of people dropped from bad belaying techniques, and I knew before the drop happened that something was up. And both times I've regretted not saying anything prior to the fall (even though nobody was seriously hurt in these instances). As a result, over the decades, I've developed a kind of sixth sense for feeling out when something might go wrong, someone needs a little adjustment in their technique, or even an encouraging word to just relax a little. It's been pretty useful a number of times.

So last night, I witnessed a belayer who kept releasing their brake hand while the climber was up on the wall. You don't ever let go of your break hand when belaying. If you do and the climber falls at the same moment, he or she will likely hit the ground at a less than optimal speed. Aka "decking". There are padded floors everywhere, but you can still get seriously hurt depending on how high up you are when you fall.

So I walked over to let the belayer know how to make things safer (and in a polite and depreciating way, which is usually much more receptive). But while doing so I look down at his belay setup and have a minor internal freak out. The belay device is setup all wrong. Very much all wrong in a very, very bad way.

I quickly tell the belayer "hey, this is all wrong and I'm taking over", set up my belay device past his and as I'm doing so call over to one of the gym employees to come quickly, take a look at this, and be a general witness in case the belayer decides to get angry or aggressive towards me.

The employee quickly realized what was happening, encouraged me to continue what I was doing, and the climber was safely lowered to the ground. The belayer and the employee had a chat, and I walked away since this part was none of my business.

There's more details I could go into, but that's not the point of this story. What happened next is.

I walk away to another part of the gym with my climbing partner, and let the employee take over with the bad belayer. But then people start walking up to me saying things like "wow, I'm really glad you said something, his belaying was super sketchy" or "I can't believe that guy was doing that, it was freaking me out a bit".

At least four other climbers saw the bad belaying, and did nothing.

There's a certain etiquette in a gyms towards other climbers. You don't give out unsolicited advice to climbers about how to get past a hard problem. You don't loudly talk about "how easy that climb was" when someone else is currently struggling on it. And in general, you let people belay how they are as long as it's safe, even if it's not your preferred technique. If someone is belaying with an ATC but you prefer to use a Grigri, you're not going to comment on it.

And I think it's this mini-culture that kept other people from speaking out, combined with maybe a bit of uncertainty or embarrassment.

So what should you do if you see someone being sketchy in a climbing gym?

The simplest and best solution is to mention it to a gym employee. The employee will then (hopefully) casually walk over and observe the situation, and make a decision based on what they see.

I've talked with numerous gym employees about this, and every one of them absolutely wants to know if someone is suspected of being unsafe in the gym. So don't feel embarrassed by this. Don't think you are lacking experience to make the right call. Just go let the employees know. You might be wrong- so what? It's better to be safe than sorry, especially when someone could potentially be seriously hurt.

I feel at this point, I need to defend gym climbing a little bit. In 20+ years of climbing*, I've only had to take over someone's belay maybe once or twice. What I did last night was super rare. Even having to comment or report on someone's belay style is pretty rare. Maybe 2-6 times a year?

Climbing indoors is safer today than it's ever been. The belay equipment is modern and amazing, harnesses are more comfortable than ever, and new climbing gyms are popping up all over the country. The collective wisdom from all of this has increased the safety of climbers 10x.

One of my favorite analogies is to compare climbing to driving a car. Of course it's dangerous! But climbing is no more dangerous than driving- in fact it's probably safer. You wouldn't just hand your keys over to a 16 year old who's never driven and say "here you go- be back by 10!". That would be insane.

Instead you take a climbing and belay course, or learn from someone who knows what they are doing. And just like you have to pass a test to get a driver's license, climbing gyms make you pass a test to be able to belay someone. (I'm not sure the person who was belaying last night had passed the test- I wasn't privy to that part of the conversation. I can say that I've seen 8 year olds belay better than that guy).

* In my 20+ years of climbing, I've learned that experience doesn't actually count for much. You can climb for decades and still be doing it all wrong. You just got lucky. Take a course. Read some books or watch safety videos from climbing gear companies. Keep your skills sharp. Equal parts skepticism, paranoia, common sense, and knowing how to relax can go a long way to keeping you safe.
238 Seconds of Some Solid Guitar Playing

If you're a fan of blues and didn't know John Mayer could play, check out the first 238 seconds of this recording (the second half is one of his pop songs, which I don't like much). I have fond memories of playing this over and over in my car, while driving long distances to meet up with my future wife for the weekend. just enjoying the little things John Mayer does in this improv. He's a phenomenal guitar player, and I wish he'd do more of this stuff.

I was recently compiling some of my favorite songs for a thing, and I wasn't able to use this entry because the album it's on doesn't show up on the platform. Luckily for us however, YouTube has everything.

Ive Departs Apple

Financial Times: Jony Ive, iPhone designer, announces Apple departure

Sir Jonathan is setting up his own new venture, a creative business called LoveFrom, with Apple as its first client. The transition will begin later this year, with LoveFrom launching fully in 2020.

I'm optimistic about this. Ive has done wonderful things at Apple for decades, but he's also worked with and grown amazing design teams at Apple, and I think they'll be just fine.

June 25, 2019

The Seattle Times: Apple says it plans to turn Seattle into ‘key engineering hub’ with 2,000 new workers:

Apple plans to add 2,000 software and hardware jobs in Seattle within the next five years, starting with 200 additional jobs this year, company officials said Monday at a news conference with Mayor Jenny Durkan.

The company is leasing all the office space at 333 Dexter Ave. N., a complex of two 12-story buildings nearing completion at Dexter Avenue and Thomas Street, one block west of the core Amazon campus in South Lake Union.

The office space could accommodate more than 3,000 employees.

This is pretty huge. I've been telling everyone at Apple who would listen that an engineering office is needed in Seattle. There are a ton of great programmers up here who don't want to leave because they own a hosue, love the weather, or want to stay away from the insanity that is Silicon Valley. We're overflowing with talent.

Hopefully it's not just Siri and Maps positions, but jobs that work on apps or frameworks too.

Would I be tempted to work for Apple at this point? Probably not. I'm still happy doing my own thing. But I know plenty of people who would seriously consider it.

Play It Loud

Ableton has put up a wonderful tutorial describing what a synthesizer is, how it works, and with intuitive interactive controls. It's really fun to play with.

A New Bytecode Format for JavaScriptCore

Tadeu Zagallo: A New Bytecode Format for JavaScriptCore

"In revision r237547 we introduced a new bytecode format for JavaScriptCore (JSC). The goals of the new format were to improve memory usage and allow the bytecode to be cached on disk, while the previous format was optimized for interpreter throughput at the cost of memory usage."

Speaking of bytecode, I found out this year at WWDC that iOS applications which use JavaScriptCore directly can't load WebAssembly modules. Since WebAssembly is translated directly into native code, with no interpreted fallback, it's a no-go as far as Apple is concerned.

FMJS Diary #1.5

How about a small FMJS update? I've ported my little blogging engine from Node.js over to FMJS, with a little Cocoa editor involved as well. At some point it'll be released in source form, but that's probably not anytime soon since there's some other suff that would need to happen first.

Converting Acorn Images on the Command-Line

Alex Chan shows how he used AppleScript to batch convert a bunch of Acorn images to PNG.

You could also use Retrobatch to do this pretty easily, but I thought it was a great example of using the tools already at your disposal to get something done.

Ben Lacy on IG

Charlie Hunter (an amazing guitarist you should check out) posted this video of Ben Lacy playing Everybody Wants to Rule the World. If you're a guitar player, you should watch and take a listen.

As a guitar player I can see and hear everything that he's doing, but combined it makes no sense to my brain. A single guitar player should not be able to get this much sound and rhythm out of their instrument. Yet, here it is.

There's a handful of other Ben Lacy videos like this scattered around the internet, which are well worth listening to. And Charlie Hunter has a bunch of amazing clips up on Instagram as well.