From my home office, I can hear the pleased squeals and shrieks emanating from downstairs. A stampede of thumping knees across the floor, a high speed chase.
Two years ago, an infant came screaming into our lives.
One year ago, my daughter was born.
This morning, I walked out my front door — to cast a vote for her future.
The past year has been challenging and rewarding, both personally and professionally. As usual I read, wrote, listened, and played about 1% of everything I wanted to. Here’s some of what I did get to, and enjoyed enough to recommend to you1.
As usual, all lists are ordered alphabetically.↩︎
Back in June, I released a new major update to SlackKit, my Swift framework for building Slack apps. There were three big goals for this release — I wanted to make it universal, make it modular, and make it extensible.
Prior to the new release, there were two separate branches for SlackKit — one that targeted Apple’s platforms (iOS/macOS/tvOS), and one that targeted linux. Not only did this cause confusion for people trying to use the library, but it was also a maintenance headache trying to keep both branches in sync.
The progress made by the Foundation Project on swift-corelibs-foundation over the past year has made unification plausible. Key classes like
URLSession were implemented, and overall quality has greatly improved. Swift 3.1.1 is the first version of Swift where the Foundation frameworks have started to feel like a solid foundation on linux as well as on Apple’s platforms.
The trickiest part about going universal was wrangling SlackKit’s third-party dependencies. Most popular open source Swift projects today are focused on iOS or macOS and don’t support linux, so I needed to find alternatives where necessary.
In addition to being universal, SlackKit is now also modular so that if you don’t need everything that SlackKit offers, you can just pull in the parts you need. I ended up breaking it up into the following 5 modules:
- SKWebAPI - a wrapper for the Slack Web API
- SKRTMAPI - a web socket module for connecting to the Slack Real Time Messaging API
- SKServer - a server module for handling OAuth, slash commands, and more
- SKClient - a client module for tracking and managing client state
- SKCore - a core library for shared model objects
Finally, SlackKit is now designed to be extensible. This means that if you don’t like the defaults, it’s relatively easy to plug into SlackKit by conforming to the real-time messaging, server, or client protocols. The server-side Swift ecosystem is rich, varied, and growing — being extensible will help SlackKit grow and evolve along with that ecosystem.
I’m very pleased to have this release out the door, but there’s still lots left to do. If you’re interested in helping out, take a look at the project roadmap — contributions of all size are always welcome!
The Touch Bar, the headline feature of Apple’s new MacBook Pro laptops, is a mistake. It is a gimmick, a colorful whiz-bang toy “feature” designed to sell two-thousand dollar computers in Apple Stores. And it shouldn’t be the future of how we interact with macOS.
Apple’s marketing materials claim that it “revolutionizes the keyboard experience” and that it’s a “revolutionary new way to use your Mac.” Outside the reality distortion field, what they have created is an unholy amalgam1 of their (truly revolutionary) multi-touch keyboard and a traditional one. Simple, daily tasks like pausing a song or changing the screen brightness are transformed into a game of hide a seek, the sought after key constantly being moved out from under your fingers, hidden away in submenus accessed through inscrutable glyphs with tiny touch targets. The Touch Bar bastardizes the beauty of the touch interface — the naturalness of directly manipulating what is seen on the screen — by marrying it with the indirection of a keyboard, a device that we’re trained to not look at while we use.
In the rare case that the controls in the Touch Bar are more than visual representations of keyboard shortcuts, they tend to be interactions that are performed less clumsily with the trackpad. The icons themselves are like the shifting sands of the deserts, subject to the whims of the the Mac’s windowing system, making it impossible to commit any Touch Bar action to muscle memory. It is the most infuriating input device I’ve ever used.
If the Touch Bar isn’t the future of interaction on the Mac, what is? In the bad old days, when Apple was on the verge of bankruptcy and saddled with a legacy operating system it was Steve Jobs who rode in and saved the day with NeXTSTEP, a modern OS he had been building at NeXT. Unfortunately for Apple, the go-go operating system building days of the 1980s and 1990s have mostly passed, so the prospect of an outside acquisition showing the way forward is slim. Fortunately for Apple, they’re only a little over a decade removed from creating one of the most successful operating systems of all time.
macOS, despite the new name and fresh coat of paint is legacy software — iOS is now older than macOS was at the time iOS was introduced. It is an incredibly powerful, complex operating system with a lot of accumulated cruft. It has taken it’s particular vision of the traditional GUI as far as it can. If Apple believes in the long-term future of the Mac as a platform, they have to think differently about the underlying software.
Apple executives have spoken on the record multiple times over the past few years about having tried and ultimately dismissed the idea of touchscreen Macs. And with the operating system as it is designed today, it’s not hard to see where they’re coming from. It would be clumsy to interact with the nested menus and small controls of macOS by touch — they were designed for use with a much more precise pointing device, the mouse. But what if it wasn’t?
Apple should replace macOS with a new operating system built from the ground up to be touch-friendly. Not iOS2 with a clamshell keyboard, but something entirely new. An operating system that’s designed to be used with a touchscreen monitor and a physical keyboard. An operating system with the security and power efficiency of iOS, and the power and flexibility of the Mac. An operating system that is built from the ground up to integrate seamlessly with Apple’s cloud services. An operating system for the future of the Mac platform.
If the Touch Bar feels like a small iOS device that’s been welded onto the Mac, well, that’s because it is.↩︎
If your answer here is “iOS”, I disagree. iOS should focus on doing what it is already great at — being a powerful mobile operating system focused on simplicity and speed.↩︎
It’s the most coveted real estate in technology — that grid of colorful icons staring back at you whenever you wake up your phone. It’s where our most used and most loved apps live. Despite the chatter about the end of the app “boom”, my homescreen has resisted the entropy afflicting others. Out of the 28 total spots available, 9 have changed from last year. This is what my home screen looks like at the beginning of 2017.
- Foursquare: A cleaned up design and the best food and drink recommendations make Foursquare my go-to where to go app.
- Uber: This was the year Uber really integrated itself into how I get around — I find it especially invaluable while traveling.1
- 1Password: Waking up to a two-factor authentication prompt that my Apple ID was trying to be accessed from China got me to finally take my online security seriously. With the help of 1Password, I’m now a reformed password re-user.
- Periscope: Periscope was the app that sat on my homescreen the longest while garnering the least actual use. While fascinating conceptually, most live video is both low quality and low density.
- Settings: Mostly obsoleted by the introduction of Control Center in iOS 7 this legacy inclusion finally got pushed to the second screen this year.
- iA Writer: I love iA Writer for long-form writing like this article, but I simply don’t do it on my phone enough to warrant it’s inclusion on page one.
- Weather Line: This past summer, I started a new job. It’s close enough that I can bike to work, which I love. That also meant that I needed to know if it was going to rain, and when. Weather Line has proven to be a more than worthy replacement for Perfect Weather2. It presents the important information in a clear, easily readable format and offers an excellent iOS 10 widget.
- Capsule.ai: Since Foursquare split it’s app in two, I’ve been using Swarm to keep track of places I go while warding off the social bits I wasn’t interested in. So when I saw Capsule.ai on Product Hunt it was love at first sight. The location inference isn’t as good, but it’s well designed and I’m not constantly fighting off unwanted inquiries to “Share Your Location With Friends!”.
- Castro 2: The gentlemen over at Supertop Squid released a new version of their already excellent podcast app Castro. Castro 2 helps you organize and prioritize your podcasts using a clever inbox and queue system.
- Spark: While I was using Outlook when the ball dropped on 2015, I spent most of the year using the excellent (and confusingly named) Email3 by Easilydo. But when Readdle released an excellent Mac version of their email client Spark with cross-platform sync, I switched. I still find the iOS client a bit clunky but since most of my email management is done on my Mac anyways, the sync features win out.
- Bear: Vesper4, the meticulously designed note-taking app from Q Branch was shuttered due to business concerns earlier this year. In a category with hundreds of alternatives, nothing filled the void as expertly as Bear. When combined with it’s Mac version, it’s simply the best cross-platform notes experience available on Apple platforms.
- Facebook: Facebook Paper, the beautifully designed, if slightly awkward5 app from Facebook’s now defunct Creative Labs division was also shut down this year. There was only one candidate for replacement.
I took 15 Uber rides this year.↩︎
Perfect Weather sadly hasn’t been updated since June of 2015.↩︎
In an iOS only vacuum, I think that Email is the best iOS email app.↩︎
Vesper is still available for download on the App Store but no longer has a sync service and is no longer being developed.↩︎
A horizontal feed is just harder to scan than a vertical one.↩︎