Apps for iPhone: My top 10

When speaking to other mobile geeks the conversation always ends up with asking the question "which is your killer app?". I never seem to find a good answer to that question. Mainly because I have too many killer apps, but also because my killer apps are those that fit in to my own life in a perfect way. They're not sexy in any way and they seldom come with a cool design. Its all in the functionality. These conversations usually end up with me trying to explain why my calendar is so useful because it syncs to five different calendars or why taking pictures of everything with Evernote really makes my life easier. Which usually bores the living daylight of anyone and the conversation quickly switches to them showing me a new game of theirs.

This post is about my favorite 10 apps for the iPhone and naturally these are the ones I use the most and therefore have on my start screen.

iPhone startscreen

Anyway, here is my list of my top apps for the iPhone right now. I'll give a quick explanation of the apps, but I'll save the details for other blog posts.

  1. RTM (Remember The Milk)
    This app i simply amazing. It keeps track of all my to-do's and it syncs to a web application, which makes keeping track of everything easy. It even keeps track of where to do stuff. On the Android-app you can set an alarm to go off when you are near the place of the task and I expect this with be in the iPhone-app soon.
  2. Twitter
    I have a really hard time choosing my Twitter-client but right now I'm in to Twitter. I also TweetDeck, HootSuite and Seesmic installed.
  3. MobileRSS
    A free reader for keeping track of all blogs I subscribe to.
  4. Instapaper
    All links saved for reading later. All my browsers have the “Read later”-button installed and when pressed the items show up in Instapaper, either on my phone or on the web application.
  5. Evernote
    This is the app that, apart from RTM, I could not live without. I take photos of everything I have to remember and Evernote OCR-scans all text which makes it searchable for later. In combination with the desktop client this i powerful.
  6. Calendar
    I know, it’s boring including the calendar but this is where I live my life. I keep track of everything.
  7. Facebook
    Had to include this but my main social network is Twitter. But I still check in to Facebook from time to time to keep up with my friends there.
  8. Dropbox
    Download to your computer and whatever files you put in the Dropbox folder shows up on all connected computers and on your phone.
  9. 1Password and/or Passpack
    Passpack is my main place for all passwords. I actually have unique paswords for all services, and this is possible when using Passpack. Though the mobile client is slow and doesn’t work in offline mode. For this I use 1Password.
  10. RunKeeper
    I try to work out some times and RunKeeper helps me keep track of my progress.

The apps that didn't quite make it

  • iPod
    I listen to quite a lot of sound books and also I always keep a few movies in here for those moments...
  • Spotify
    Will probably be in the top 10 as soon a I have my iPhone 4 with multitasking. Right now i just don't use it on my phone.
  • Safari
    Probably the app I use the most, but always as in-browser in another app so it just doesn't qualify to the list.
  • Camera
    Like Safari I probably use this quite a lot, but often from another application.
  • OurGroceries
    Just downloaded and hardly tested but worth mentioning. When my wife gets her iPhone this app will probably kick in and simplify our shopping as well as other stuff.
  • TripIt
    Really cool app for travelling. It even has offline storage of everything you need to know for your trip. Unfortunately I don't travel that much.
  • Nordea
    The app for my bank. Quite good for other stuff too, like currency and keeping track of expenses.

Keeping track of 129 blogs

I currently subscribe to 129 blogs. As you can imagine this works up to quite a bit to read, and if I miss a day I'll probably end up with 150+ blog posts to read, since some of my subscriptions are quite productive.

My wife once asked me how I have the time to visit all these blogs. Well my answer was: "I don't". As most of you know a rss reader is essential when keeping track of many blogs. Since most blogs have quite a few comments to every post I sometimes visit the actual blog, but mostly I'm in my tool. The tool I use is Google Reader and on my iPhone I have MobileRSS. In my case Google Reader works like a charm. I've tried a few desktop applications but I always seem to come back to the web based reader.

To keep track of everything i have a quite simple system. I keep my the subscriptions in three folders named 1, 2 and 3.

In folder "1" I keep the blog posts I read every day. These are the interesting ones, and more importantly they are always interesting. I seldom scan these posting, I read them every time. Usually I'll find maybe 5 posts here every day, which makes it quite easy to read. Most of the blogs here belongs to friends or has in some other way got my attention. Interestingly enough no blogs about development made it here.

In folder "2" I keep the interesting stuff. I don’t have to read this stuff every day, but when I do I usually open every post and read a few lines to quickly determine if it's for me or not.

In folder "3" all other stuff goes. I usually scan the headers in this folder to see if the topic is interesting or not. I open some posts and read them but in the end i press "mark all as read" and I'm done.

The way I want it to work is that every blog has to prove itself to me. I usually start with putting them i "3" and if there good enough I'll just move them to "2" and so on.

Anyway, that my take on the whole blog reading issue. Do you have a better way?


Using jQuery to solve problems: automatic checkbox checking

