If you’re testing In-app Purchase functionality in the iOS Simulator you may eventually want to logout your test user from the App Store. Currently, there’s no way to do this in the simulator but there are a few files you can delete that’ll do the same thing.
rm ~/Library/Application\ Support/iPhone\ Simulator/6.1/Library/com.apple.itunesstored/*
If you’re testing with a different version of the simulator you’ll need to adjust the path accordingly. If you’re going to do this more than once you probably want to create a simple shell script. Here’s a one-liner you can throw into a file. It’ll assume the 6.1 simulator unless you specify otherwise on the command line.
rm ~/Library/Application\ Support/iPhone\ Simulator/${1:-6.1}/Library/com.apple.itunesstored/*
I put this in a file called logoutsimulator.sh and did chmod +x logoutsimulator.sh. Then I made sure it was in my $PATH so I can run it from anywhere and get autocompletion so I don’t have to type out the whole thing everytime. I have a ~/bin directory in my $PATH for this very purpose. This is where I collect various custom scripts and commands. Run it as follows:
logoutsimulator.sh
or
logoutsimulator.sh 5.1
References:
http://stackoverflow.com/questions/8028472/logout-from-appstore-on-ios-simulator
http://stackoverflow.com/questions/9332802/how-to-write-a-bash-script-that-takes-optional-input-arguments
I read Matt Gemmell’s Tail Wagging article last week and have been thinking about what “truth” means in software design. I understand what it means for an object to be true to its materials or true to its purpose. Truth in an object is when it has been reduced down to its basic nature so perfectly that you can’t imagine it any other way. Apple’s laptop line meets this goal perfectly and is probably why it hasn’t undergone a significant design change in almost a decade. Just continual refinement.
But what does truth in design mean for software? Here’s an Ive quote from Gemmell’s article.
Our goal is simple objects, objects that you can’t imagine any other way. […] Get it right, and you become closer [to] and more focused on the object. For instance, the iPhoto app we created for the new iPad, it completely consumes you and you forget you are using an iPad.
I think I have a better example. Comixology. Specifically, the Guided View reading mode in Comixology or any of the other apps based on their engine. The Guided View user-experience captures the true essence of a comic book better than printed pages. Comics were meant be read panel-by-panel. Guided View forces you to read one panel at a time which increases the drama and suspense. On a printed page your eye sees the entire page at once so you’re aware of what’s happening at the bottom before you’ve begun to read the top. It’s a bit of a spoiler.
I’ve experimented with reading comics in both full-page and Guided View. I enjoy the Guided View style the most by far. I also enable the Show Page on Exit option because there is an art that goes into full-page layouts I don’t want to miss. Since the full-page is displayed on each page exit there are no minor spoilers.
Then there’s the Marvel Universe app which is a bit disappointing. Marvel’s Smart Panel view is a pale imitation of Guided View. Granted there’s probably unfortunate patent issues in play but Marvel should have done a much better job with Smart Panels. In the early X-Men issues I’m reading now most Smart Panels panels are clipped on the right edge making some words unreadable. It also looks cheap and broken. The single page views contain a large amount of white border space which reduces the effective size of the actual content and therefore makes reading the small lettering even harder. My aging eyes do not appreciate this.
Another example of an app whose design is true to its purpose is NV Alt for OS X. I use this app every day and I can’t imagine it any other way. It’s a central part of my workflow and is so simple, effective and perfect at doing it’s job. It feels like a natural extension of my fingers when I’m using it.
"Websites are just services, and what you see in a browser tab is merely one possible interface to that service. The best possible interface to that service is often, if not usually, going to be a native app, not a web app."
—
http://daringfireball.net/2013/04/web_apps_native_apps
These two sentences succinctly describe not the future of technology but the present. The future is that more and more companies/people will “get” this.
There’s a couple of things wrong with this method definition.
def retreive_videos(query, page, per_page, mtype, vtype, include_expired, category, state, city, order = nil)
First, the term ‘retrieve’ is spelled wrong. It’s an honest mistake but these things really bug me when I run across them. Second, with this many parameters it may be time to think about passing in a Hash instead of a long list like this.
Support for attributed strings is great in iOS6. But what if you need to support iOS5? Dealing with attributed strings in iOS5 is a world of hurt. After many hours of working with 3rd-party classes and research on stackoverflow.com I may have finally figured out how to do attributed strings natively in iOS5.
CATextLayer *textLayer = [CATextLayer layer];
textLayer.backgroundColor = [UIColor whiteColor].CGColor;
textLayer.frame = CGRectMake(20, 20, 200, 100);
textLayer.contentsScale = [[UIScreen mainScreen] scale];
CTFontRef fontFace = CTFontCreateWithName((__bridge CFStringRef)(@"HelfaSemiBold"), 24.0, NULL);
NSMutableDictionary *attributes = [[NSMutableDictionary alloc] init];
[attributes setObject:(__bridge id)fontFace forKey:(NSString*)kCTFontAttributeName];
[attributes setObject:[UIColor blackColor] forKey:(NSString*)kCTForegroundColorAttributeName];
NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:@"Lorem Ipsum" attributes:attributes];
textLayer.string = attrStr;
[self.view.layer addSublayer:textLayer];
I use three different todo list apps and this causes me no small amount of anxiety. As a minimalist I think three is too many list apps to be using. It’s inefficient and potentially dangerous if one app gets forgotten and an important task goes undone. Disaster!
Things
I’ve been using the desktop version of Things for years to keep my work projects in order. I’m a big believer in the GTD methodology and Things is great for managing a GTD-style workflow.
Reminders
Being the official Apple list app Reminders carries a certain amount of weight. It’s tightly integrated with Siri and Calendar and the rest of iOS/OS X. Managing multiple lists is easy. I currently use Reminders to manage several secondary lists like “movies to watch”, “books to read”, “apps to try”, and “home maintenance tasks”.
Clear
Clear looks and feels fantastic and is fun to use. I’ve actually tried to quit using this app a few times but I always find myself going back to it. When I need to quickly create a list of a few items that I know I’m going to address in the very near future I use Clear every single time. Being able to easily insert new items at any position in the list is super convenient and cannot be underestimated
I have spent a lot of time thinking about which app to consolidate everything to. Which app should stand as the champion and take its place as the sole todo list app on my home screen?
Through the process of writing this post—which was originally going to be the justification for developing my own app—I rediscovered tags in Things. I have used tags in Things before but I stopped because I felt my use of them was adding more noise than signal. Looking at the current version of Things on both the Mac and iOS I found using the simple built-in ‘home’ and ‘work’ tags to be fast and easy. And it provides the critical information I need to keep the two contexts separate. Both the Mac and iOS app make it easy to filter based on context. An added bonus is Things’ integration with Reminders. Anything added into the Reminders list that’s not time or location bound appears in Things’ inbox where I can file it away later however I choose.
So the winner is Things. It will take its rightful place on my home screen and Reminders will get moved to the Apple folder and will be something I interact with primarily through Siri. Clear will most likely get moved to my secondary screen and will continue to be used for short-lived lists.
From Gruber’s Ceding the Crown
The desire for the “Oh, how the mighty Apple has fallen” narrative is so strong that the narrative is simply being stated as fact, evidence to the contrary be damned. It’s reported as true simply because they want it to be true.
Yes, but not a new phenomenon. We’ve seen this same thing played out with IBM and Microsoft before. Why do many tech journalists want the “Apple is Falling” narrative to be true? One possible reason is that everyone wants to believe they’re a visionary. That they can see trends before they happen. It’s much easier to predict the eventual downfall of a giant company than the rising of a start up. Everything that goes up does eventually come down. Predictions of the demise of IBM, Microsoft and now Apple eventually turn out to be true simply by the passage of time. It has yet to happen in Apple’s case though. But everyone wants to say they were the first to pick up on it. That they saw the signs no one else could read.