One More Birthday Till the Legal Drinking Begins
Today is my blog’s 20th birthday!
It started like this: at the time I was working at UserLand Software on a blogging app called Manila, and this was my own personal Manila blog. It’s gone through a few other engines since then. (These days it’s rendered — as a static site — by some Ruby scripts.)
20 years is no small feat. Congrats, Brent.
They Might Never Tell You It’s Broken
The problem, it turned out, was that MacOS had more strict requirements for keeping the stack pointer aligned. This wasn’t difficult to fix. The more important lesson, that I didn’t understand until that point, is that you can’t count on the people trying your project to quickly and reliably signal bugs to you. Most of the time, if it doesn’t work, they won’t report the problem. There are a few reasons why this might be.
November 5, 2019
A few months ago, some very nice folks from the App Store at Apple came up to my house and took a bunch of pictures. I worked a bit, we went rock climbing at the new Vertical World, and I even made some pizza.
The result is this cool little profile in the developer section: Meet the Developer: His Big Photo Op.
It was all a bit overwhelming, but fun at the same time.
(There's a version of the profile on the web, but it's a truncated version of what you can see in the App Store - which should auto-open if you visit that link).
October 23, 2019
With the recent release of MacOS 10.15 Catalina, we've put Acorn on sale at the insane price of $14.99. That's 50% off. If your old version of Photoshop won't run on Catalina, or you are still using Acorn 5- now is a good time to get the latest and greatest at a big discount. This sale will only last till October 31st, so it'll be over quickly.
And of course, head over to Acorn's website to see what it can do for you.
Retrobatch 1.3 was also pushed out last week. It includes new nodes such as Vignette, Gradients, Remove Specific Metadata, and a Duplicate node. It also includes improvements to existing nodes such as a token in the Write Node for writing back to an images' source folder, page number tokens, and more. The Trim to Edges node has new options for selecting specific colors while trimming, or using whatever the dominant edge color is. The full release notes are availble as always.
Core Animation Reduces Power Usage in Firefox
In Firefox 70 we changed how pixels get to the screen on macOS. This allows us to do less work per frame when only small parts of the screen change. As a result, Firefox 70 drastically reduces the power usage during browsing.
While reading this, I found a bunch of parallels between Firefox and Acorn with regards to compositing. Acorn draws to an IOSurface like Firefox, but I've got some interesting code for doing partial updates to big Metal textures, so Acorn does as little copying as possible.
Coffee and Chocolate Make You Smarter, According to the Latest Neuroscience
The big takeaway: if you want to keep your brain healthy both today and in the future as you age, you should be consuming coffee, tea, or cacao.
Coffee every morning and sometimes in the afternoon, and if not then I'll drink some tea. I had been eating a ton of dark chocolate but have recently cut back. Maybe I'll reconsider. Mrs. Mueller will never cut back from dark chocolate.
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:
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.