Category: Design

Replacing my Mac Pro

I wrote about my new Mac Pro a year ago. It’s still rock-solid, and it’s done everything I asked of it. But the writing is on the wall: Apple’s new $1,000 MacBook Air is now comparable in speed to my year-old $10,000 Mac Pro. This year, Apple will likely release updated MacBooks Pro with more cores and memory and blow right past the performance of my Mac Pro. Next year, an updated Mac Pro will do the same again.

I had hoped to get seven years out of it? That was before Apple announced the switch to their own chips, and before they blew Intel chips away with the performance of the M1. My expectation was based on the incremental performance gains we’ve seen from Intel over the last decade, not the paradigm shift ushered in by Apple’s M1. The Intel-based Mac Pro is rapidly losing value, and it’s clear I’ll want to replace it as soon as I can.

My Plan

Here’s my current plan; we’ll see if Apple releases the right products in the right order for this to work out.

Mid 2021: Buy the rumored 14-inch MacBook Pro. I expect it to be faster than my Mac Pro for all practical purposes. Hook it up to my existing two monitors and use as my main machine. Sell or trade in the Mac Pro before it loses too much of its value.

Mid 2022: Evaluate the new Mac Pro, and possibly upgrade to that one.

External Displays

I’m glad there are finally some rumors about cheaper external displays. I think Apple was waiting to release monitors until they redesigned the iMac, so the monitors could match the look of the iMac (ideally using the same enclosure with simpler innards). And they were waiting with the iMac redesign until they could use their own chips, both for lower thermal requirements and to be able to include Face ID. Now their ducks are finally all lined up.

It makes too much sense for Apple to plug this hole in their lineup. And the work Apple has put into making resolution switching seamless also makes more sense if monitors are on the horizon. Here’s hoping — I’d love to replace the LG 5K with an Apple monitor with Face ID.

So while my Mac Pro didn’t turn out to be the long-term investment I had hoped for, I’m stoked about Apple’s M1, and very excited about what they’ll announce this year and next.

The State of Game Center

My happy blog post on SmartOthello for Mac conveniently skipped my journey through Game Center purgatory. While profile pictures are back, Apple is still not giving Game Center proper attention. I’ve been busy submitting bugs to Feedback Assistant – here’s a sampling:

  • There is still no way to get notified of invitations without polling (FB5990491).
  • On the Mac, turn notifications are not received (FB7659591).
  • On the Mac, there’s no way to edit your Game Center profile picture (FB7667313).

When you try to start a Game Center game on the Mac, you get the following cut off dialog (FB7668604):

mac-game-center-cut-off

(Yes, that’s the actual amount of white space.) Luckily, you can resize it to reveal some more buttons:

mac-game-center-revealed

The worst issue right now is that Apple has deprecated GKPlayer.playerID, and tells developers to use teamPlayerID or gamePlayerID instead. However, those simply don’t work (FB7662712), as the IDs keep changing even within a single game, making it impossible to e.g. cache profile images, never mind reconcile locally stored games with Game Center data. If GKPlayer.playerID gets removed in iOS 14 without fixing teamPlayerID, I will have to pull SmartOthello from the App Store.

How to Play With Friends

The whole process of finding friends to play with is way too convoluted. I’ve improved the UI in SmartOthello 3.0 to make it easy to start a game with somebody you recently played with. However, the process to first find somebody to play with is kafkaesque:

1. Tap on New Game and choose Game Center at the top.

start-game-center-game

2. SmartOthello lists recent opponents, and you can easily start a game with them. To play with anybody else, tap on Invite Friends.

after-invite-friends-long

3. This leads to a screen that has two buttons: Invite Friends and Play Now. While Invite Friends is just lightly outlined and you’re tempted to tap the boldly emphasized Play Now, that would just try to match you with somebody else who’s looking for a random opponent right then, which only really works if the app is much more popular than SmartOthello. So don’t get stuck in limbo; tap Invite Friends.

after-second-invite-friends

4. This brings you to an iMessage screen where you can send an invitation to a contact. However, the instruction “Tap + for Friends and more” is trying to give you a clue that you should tap on the ⊕ button, and then you’re finally presented with the right choices: play with contacts, friends, nearby players, or players you recently played with.

