Download Jigsaw for macOS

Jigsaw is one of those ridiculously fun (dumb?) ideas that come along and smack you upside the head one day and you can’t help but take an afternoon to build.

Apple already lets you sync the contents of your Desktop using iCloud. But, if you’re a visual person like me who often arranges their Desktop icons in meaningful ways, not having the positions of your files on screen also stay in sync is frustrating as I move between my laptop and desktop throughout the day.

Jigsaw solves that by syncing the positions of your Desktop icons over iCloud. Move a folder on your iMac, and a few seconds later it mirrors itself on your laptop.

Jigsaw is free to download.

Read More »


Visually Syncing Your Mac's Desktop

For me, my Mac’s Desktop is my staging ground, my active workspace, the digital representation of my mental RAM. I’ll typically have all of the files related to the task I’m currently working on stored on my Desktop. Once it’s complete, I’ll either file them away or delete them and move on to the next thing.

Having the Desktop on my iMac at home stay in-sync with my work laptop eases the transition and context switching as I move between locations. Dropbox has been doing this for years, but actually getting into the correct folder in Dropbox always has just enough friction to keep me from using it with active files the way I do my Desktop. When Apple added the option to sync your Documents and Desktop folders into iCloud Drive a number of years ago, it was a perfect fit for me...

...almost.

Read More »


Fear and Light

It's remained that way because I've been afraid.

Always, always in the pit of my stomach, deep down in the back of my lizard brain, there's this nagging voice when it comes to the low-level work, the real work, the type of code that real developers write

You're not good enough. You can't make it work. You're not smart enough to figure it out.

So I keep punting on the work. I keep pushing that bug fix further and further out and just hope that my code keeps working and that a random macOS point release doesn't bring it all crashing down.

But two nights ago I sat down in my office. And just fucking did it. I told myself “no” was not an acceptable answer and dove into every arcane, unmaintained bit of Apple documentation I could find. Searched old Cocoa mailing lists for sample code, and finally, finally have a working solution.

After thirteen, years I finally got past my own shit and mental demons and made it happen. I guess I was just fed up with myself constantly ducking out of doing the hard work. That, plus a looming deadline I have to meet, finally held my feet to the fire on this particular feature in a way that has never been done before. So many features. So many bug fixes. Thousands of customer emails and replies. Brainstorming sessions. UI mockups on the back up napkins at bars or doodling on a notepad while at my real job. But this one damn bug was always out of reach. And now it’s done.

To my future self ten years from now: this post is for you.

Read More »


Fastmail Wrapper for macOS

I keep looking through my archives of old, private coding projects - the ones that I built just for myself to solve a particular need - to see if I can find any that other folks might find useful. So, here’s another one I spent a few hours cleaning up recently.

It's a native macOS app (wrapper) around the fastmail.com website that supports:

  • Multiple Fastmail accounts.
  • Native macOS notifications (and sounds).
  • Customizable Dock icon badges.
  • Keyboard shortcuts (⌘1 - ⌘9) to quickly open specific accounts.

Read More »


Roland is a Static Website Generator Written in Swift

If there's one thing I'm good at, it's reinventing wheels. So here's Roland - an open source, blog-aware, static website generator written in Swift that also uses PHP under the hood because PHP is still the best template language.

Read More »


Spotish for macOS

Spotish is a dead-simple Mac menu bar app for Spotify – there are many like it, but this one is mine. Here’s why.

Read More »


Three Things Today

Every task management app has a feature that will let you postpone, delay, or snooze a task. You can tell them to push a todo item out by a day or a week, etc. But I like to think Three Things is smarter than that. It's designed to be flexible and forgiving - pragmatic and realistic. When you defer a task, it won’t accidentally reschedule it for a day that’s already overflowing with commitments. It literally will not allow you to schedule more than three tasks per day.

It fits my brain. Maybe it’ll fit yours, too.

Read More »


The Stack View is a Liar

