Kourosh Dini Talks GTD and OmniFocus on Mac Power Users

Kourosh Dini wrote the book everyone using OmniFocus should read called Creating Flow With OmniFocus. Seriously, I can’t recommend it enough. Another thing I recommend is listening to the most recent episode of Mac Power Users where they have Kourosh on. He talks about how he does GTD, and a little OmniFocus specific stuff too. I’ve kind of fallen off the wagon a bit lately, and this has made me decide to get back on and get my system in order. I should stick a task in my inbox to remind me to blog about that.

Daniel Jalkut on Apple News

Apple News And The Open Web | Bitsplitting.org:

I’m optimistic that Apple’s News app will be a strike against centralized services such as Medium, Twitter, and Facebook. A strike against signing over content to a 3rd party mediator for the sake of a greater chance at connecting to an audience. Apple may not be the world’s best technology company when it comes to either storing data or building a social network around it, but they are damned good at building a captive audience of delighted users who trust the company to provide access to a variety of 3rd party content.

Calling iMessage an impressive social network is a bit of a stretch considering my messages still sync across devices in seemingly any order. I don’t know if the News app is going to pull anyone who’s dedicated to RSS away from it, but it might be great for those who aren’t.

The Kinect is dead

Ben Kuchera writing for Polygon:

The real story though, or at least the lack of story, is that the Kinect is well and truly dead.

When the Xbox One launched you couldn’t buy one without a Kinect. Microsoft knocked it out of the park with their E3 announcements today, but missing was any mention of the Kinect. They’re also dropping the price on the Xbox One bundles which don’t come with it, but not on the ones that do. I don’t know if “dead” is the right word, but it’s certainly on life support.

Having used an Xbox One both with and without a Kinect, I think it’s kind of a shame that the Kinect hasn’t done better. Without it the Xbox interface is kind of hard to get around. With it, it’s great. I use the voice commands to pause video, raise or lower volume, use the snap feature, and go to apps all the time.

I don’t see how anyone who’s used an Xbox One both ways could not prefer having a Kinect. That’s not enough though. It’s still not strictly necessary, expensive, and doesn’t make the games themselves any better (which is the reason people buy game consoles). Microsoft had a cool thing that they did a bad job making a case for, and now it’ll probably just kind of fade away until it’s axed in the next console revision.

Oh well. We’ll always have this bullshit vaporware promotional video of the first Kinect from 2009:

Core Data Programming Guide Updated

I’ve used Core Data in most apps I’ve written since 2009, and I’ve felt for a long time is that the documentation was pretty lacking and out of date in a lot of places. I haven’t read it yet, but Apple has updated the Core Data Programming Guide today to “reflect current best practices and APIs.” I’m hopeful that things are getting a little better, but there’s apparently no reference to Swift, so, who knows.

Optional Punctuation in Swift

All of the punctuation in Swift looked pretty weird to me until recently, but now that I get it, I’ve really learned to appreciate how great the syntax actually is. The way I think of it is this: if you’re using ?, you’re asking a question, and when you use ! you’re asserting that you already have the answer. Of course, for the second case, you need do need to be sure or your app will blow up.

So, for example:

Asking a Question

if let foo = dictionary["foo"] as? String { ... }

Is the value for the key “foo” a string? If so, assign it to the constant foo.

delegate?.objectDidSomething(self)

Do I have a delegate, and can it respond to objectDidSomething:?

Making an Assertion

managedObjectContext!.save(&error)

I know that managedObjectContext is not nil.

let foo = bar as! String

I know bar is a string, so nothing will go wrong casting it.

A Few Apple Watch Thoughts

  • Scratches show up on stainless steel easier than I expected. Thankfully it’s pretty easy to polish them out.
  • WatchKit apps have a lot better performance than I expected. Based on Twitter, I thought they’d be pretty much unusable.
  • Parts of the UI are a bit laggy, but I suspect that’ll be fixed in a software update.
  • The screen switching on automatically really only works when you’re standing with your arms at your side.
  • If I don’t wear the band fairly tightly, I miss taps.
  • I love not having everyone around me know when I get a notification.
  • Not having to fish my phone out of my pocket to find out why it’s buzzing is just as great as I hoped it would be.
  • I would really like a way to know who in my address book has an Apple Watch.

Real-World Testing with XCTest

Kind of old now, but I really like this post from the August issue of objc.io. The two things that stood out for me was that it used XCTest instead of a third party testing framework, and that it gives real examples of how to approach which tests to write. I’ve been totally totally on board with the idea of unit testing for a long time, but my biggest hurdle has always been knowing what to test. Thinking of what tests to write in terms of Given-When-Then pattern they go over has given me some new ideas.

Trying Swift Again

On my most recent project, I decided to try going Swift from the start. I did the same thing when I started working on a rewrite of the Lovely app around the end of last summer, but found the tools too immature then. This time I’ve spent about a week with it, and everything seems is working out fine (so far). I’ve tried to keep up reading about the language itself, so the syntax hasn’t held me back much. One difference between now and the last time I really dove into Swift is that either something in my brain has clicked regarding optionals, or the language changed a bit over the past six months to make optionals align with my brain more. I still can’t what the debugger commands are.

The other day on Twitter, I was part of a discussion comparing Swift to Objective-C. My feeling is that Swift isn’t better, but some parts of it are delightful to me, and I like it. For example, method overloading in Swift is pretty great, and I’m looking forward to doing interesting things with enums. Better though? In some ways, but not in others. Colin Cornaby pointed out that the ease of dropping down to C in Objective-C comes up a lot, and that C++ compatibility is pretty much a requirement for a lot of apps. I think he’s right.

The way I look at it is this: Objective-C didn’t have to be “broken” for Swift to be a great language. I don’t expect Objective-C to go anywhere in the near future, and that’s a good thing.