Avatar of Matt Moriarity
Matt Moriarity

November 2019

Genius Bar was able to just clean my sad MacBook keys and they seem all better, so I’m happy to not have to leave them my computer for a week. And I’ve got another year before they won’t fix it for free in case it happens again.



Seriously Apple? How many international issues can you be on the wrong side of?

Loading tweet…


I finally set up a Genius Bar appointment to get the 2016 MacBook Pro keyboard fixed. I’m sick of the “M” sticking on it!


If he’s still a billionaire then it wasn’t enough.

Loading tweet…



The Aesthetic-Accessibility Paradox:

Highly accessible interfaces are easier on the eyes of the visually impaired, but harsher on the eyes of the normal visioned.

We really need to stop propagating this nonsense. It’s totally possible to create beautiful, accessible interfaces; stop giving folks excuses not to try.


I finally bought Refactoring UI and:

  • I already finished reading through it
  • I’m now itching to redesign one of my webapps

I never got especially deep into Homestar Runner, but someone showed me “Virus” in high school and I couldn’t stop quoting it. It’s still incredibly funny.

Loading tweet…


I would very much like to not hear anything more about the Cybertruck. It’s wild how much credit and attention the world is willing to give Elon Musk. It’s not especially earned.


Using feature flags more heavily will help some, but Apple still relies way too much on manual testing to fine bugs. Most systems at Apple aren’t designed to be easily tested in an automated way, and I’m not sure how they fix that.

Loading tweet…



So Apple has released some cool products recently but AFAIK they still have a terrible response to the Hong Kong protests due to their deep dependency on China. We haven’t all forgotten that, right?


Just set up Basecamp Personal for some of my iOS app side projects. Not sure how much use it is without collaborators; I’ll find out I guess.


Still giddy that I got to see The Adventure Zone live this week.


So excited that I ended up being in Chicago for work the same week as an Adventure Zone live show! Tonight’s gonna be a good night.


Look at that, I filed my first Swift bug! It’s a pretty weird one if you ask me, but I think I managed to reduce this one down to a pretty small reproducible example.




Creating Pipelines with Combine and Core Data

In the last post, I adapted my existing observation of Core Data objects to use Combine by replacing callbacks with publishers and subscriptions. But Combine can do a lot more than just make your callbacks harder to use! It’s designed to let you build data pipelines, where different parts of your app can produce data that can be consumed and transformed in interesting ways,and decoupled ways by other parts. If I really think about what’s happening in my app, there is a flow of data from Core Data to the fetched results controller to my view controller and finally to the diffable data source. I’d really like to model that data flow in Combine in a declarative way.

Read more…


Getting Started with Combine and Core Data

Because Apple released SwiftUI and Combine together, you could be forgiven for ignoring Combine if you’re only using UIKit in your app. I certainly ignored it for a while, but I think Combine provides a huge opportunity to use better app architectures in your iOS app without feeling like UIKit is fighting you the entire time.

I want to demonstrate a progression I went through in my app for observing data changes from Core Data. I think that this shows the power that’s available in Combine if you’re willing to embrace it.

Read more…


I could listen to The Adventure Zone: Suffering Game soundtrack all day long.