...Firing up Xcode’s wonderful view debugger, however, completely blew my mind and shattered any remaining self-confidence I had as an app developer. And then nearly an hour later I’m really questioning everything I thought I knew about ones and zeroes until a google search leads me to this page. And, sure enough, my bug is spelled out right there.

Read More »


DefaultApp

DefaultApp is an open source starting point – a template. I maintained it in Objective-C for over a decade before finally porting it to Swift in 2018. Anytime I start a new app – big or small, whether or not it’s something I plan on releasing publicly or if it’s just a small prototype or utility app I’m building for myself – I start with this project.

With DefaultApp I can go from initial idea to writing actual code in thirty seconds.

That said, I would't use this as the basis for a billion dollar corporation’s enterprise app. Or with a team of “100 engineers” “solving hard problems”. But if you’re a one-person development shop or a team of just two or three engineers building a typical macOS shoebox or document based app? Please take a look.

Read More »


How to Set Custom Display Values and Localize NSPredicateEditor

Maybe the documentation has disappeared online, or maybe it was only ever available via word-of-mouth fifteen years ago, but I lost about four hours the other night trying to figure out how to make the dropdown choices in my NSPredicateEditor show user-friendly names instead their actual key paths.

Read More »


Categories
macOS Development

A ridiculously dumb brute-force approach to getting around macOS's security UI and making my software a better experience for my customers

Until Apple gives 3rd party developers a way to properly request the permissions we need to build the apps our customers want, hacks like these are going to be the norm.

Read More »


Why Many of my Apps Failed And What Comes Next

I've started building something new. I'm about four weeks in and already finding it incredibly useful in my day-to-day. I've built many different apps over the years, thrown them against the wall, and excitedly watched which ones developed a following and which ones failed miserably. Most of my apps have fallen into two...

Read More »


Nostalgia - Rename Your Photos

I have a problem. Half of my photos come from my iPhone (via the Dropbox uploader), which creates filenames based on the date they were taken. But all the photos from my awesome DSLR are named BLAHBLAH_7001.jpg and BLAHBLAH_7002.jpg. That annoys me. I want all of my filenames to be...

Read More »


Setting Up NSOutlineView Drag and Drop with Core Data in Cocoa

Last week, I finally got around to building the number-one VirtualHostX feature request – groups/folders in the sidebar. I had put off implementing this feature for years because I never knew quite where to start when it came to Core Data and NSOutlineView. But, with VHX 5.0 coming out later...

Read More »


Categories
macOS Development

Creating a Universal Binary With Xcode 3.2.6

Last week I released a minor update to VirtualHostX. Shortly thereafter, my inbox was flooded with reports of an "unsupported architecture" error on launch. After a quick lipo test I verified that somehow I had managed to build and ship the app as Intel only — no PowerPC support. I went...

Read More »


Unsupported Architecture When Submitting to Mac App Store

For any Mac developers out there who are seeing the following rejection notice when submitting to the Mac App Store: Unsupported Architecture - Application executables may support either or both of the Intel architectures Make sure you verify that any included frameworks are Intel only. You can do this using the lipo...

Read More »


Sosumi for Mac - Find Your iPhone From Your Deskop

Every holiday, between the food and family, I always seem to find time for a quick project. Last year I built the first version of Nottingham over the Thanksgiving break. This year was no exception, and I found myself putting the final touches on Sosumi for Mac after an...

Read More »


OpenFeedback Part Deux

A year and a half ago I wrote about OpenFeedback, an open source Cocoa framework for gathering feedback from your users. Initially, it was a sister project to Appcaster, my indie dashboard web app. Since then, Appcaster has grown up and morphed into Shine, but OpenFeedback remained unchanged. Tonight, though,...

Read More »


Introducing Appcaster + OpenFeedback

Today I'm proud to announce the release of two new open source projects: Appcaster and OpenFeedback. I've been working on them off and on for over nine months, so I'm very excited to finally see them out the door. Appcaster, which I've written about before, is a web-based dashboard for indie...

Read More »