AppStore Icon Quest

Skip to the prize if you don’t care how I did it.

In the beginning…

Brett Terpstra wrote about how to Instantly grab a high-res icon for any iOS app and I started it using the automator application straight away for a project1 I’m working on.

It’s really hard to find consistently sized iOS icons, I really wanted the Omnifocus for iPhone icon but it just wasn’t being returned in the search, it kept returning the iPad icon.

I won’t be defeated that easily!

I tried many searches and went through pages of icons but couldn’t find anything above 512×512, unacceptable!

Then I got my breadcrumb, I spotted a comment on Brett’s post mentioning that if I change iPadSoftware for macSoftware it would be possible to find the Mac version of the icon. So how could I find the bloody iPhone icon? Simple really, I switched iPadsoftware for software! Thanks StackOverflow for that piece of the jigsaw.

After working out how to amend the search I finally got the result I wanted, a nice 1024×1024 Omnifocus for iPhone icon but I was on a roll. What if I wanted to do that again, How could I improve the experience? wouldn’t it be nice to have a menu to choose what type of icon to search for? Of course it would!

Down the ruby encrusted apple-hole I go

I knew what I wanted to do, the next question was how. I’d never written a line of Ruby and had only created the most basic Automator applications to batch rename some files.

I thought changing the Ruby script would be the hardest part, it wasn’t too bad. From the start I had the idea to pass something like 1|Omnifocus to the Ruby script, use the prefix to determine the software to search for and the remainder would be the search term.

After working out the syntax for a case statement I dropped that in like so:

case terms[0..0]
      when "1"; storeselected="software"
      when "2"; storeselected="iPadSoftware"
      when "3"; storeselected="software,iPadSoftware"
      when "4"; storeselected="macSoftware"
end

Next I needed someway of splitting the string in two. Usually I’d use a left or mid or substr function but Ruby was little different to what I’m used to, don’t ask me to explain it:

terms[2..-1]

So that gave me the search term, then for some reason I thought I should use RegEx – I’d never used it before, I think Merlin Mann must have mentioned it on Back to Work – to check if a prefix had been chosen. I used the fantastic Rubular to create this little gem:

/\A\d[|]{1}/

This matched the first number plus the pipe (|) which I could then use this with my case statement. This meant if the user missed out the prefix it will just search all types.

Bring out the Automator!

So far so good, but my method of input still relies on the prefix being typed in. Not good.

I needed a menu, the ‘choose from list’ combined with ‘filter paragraphs’ was supposed to do this but I couldn’t get it working the way I wanted. So I had to break out the AppleScript.

The idea was to present a friendly menu like this

  • 1| iPhone
  • 2| iPad
  • 3| iOS
  • 4| Mac

I had to rely on some fine searching to get what I needed and even then I found the syntax and data types pretty frustrating. What I would normally do in one line of code took three.

set SubString to result as string
set SubString to text 1 thru 2 of SubString
return SubString as string

So what I’d done was substring the result to get the prefix, e.g. 1| and pass it to the next action. I also made sure if the user pressed cancel it would quit instead of going to the next action. So the first Applescript was set:

on run
    local SubString

    set result to (choose from list {"1| iPhone", "2| iPad", "3| iOS", "4| Mac"} with prompt "Please select the type of icon you'd like to search for" without multiple selections allowed and empty selection allowed)

    if result is false then
        quit
    else
        set SubString to result as string
        set SubString to text 1 thru 2 of SubString
        return SubString as string
    end if

end run