final-game-center-screen

This last screen makes sense – Apple needs to give developers a way to take users directly to that screen (FB7672633). Game Center matching was much easier when there was a Game Center app; Apple really went off-track when they decided that matching should go through iMessage.

I hope this helps others navigate through Game Center issues with turn-based games. If I’m wrong about any of these, I’d love to know! Hopefully, Apple can address these issues in iOS 14 and give both players and developers a better experience with Game Center.

Unknown Kifu Features

It’s rewarding to see many go players at the Go Congress use SmartGo Kifu, and invaluable to be able to provide support in person. Most questions are due to users not being aware of existing features. I will keep improving the user interface to make features easier to find and use; meanwhile, here are answers to questions that came up several times during the week.

Edit Game Info

If you misspelled your opponent’s name, or started recording a game without entering the player names, tap on the title of the game above the board (with the little orange i) to see the game info, then tap on Edit to add or change any of the game info attributes.

Edit game info

Joseki Matching

Many players know about joseki matching, but may not be aware they can match a whole side of the board. To see a list of the games that match, tap on the little orange > in the joseki result (bottom left below the board).

Joseki matching

Rotate to Opponent’s View

If you get a game record from your opponent, it’s probably upside down. You can rotate a game in My Games by rotating two fingers around the center of the board. It rotates by 90 degrees only, so you have to rotate twice, and it’s a bit fiddly, but at least it’s possible. (This will be much improved in a future version, showing the following panel of rotation options.)

Rotation panel

Guess Next Move

Pick a game by a pro you like, turn on Guess Move, then try to figure out where the pro played. SmartGo Kifu gives you clues: right area but wrong move, right move but wrong timing, or the wrong area entirely. This also turns out to be great bar entertainment for several people, as we proved at the Green Leafe last night.

Guess next move

Double-Tap to Zoom

Such a simple feature: double-tap to zoom in on the Go board. On the iPhone, it conveniently zooms to use the full height available. So why does SmartGo Kifu have a setting to turn it off?

Double tap to zoom

When SmartGo detects a tap on the board, your intent is not clear: do you plan to play a move, or is there a second tap coming? On iOS you can tell the system to disambiguate between the two gestures – for the single-tap to succeed, the double-tap has to fail:

singleTapGesture.require(toFail: doubleTapGesture)

The price you pay is that move entry is delayed by a quarter of a second. Thus that setting gives you a choice: convenient zooming or faster move entry. Not a good choice. (But at least you now know how to speed up move entry.)

There’s a better way to solve this: always play the move right away. Then if it turns out to be the first tap in a double-tap, undo the move and zoom the board instead. Fast move entry and zoom, no setting needed. However, that means being able to cleanly undo the move (and anything else that a tap on the board might do), and in SmartGo Kifu, that would be harder to implement than what the feature is worth.

Rewriting SmartGo in Swift is still work in progress; a long journey. But thanks to less technical debt, I’m able to add features like undo, and thus make move input fast while still allowing you to double-tap. Getting rid of a confusing setting always makes me happy.

SmartOthello

My Othello app is now available in the App Store — check it out at smartothello.com. Even if you’re not interested in Othello/Reversi, it will give you an idea of the future direction of my Go apps. And next time you play Go and somebody asks whether that’s Othello, at least now you have an app you can recommend.

SmartOthello is 100% Swift: it was a perfect way to learn Swift while building up code I can reuse for my Go apps. It’s also my first app to support Game Center, including achievements and leaderboards. My experience with Swift has been really good; my experience with Game Center less so.

SmartOthello is also a reboot in terms of user interface. The clean design that Scott Jensen came up with for Othello will definitely influence the Swift version of SmartGo. For example, the games list sliding in from the left leaves more room for the board on the iPad; the ability to turn off the status bar again provides more room and less distraction.

The tutorial in SmartGo Player uses Go Books under the hood, so the Swift version of Go Books is up next. Yes, this conversion is taking a while, but I’m planning to live with these apps for many more years. After launching my first Swift app, I’m more convinced than ever that the investment is worth it.