Archive for March 11, 2015

Wednesday, March 11, 2015

Tech Is Dead

Oluseyi Sonaiya (comments):

Software developers, entrepreneurs, technophiles—we are suffering through this transition right now. Derisive comments are made about purchasing decisions “driven by fashion,” and products deemed to insufficiently “push the envelope” are panned. Yet we can no longer anticipate healthy response to products and services offered on the strength of being superior technology; consumers don’t care. We also can not overreact to the large “tech” companies’ product offerings becoming poorer and poorer fits for us; we are no longer their core customers. Technology is now a competency, a competitive edge, but not a core value proposition.

We’re all in the consumer products and services business now.

Photo Grabbr 1.5b

Vince Tagle:

I keep track of a lot of Flickr accounts and every so often, I come across a photoset that’s just so brilliant, I want to keep a local copy for myself. Unfortunately, it’s rather cumbersome to open each photo individually, save the size that I want, and then rename the file to match the title of the photo. Even more unfortunate is that as far as I could tell, there wasn’t anything for Mac OSX that would help simplify this job. So the only thing left to do was to write Photo Grabbr so that I could use it for myself.

It’s a handy utility that I’ve been using for years, at least until Flickr blocked API access over HTTP. With this update, Photo Grabbr now works over SSL.

After installing version 1.5b, I was getting “Invalid auth token” errors whenever I tried to search. The developer suggested removing the preferences and re-authorizing my account. I didn’t want to reset all the preferences, since I wanted to preserve my list of recent users. Issuing these commands:

defaults delete com.malarkeysoft.PhotoGrabbr "Authenticated User ID"
defaults delete com.malarkeysoft.PhotoGrabbr "Authentication token"

deleted just the necessary preferences.

Promoting Games With No In-App Purchases

Federico Viticci:

Apple has started promoting games that don’t have any In-App Purchases on the front page of the App Store. Currently featured in the UK App Store and likely expanding to the U.S. store later today as part of the App Store’s weekly refresh, the section is called ‘Pay Once & Play’ and it showcases “great games” that don’t require users to pay for extra content through IAPs.

Bravo.

iOS 8.2’s Mandatory Apple Watch App

Sam Machkovech:

During Monday’s Apple press conference in San Francisco, Tim Cook announced that iOS 8.2 would immediately begin rolling out to compatible iDevices—as in, any device that could already run the original version of iOS 8. Along with expected bug fixes, the update’s biggest addition was support for the upcoming Apple Watch. It’s a fact that users are now being bonked over the head with thanks to the creation of a dedicated, mandatory app.

[…]

Apple faces two major rivals who produce both smartwatches and smartphones, but both Google and Samsung have elected to ask owners of Android Wear and Samsung Gear (respectively) to log into their exclusive app shops and download a free, optional app to support their wearables.

This totally unsurprising after the U2 promotion.

Ilja A. Iwas:

How is Apple putting the “Apple Watch” app permanently on my iPhone different from Lenovo crippling their laptops with pre-installed adware?

You can delete the adware.

Watching the Watches

Nathaniel Irons:

If I’m going to start wearing a watch again soon, it’ll happen because of notifications, even though I don’t remotely believe what Tim Cook’s asserting. I was at a lunch a couple of months ago with a guy wearing an Android Wear watch, and by an order of magnitude, he spent more time glancing, poking, and swiping at his watch than I’ve ever seen someone do with their phone in a social setting over a similar period of time.

Let’s Build @synchronized

Mike Ash:

Apple’s implementation of @synchronized is available as part of the Objective-C runtime source distribution. This specific bit is available here.

It’s build for speed rather than simplicity as the above toy implementation is. It’s interesting to see what it does the same and what it does differently.

The basic concept is the same. There’s a global table that maps object pointers to locks, and the lock is then locked and unlocked around the @synchronized block.

I love reading about Apple’s runtime optimization techniques.