This ended up simplifying the ruby script and killing my nice little RegEx :(

Invisibility? You stole that from Lord of the Rings!

Next up was the dialog box, initially I used the action ‘Ask for Text’ which took the text select from the menu and put it input box of the Application Name form. This mean the text was selected so as soon as you typed it dissapeared, unless you press or click to the right of the text. I forgot to do that everytime. Unacceptable!

So I had to find a way of invisibly passing the parameter. Back to Applescript.

on run {input, parameters}
    set prefix to input as string
    set term to the text returned of (display dialog "Application name, be as specific as possible" default answer "" buttons {"OK"} default button 1)

    return prefix & term
end run

As you can see the Applescript takes input which is the prefix from the menu. Instead of displaying it, it just concatenates it with the text that user types into the dialog box. Nice little trick and no Nazgûl to be seen, suck on that Frodo.

As this Automator application only has 2 actions it doesn’t require too much parsing in the script but in theory you could chain multiple menus and dialogs and process it with the script.

Ruby, ruby, ruby, ruby you haven’t change much

I’ve only really added a few lines of code to this section to select the right search type and search term.

#!/usr/bin/ruby
# encoding: utf-8
#

%w[net/http open-uri cgi].each do |filename|
    require filename
end

def find_icon(terms)

# Start of new code
    case terms[0..0]
        when "1"; storeselected="software" 
        when "2"; storeselected="iPadSoftware"
        when "3"; storeselected="software,iPadSoftware"
        when "4"; storeselected="macSoftware"
    end  
    url = URI.parse("http://itunes.apple.com/search?term=#{CGI.escape(terms[2..-1])}&entity=#{storeselected}")
# End of new code

    res = Net::HTTP.get_response(url).body
    match = res.match(/"artworkUrl512":"(.*?)",/)
    unless match.nil?
        return match[1]
    else
        return false
    end
end

terms = ARGV.join(" ")
icon_url = find_icon(terms)
unless icon_url
    puts "Error: failed to locate iTunes url. You may need to adjust your search terms."
exit
end
url = URI.parse(icon_url)
target = File.expand_path("~/Desktop/"+terms.gsub(/[^a-z0-9]+/i,'-')+"."+icon_url.match(/\.(jpg|png)$/)[1])
begin
    open(url) do |f|
        File.open(target,'w+') do |file|
            file.puts f.read
        end
    puts "Icon saved to #{target}."
end
rescue
    puts "Error: failed to save icon."
end

Quest Over, collect your prize

Download the (zipped) AppStoreIcon.app and give it a try. Thanks again to Brett Terpstra for getting me start and a few tips along the way.

Take a look at this little clarify guide if you’re struggling to understand how it works. Ok so it’s really easy I just wanted to try out clarify, it really easy to use.

I’m sure this could be improved, for example I’d like to do a version that adds the transparent mask using ImageMagick, maybe next time. Here are the unmasked icons side by side, see there is a difference, slightly… :D

Omnifocus-for-iPadOmnifocus-for-iPhone

1. I need some nice icons and got a little side tracked…

Posted in Coding

Capture, Process, Organise, Review, Do – but how?!

As I’ve mentioned briefly I got into GTD in 2004, but I’ve always struggled with organising and reviewing.

I resisted a heavy-weight task manager like Things or Omnifocus, but in October 2012 I finally got Omnifocus for iPhone. It’s pretty good for capturing tasks and organising tasks but it was terrible for reviews, it didn’t take long before I was overwhelmed.

I got the iPad Mini and Omnifocus for iPad app as I’d heard good things about using it for reviews and it was great but I’m getting ahead of myself.

Back to paper

A few years before my task management went digital I was using paper notebooks and really struggling. I tried a few versions of Autofocus back when Mark Forster was developing it, I haven’t tried Final Version. I won’t go into that too much, but needless to say it involved a lot of rewriting of lists and, for me, not a lot of getting anything done.

I decided to look for a digital task manager, I tried Todo and stuck with it for a few months but it quickly became unmanageable and I rarely opened it. This me to believe I needed more power and to Omnifocus.

I need a daily planner!

A pile of emergency task planners

None of these apps really helped me with my daily planning, I was spending too much time shuffling tasks and struggling to decide what needed to be done and when. So I decided I need some help with this, the Emergent Task Planner (ETP) by David Seah fit the bill.

It’s a single sheet paper day planner, at the beginning of the day you write down your key tasks for the day (3 is the suggested number), then you enter your scheduled meetings in the planner section and finally you assign the remaining time to your key tasks. You might realise at this point, as Brain Cutlery did that, you don’t have the time to do the tasks you set yourself and you have to rethink your day.

Once you’ve rearranged meetings and/or dropped tasks you’re ready to go. Throughout the day you can use the notes section to record any interruptions, new tasks or just doodle. It’s very likely you day won’t go to plan!

Atypical day

A typical day started with pulling out a photocopy of the pretty colour ETP. The first thing I would do was write down my top 3 outcomes, if they didn’t come to mind I would review my task manager. Then I would block out any appointments and schedule time on each of the tasks. Through the day I would scribble notes, tasks, reminders, draft plans, draw quick diagrams, move meetings, Mindmap and occasionally tick off how much time I actually spent on a task. By the end of the planner was a mess.

It also became clear that most days didn’t go to plan, but this was where the ETP was great. You could spot problems very early and change your plans based on whatever the day threw at you.

The ETP was very useful but I found I wasn’t doing that much with what I had produced at the end of the day and my review process was non existent. So it was quite common for my top 3 outcome to drag on longer than they should have and any notes or tasks I’d noted to slip away.

I hate paper, I need a journal

So after picking up Omnifocus I decided it was time to break free from the shackles of the physical world and go completely digital. I had my iPhone in my pocket and my iPad as my digital notepad. I became the guy in the office who produced no paper whatsoever.

To help me review my day and progress I decided to take up journalling using Day One. I took the parts of ETP that I thought worked well for the year I used the paper ETP. So I took the outcome setting, dropped the schedule – which I would later realise was a mistake – and kept taking notes in a slightly more structured way.

Joining it back together

That was 5 months ago and I’m still not happy because there’s friction in the system. And it came in the form of the newest additon, the iPad, typing took too long, and was too restricted, a bluetooth keyboard didn’t really solve that problem either. It was too fiddly, unlocking the screen, finding the app, find my place, typing, moving sections of text around and generally getting bogged down.

So my experiment is coming to an end and I’m going to try something different. I got myself a Noteboard, which is a pocketable, portable, whiteboard. The new plan:

  1. Sketch the basic layout of the ETP onto a section of the Noteboard.
  2. Write my key outcomes for the day, using one ‘card’ per outcome.
  3. Enter my appointments into the grid side.
  4. Split the remaining time my outcomes.
  5. I was probably too ambitious in step so I’ll make appropriate adjustments and maybe reschedule appointments.
  6. Through the day I’ll use the Dash/Plus system for the notes I capture, this will keep them structured.
  7. At the end of the day I’ll process my notes either by capturing them in Omnifocus (via Drafts), making notes in Trunk Notes, and logging my day outcomes and my progress against them in Day One.
  8. Then I’ll wipe the Noteboard clean leaving just the headings and structure of it.

Sounds simple, and based on the example below it is, I’ll let you know how it goes.

My noteboard and pens

What did I learn for all this pissing about?

  • I’m not ready to go completely digital.
  • Make a change and stick with it and take the best bits.
  • There isn’t a perfect system, stop looking for one.
  • Structure is important.
  • Spend as little time as possible messing around with task managers, you probably know what you need to do.
  • Expect your plans to be rewritten and torn up 5 minutes after you make them.
  • Celebrate your successes, getting one thing on your list done is sometimes a success!
  • I really don’t like mess, I’m a little OCD.
  • Capture what you learned from you day.
  • Review daily and eventually your weekly review will be easy! Hopefully…
  • Rambling blog posts are sometimes useful.
  • ETP will remain part of my toolbox but will take a backseat rather than being throw from a moving vehicle.
Posted in Productivity

AppShopper and App Addiction

AppShopperMy name is Matt McCabe and I’m an App addict. I’ve been trying to find something to manage my addiction. I was using AppsFire for a few months but push notifications on price drops didn’t seem to work and app seemed a bit spammy.

Since Apple dropped (or hid) the wish list feature on iTunes to force more impulse buying I really needed a way to store all the apps I wanted (Thanks Podcasts and RSS!). That way I can indulge my other addiction, comparing the features of things in too much detail, thanks To Brett Terpstra for iTextEditors1. The problem with the App Store is that the pricing is very inconsistent.

What I really needed was an app that worked and maybe had some of the features of camelcamelcamel to help me avoid paying above the odds and give me a little buffer from impulse buys.

I really wanted AppShopper but it had been pulled by Apple. But a new version called AppShopper Social has made it’s way into the App Store. It has some Social features which look like they’re in the very early development stages, the rest of the App looks the same.

Apart for the missing features what I’d really like is way to keep notes, so I know where the recommendation came from so I can give credit. I’m still keeping these notes in a separate text file.

I’m loneswordsman on AppShopper so feel free to add me.

1 I’m holding out for buying more text editors until I try out Trunk Notes 3

Posted in Picks

Productivity Tools Overview

I find myself stumbling to start writing so thought it would be good to get started with a quick overview of my most used useful productivity devices and apps and how I use them. I’ll get into my ‘system’ in another post.

Devices

My iPad Mini and iPhone 4S

iPhone

My first iPhone was an iPhone 3GS and that got replaced with the iPhone 4S when that came out. Before that I had various flip phones but they didn’t help me to be more productive. I was still in the land of paper to do lists and occasional paper calendars and organisers. I was certainly not organised in any way.

The portability of the iPhone combined with the apps and always on connection are what really drive me.

It’s worth mentioning the Mobile networks I’ve been, I started with O2 on a pretty poor £35 per month plan. But now I’m taking the buy the phone then shop around for a good contract with unlimited data, Three and GiffGaff are the best options in the UK, although it’s not without problems.

iPad Mini

I got an iPad Mini as soon as I could, we had an iPad 2 in the house and I always felt it was a little too big. I kept reading about all these great apps on the iPad but I couldn’t use them. I even considered moving outside Apple and maybe getting a Nexus 7. But as with the iPhone, it’s all about the apps. The smaller form factor really sold me. I just wish I’d waited for the cellular version. More on that later.

iMac

Although I do have a Mac in the house (2007 iMac), it rarely gets used and has been relegated to an archiving / file server. I’m reluctant to buy any apps or spend time making it more efficient as I don’t use it unless I really have to. I’m typing this on my iPad with a bluetooth keyboard but did use the Mac for some of the fiddlier editing, like adding in affiliate links.

Apps

iPhone HomescreeniPhone Homescreen

It’s worth mentioning a few of the apps I used in the early days, Todo by Appigo by is a worthy mention but I eventually dropped it in favour of Omnifocus. I used the Built-in Reminders app and loved the shared reminders functionality but that was about it.

Just a note on the apps I tend to chose, I prefer universal apps that sync.

Omnifocus

Omnifocus is my main task and project manager, although that’s project in the GTD sense. I resisted Omnifocus for a long time because I’m cheap but gradually after trying many alternatives I tried it out and found it was worth the money. First with the iPhone app which worked pretty well on it’s own for a while, but I was finding weekly reviews very difficult to do and I’d heard a lot of good things about the iPad app so finally got it with my shiny new iPad Mini. I’m so glad I did it has made things so much clearer combined with some best practices like using start date and putting everything I’m not working on, on hold.

And although I’ve used the trial version of the Mac app and I’m in the testing group for Omnifocus 2 it’s not very likely I’m going to be using it on the Mac enough to justify the cost. Although it does mean I miss some of nice features like archiving and custom perspectives.

Day One

I started using Day One the journaling app at the beginning of this year and although I haven’t kept my personal journal up very well I’ve found a lot of other uses for it including capturing my daily outcomes and progress against them and use Brett Terpstra’s Excellent Slogger. It’s definitely an app I want to make more use of.

Drafts

Drafts is bit of geeky app as it’s essentially a lightweight app for writing text and the sending it somewhere. This could be to Omnifocus (via Maildrop) or directly to an app. It’s also possible to write custom URL schemes to launch apps that support it. The main reason for using Draft is speed of capture, especially when you’re not sure where the text you’re typing is going to end up. My only criticism is the lack of shortcut keys for Markdown.

TextExpander touch

I haven’t used TextExpander for too long as it’s is limited to journal the templates and the occasional markdown snippet. As with Drafts I want to use this more. I’m sure as I blog more I’ll see more of a need.

Trunk Notes

After much research I chose Trunk Notes as my text editor of choice due to it’s markdown support, scripting and wiki functionality. It’s worked out ok so far, but the are some friction points.

iThoughtsHD

I’ve always found mind mapping a good way to get my thoughts out of my head but I struggled with paper mind mapping as they quickly became a complete mess. iThoughtsHD (on the iPad) helps with that and it’s one of those rare apps that is being actively developed and has regular updates.

Feedly

I consider RSS feeds an important part of my productivity as it’s one of the main ways I keep up to date with interesting and informative blogs. Feedly helps me to whizz through my feeds with a flick of my thumb. Feedly is my skimming app, I don’t do much reading in it and it got a lot more popular since Google Reader announced it was shutting up shop.

Pocket

Pocket is where most of my reading takes place and it usually happens on the iPad. If there are actions off the back of my reading it usually goes to Omnifocus as an action and rarely the whole article. I use browser plugins to get things into Pocket and it’s an important part of my research workflow.

DropBox

I don’t give DropBox a lot of credit but it does join a lot of things together for me, mainly iThoughtsHD and Trunk Notes.

Books

Getting Things Done

I first read Getting Things Done in 2004 and dived right into the whole framework, the only thing that really stuck with me was capture and processing. I’ve never been good at reviews and the longer terms goals. I sold the book last year and got an ebook version but I find it hard going adopting the whole system.

Getting Results the Agile Results

I can’t remember exactly when I came across Agile Results but it was probably through Lifehacker. What I like about it is the fact I can pick and choose which parts work for me. So I make a lot of use of the Rule of 3 and my week pattern matches their suggestion and I did try Hot Spots although it didn’t really work for me. I find it works well with GTD, although, as with GTD I haven’t gone that deep into it.

It’s All Too Much

Although not specifically related to productivity I’m starting to think de-cluttering is an important step.

What isn’t working

Life goals / Long term planning

I haven’t found a good workflow for Long term planning, perhaps it just because its really hard to do? Both GTD and Agile Result cover these, so I need to do some deeper reading. More on this in a later post.

Syncing

I use my iPad Mini a lot more than I expected to, and usually this means I’m using it outside Wifi and I can’t use tethering. Trunk Notes also has manual sync with DropBox and I often forget to sync and end up with 2 versions of a files. Omnifocus gets out of sync during the day so I tick things off on my iPad but they aren’t on my iPhone, although I use the location services on there quite a lot. Worst case this usually means repeating items are duplicated.

Bye bye Google Reader

Not a huge problem as Feedly looks like it has it’s own syncing in the pipeline.

Missing links

I need some sort of drawing / notetaking app. Grafio is looking like the best contender or possibly Notability.

Thanks

That’s it for now, I’m sure I’ll update or add to this page, or maybe I’ll just preserve and see where I am in 6 months.

Posted in Productivity

Moves app

imageI’ve used tracking apps like Endomondo and Runkeeper to track cycling routes and times. About half the time I forgot to turn it on or off so completely messed up my times. So I was really looking for something that requires less effort to use. Looking at expensive fitness bands was next, but they seemed overkill for my needs.

Then I heard about Moves which seemed to fill a need I didn’t know I had. Moves is an app you run in the background and it tracks your GPS data and intelligently guesses if you’re walking, running, cycling or on transportation as well as the locations you spend time in.

This gives a really powerful insight into how you spent your day. Did you exercise more than normal? Did you go places you wouldn’t normally? Or even, did you even leave the house?

For someone with a very bad short term memory this is really useful and helps motivate me to exercise and explore more. Although I’m sure Moves isn’t as accurate as the other solutions the data it provides really helps change behaviour beyond just exercising.

Best of all, it’s free, although I do worry that it’s going to be snapped up by Google and killed off. The image on the right is an example of a typical day and the sort of tracking you can get out of Moves. Well worth trying out although worth noting battery life is impacted but not noticeably.

Posted in Picks

In progress…

I found that I needed a place to write longer form blog posts with images and all the rest of it. So this page is getting a reboot. I’m hoping I’ll start writing something in the next month but I’m not making any promises.

Posted in Announcements