Recently I have really been getting into the javascript library jQuery. The more I learn the more excited I get about how slick it is and so easy to use. It can really provide some rally cool features to your website and also provide a good way for me as a programmer to circumvent some tasks that can be hard to accomplish using server side programming.

Today I was presented with a task on an existing website using the DotNetNuke publishing platform. The customer has created a form using a module in the framework. The form is used to order some stuff and the visitor has to click a number of check boxes depending on what they want to order. There is also ha a bunch of pages with information about the products. Each page has a direct link on i to get to the order page. Now, if the visitor clicks this link the check box for that particular product should be checked, just to make thing easier.

I have no intention on going in to the framework to change the behaviour of the module so I thought I'd try some jQuery on this.

First off the only thing I really know is that the order form will have a header like this "<h1>Order form</h1>" (potentially the module can exist on multiple pages, even multiple times on the same page) and that the product page will have the product name in the url, which is also the text of the check box.

My idea was that first check if the order form exist on the page by looking for the header then check the referrer url and compare this to the check box names. This is the code:

if($("h1:contains(Order form)"))

// Automatically set checkboxes if the visitor previously viewed
// a page named the same as the checkbox
function setOrderCheckboxes()
// The text element is always a sibling directly following the checkbox
var checkboxName = $(this).next().text();

// DNN url replaces characters in PageName
checkboxName = checkboxName.replace(" ", "").replace("-", "");

if(document.referrer.indexOf(checkboxName) != -1)
$(this).attr("checked", true);

Pretty slick right?

Using jQuery: Looping an array of objects misstake

I recently spent some time to get some jQuery code to work, but I just couldn't. After a while I realised my mistake and thought this would make a great blog post (mostly so I'll remember this myself).

The task was to find out how many paragraphs contained a certain text. For the purpose of this example lets say "xxx".

Here is the
jQuery I started out with (sorry about missing the indenting):

var pArray= $("p");

for(var i = 0; i <
pArray.length; i++)
pArray[i].text().indexOf("xxx") != -1)
// Do something...

This crashed since
text() wasn't a function. Strange since it's in the jQury reference. I got it to work with textContent() instead but not in IE. After a while I realised my mistake. The pArray[i] is not a jQuery object, so adding $() did the trick. This was the result:

pArray= $("p");

for(var i = 0; i <
pArray.length; i++)
pArray[i]).text().indexOf("xxx") != -1)
// Do something...

Now don't forget this!

But wait! Sometimes you have to stop and think what you are doing. jQuery is more powerful than you think. Consider the following code, which accomplishes the same thing:


Reminder to self: always stop and think and read the spec...



While surfing around the other day I ran into a really cool tool called TweetMyMac. The tool enables you to send commands to the computer through Twitter to make it take a picture with iSight, say something funny or send a screen shot of whats going on at the moment. Really fun to play around with, but when I stretch my mind to find something useful to do with this I come up blank. But never the less, it's really fun.

It's quite easy to set up. You'll need to set up a new Twitter account only used for this task (prefereably one with a hidden timeline) and then see to it that you follow your main account from the new one. Then download TweetMyMac from the website and install. Now you're ready to go. Follow the instructions on TweetMyMac to be sure to get it all right. A misstake could actually let others send commands to your computer. I would not recommend anyone to allow custom shell commands though (optional) since this seems a bit unsecure.

A full list of commands can be found on the website (although some from the latest update are not inluded, but just look at the changelog).

Some commands can be quite useful, like "battery" which returns the current battery status or "shutdown" which powers down the computer. But for me, these are still just fun to play around with since I carry my MacBook with me almost all the time and it's my main computer at home. But for a desktop computer I guess it could be great to see if the task is finished (by screenshot) and then power it down. But even there a RDC is far better.

Anyway, I now keep a list of all commands with me in my mobile so I can have fun when I leave the room and then have my computer say something like "Hello, I am a computer and I can talk". It suprises people quite a lot.

Try it out and have fun and please comment this post if you find some cool way to use this.


Flush DNS on the Mac

If you want to flush the DNS on you mac it's pretty simple. Open the Terminal window and type

dscacheutil -flushcache

This command applies to all user of Leopard. For other users you use

lookupd -flushcahe

This command is the equivalent of the Windows command "ipconfig /flushdns".


Mac OS X Terminal Commands

I am a programmer and therefor I just have to have control over what's happening under the cover on my computer.

Mac OS X is really Unix-based and when using the Terminal window you can use different commands from the Unix world to talk to your computer and make it do things under the cover. I am not really a Unix/Linux programmer, although I have had some experience in this. This made me look for a simple chart of some sort that shows the most simple commands accessible to me when using Terminal. I found a quite good pdf containing just what I needed. So now I am looking under the cover of Mac OS X. I don't really know I'll be doing, but maby I'll do some posting of stuff I do here.

You can view the pdf here.