Jay Holler’s Blog

Icon

A technologist living in Philadelphia

Nagios and iPhone push notifications

I have a friend who works for an ISP and a few months back he told me about how he had wrangled Nagios into monitoring their servers and networking equipment. His story piqued my interest, and last night I finally downloaded Nagios, and configured it to monitor my 24×7 Linux host that sits behind my TV providing a number of different services to my internal network. Installing Nagios from source was simple with the instructions at http://www.nagios.org, and within minutes I was up and running. I had a little trouble with setting up auth_digest authentication for apache2 but I think that was mostly because that module wasn’t enabled by default. After I got the main configuration up and running, and I was able to access the web interface, I began to poke around. While I was doing this I got an email notification that my disk space was over 20%. I then thought, wouldn’t this be cool if I could turn this into a push notification?
I already set up a script provided by http://prowl.weks.net/static/prowl.pl, and have that working to notify me when a new TV show is added to my Linux host. I found that the settings for notifications in Nagios were located at /usr/local/nagios/etc/objects/commands.cfg. In the notifications section, I added the following below the two entries for email notifications, which I included:

# ‘notify-host-by-email’ command definition
define command{
command_name notify-host-by-email
command_line /usr/bin/printf “%b” “***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n” | /usr/bin/mail -s “** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **” $CONTACTEMAIL$
}

# ‘notify-service-by-email’ command definition
define command{
command_name notify-service-by-email
command_line /usr/bin/printf “%b” “***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$” | /usr/bin/mail -s “** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **” $CONTACTEMAIL$
}

# ‘notify-host-by-prowl’ command definition
define command{
command_name notify-host-by-prowl
command_line /usr/local/bin/prowl.pl -application=”Nagios” -event=”** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **” -notification=”Host: $HOSTNAME$ State: $HOSTSTATE$ Address: $HOSTADDRESS$ Info: $HOSTOUTPUT$ Date/Time: $LONGDATETIME$” -priority=1 -apikey=THISISWHEREMYAPIKEYWOULDGO
}

# ‘notify-service-by-prowl’ command definition
define command{
command_name notify-service-by-prowl
command_line /usr/local/bin/prowl.pl -application=”Nagios” -event=”** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **” -notification=”Host: $HOSTNAME$ State: $HOSTSTATE$ Address: $HOSTADDRESS$ Info: $HOSTOUTPUT$ Date/Time: $LONGDATETIME$” -priority=1 -apikey=THISISWHEREMYAPIKEYWOULDGO
}

So now, when Nagios sends a notification, I get a pop up instantly on my phone that looks something like this:

Nagios iPhone Prowl

Nagios iPhone Prowl

Righteous!!

Filed under: Linux, iPhone , ,

moveAvis.sh updated

UPDATE: I made some improvements and will now catch both shows that start with letters or numbers.
ANOTHER UPDATE: Turns out i was truncating the show name, it is fixed and I have updated the script and link to pastie.org too.

I updated my script to be totally generic now. It does not depend on matching the names of any specific TV shows now, since I know the filename will always contain SxxExx to indicate Season and Episode, I filter that way. If the directory for that show already exists it will simply move the file there, if it doesn’t it will create a new one. Otherwise, if it isn’t a TV show, it goes to the Movie directory. Also, since I’m now using ushare to serve media to my xbox 360, I put a wget call in to the ushare web port to update the files so the xbox picks them up immediately over uPnP.

#!/bin/bash
#
#/usr/local/bin/moveAVIs.sh
#
# Jay Holler 09-10-2009
# Find *.avi files in the Downloads directory and move them to
# the appropriate folder on the NFS share

storageDir=/storage/TV

cd /home/jayholler/Downloads

for i in *.avi
do
myFile=”$i”

if [[ "$myFile" =~ ([A-Za-z0-9\.]*)\.(S..E..).avi ]] ; then
File=${BASH_REMATCH[2]}.avi
PreShowName=${BASH_REMATCH[1]}
ShowName=$(echo $PreShowName | sed ’s/\./ /g’)
echo “[*] A new episode of $ShowName is ready for your enjoyment: $File” > /tmp/emailmessage.txt && sleep 2
[ -d "$storageDir/$ShowName" ] || mkdir -v “$storageDir/$ShowName”
mv -v $myFile “$storageDir/$ShowName/$File”
wget http://localhost:49153/web/ushare.cgi?action=refresh -o /dev/null -P /dev/null
/usr/local/bin/email.sh
else
echo “[+] $myFile does not match our TV shows, pushing it to /storage/Movies on lunchbox” > /tmp/emailmessage.txt
mv -v “$myFile” /storage/Movies/$myFile
/usr/local/bin/email.sh
fi
done
exit 0

Here’s the same thing in nicer formatting: http://www.pastie.org/612353

Filed under: Uncategorized , ,

Updating my scripts

I’m always looking for ways to improve my current media setup, I can never be satisfied. After speaking with a co-worker I discovered I could change the format of one of my scripts and I wound up cutting the number of lines from 533 to 234! Here is the new and improved script:

#!/bin/bash
#
#/usr/local/bin/moveAVIs.sh
#
# Jay Holler 10-29-2008
# A script to find *.AVI files in the Downloads directory and move them to
# the appropriate folder on the NFS share at lunchbox (192.168.1.128)

storageDir=/storage/TV

MOVE_FILE() {
echo “[*] A new episode of $ShowName is ready for your enjoyment: $File” > /tmp/emailmessage.txt && sleep 2
[ -d "$storageDir/$ShowName" ] || mkdir -v “$storageDir/$ShowName”
mv -v $myFile “$storageDir/$ShowName/$File”
S=$(echo $File | sed -e ’s/S0\(.\).*.AVI/\1/’)
E=$(echo $File | sed -e ’s/S..E\(..\).*.AVI/\1/’)
if [ $E -lt 10 ]; then
episode=$(echo $E | sed -e ’s/0\(.\)/\1/’)
/usr/local/bin/tvxml.sh “$ShowName” $S $episode TV $EpisodeID
else
/usr/local/bin/tvxml.sh “$ShowName” $S $E TV $EpisodeID
fi
wget http://localhost:49153/web/ushare.cgi?action=refresh -o /dev/null -P /dev/null
/usr/local/bin/email.sh
exit 0
}

## Look for AVI files and mv -v them over to the NFS Share on lunchbox
## Look for the shows we watch, and move files to the right place.
cd /home/jayholler/Downloads
for i in *.[A,a][V,v][I,i]
do
myFile=`echo $i | tr [:lower:] [:upper:]`
mv -v $i $myFile

case $myFile in

LOST*)
File=$(echo $myFile | sed ’s/\(.*OST\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Lost’
MOVE_FILE
;;
ROBOT*)
File=$(echo $myFile | sed ’s/\(.*KEN\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Robot Chicken’
MOVE_FILE
;;
BIG*)
File=$(echo $myFile | sed ’s/\(.*OVE\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Big Love’
MOVE_FILE
;;
MAD*)
File=$(echo $myFile | sed ’s/\(.*MEN\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Mad Men’
MOVE_FILE
;;
GLEE*)
GleeFile=$(echo $myFile | sed ’s/\(.*LEE\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Glee’
MOVE_FILE
;;
REAL.HOUSEWIVES*)
File=$(echo $myFile | sed ’s/\(.*SEY\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Real Housewives’
MOVE_FILE
;;
WIZARDS.OF.WAVERLY*)
File=$(echo $myFile | sed ’s/\(.*ACE\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Wizards of Waverly Place’
MOVE_FILE
;;
ICARLY*)
File=$(echo $myFile | sed ’s/\(.*RLY\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’iCarly’
MOVE_FILE
;;
DAISY.OF.LOVE*)
File=$(echo $myFile | sed ’s/\(.*OVE\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Daisy of Love’
MOVE_FILE
;;
WEEDS*)
File=$(echo $myFile | sed ’s/\(.*EEDS\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Weeds’
MOVE_FILE
;;
NURSE.JACKIE*)
File=$(echo $myFile | sed ’s/\(.*KIE\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Nurse Jackie’
MOVE_FILE
;;
FAMILY.GUY*)
File=$(echo $myFile | sed ’s/\(.*GUY\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Family Guy’
MOVE_FILE
;;
PUSHI*)
File=$(echo $myFile | sed ’s/\(.*IES\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Pushing Daisies’
MOVE_FILE
;;
TRUE*)
File=$(echo $myFile | sed ’s/\(.*LOOD\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’True Blood’
MOVE_FILE
;;
SUMMER*)
File=$(echo $myFile | sed ’s/\(.*IGH\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Summer Heights High’
MOVE_FILE
;;
THE.TUDOR*)
File=$(echo $myFile | sed ’s/\(.*ORS\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’The Tudors’
MOVE_FILE
;;
TIM.AND*)
File=$(echo $1 | sed ’s/\(.*HOW\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Tim and Eric Awesome Show Good Job’
EpisodeID=’79905′
MOVE_FILE
;;
DOLLHOUSE*)
File=$(echo $myFile | sed ’s/\(.*OUSE\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Dollhouse’
MOVE_FILE
;;
FLIGHT*)
File=$(echo $myFile | sed ’s/\(.*ORDS\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Flight of the Conchords’
MOVE_FILE
;;
HEROES*)
File=$(echo $myFile | sed ’s/\(.*EROES\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Heroes’
MOVE_FILE
;;
GOSSIP*)
File=$(echo $myFile | sed ’s/\(.*IRL\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Gossip Girl’
MOVE_FILE
;;
THE.SECRET*)
File=$(echo $myFile | sed ’s/\(.*AGER\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’The Secret Life of the American Teenager’
MOVE_FILE
;;
AMERICAN.IDOL)
File=$(echo $myFile | sed ’s/\(.*DOL\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’American Idol’
MOVE_FILE
;;
AMERICAS.NEXT*)
File=$(echo $myFile | sed ’s/\(.*ODEL\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Americas Next Top Model’
MOVE_FILE
;;
DEXTER*)
File=$(echo $myFile | sed ’s/\(.*XTER\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Dexter’
MOVE_FILE
;;
90210*)
File=$(echo $myFile | sed ’s/\(.*0210\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’90210′
MOVE_FILE
;;
THE.OFFICE*)
File=$(echo $myFile | sed ’s/\(.*FFICE.US\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’The Office’
EpisodeID=’73244′
MOVE_FILE
;;
CALIFORNICATION*)
File=$(echo $myFile | sed ’s/\(.*ION\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Californication’
MOVE_FILE
;;
ITS.ALWAYS*)
File=$(echo $myFile | sed ’s/\(.*PHIA\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Its Always Sunny in Philadelphia’
MOVE_FILE
;;
DESPERATE*)
File=$(echo $myFile | sed ’s/\(.*IVES\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Desperate Housewives’
MOVE_FILE
;;
PARIS*)
File=$(echo $myFile | sed ’s/\(.*EVER\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Paris Hilton is my BFF’
MOVE_FILE
;;
THE.IT*)
File=$(echo $myFile | sed ’s/\(.*ROWD\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’The IT Crowd’
MOVE_FILE
;;
HANNAH*)
File=$(echo $myFile | sed ’s/\(.*TANA\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Hannah Montana’
MOVE_FILE
;;
ROCK*)
File=$(echo $myFile | sed ’s/\(.*OVE\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’Rock of Love’
EpisodeID=’80610′
MOVE_FILE
;;
24.*)
File=$(echo $myFile | sed ’s/\(.*4\).\([Ss][0-9]*[Ee][0-9]*\).*/\2.AVI/’)
ShowName=’24′
MOVE_FILE
;;
*)
echo “[+] $myFile does not match our TV shows, pushing it to /storage/Movies on lunchbox” > /tmp/emailmessage.txt
mv -v “$myFile” /storage/Movies/$myFile
/usr/local/bin/email.sh
;;
esac
done
exit 0

Filed under: Linux, Media

gdgt gadget list widget

Here’s my widget from gdgt.com

Filed under: Uncategorized

Blacklisting hosts that try to break into my host

I have been noticing lately that a lot of poeple are trying to attack my host by logging in over ssh.  With the help of a friend I was able to concoct a script which takes those nasty IPs out of /var/log/auth.log and then banishes these IPs by using route and the reject option:

#!/bin/bash

echo -e “\n[`date`] – Scanning for new bad hosts to blacklist…”
tail -2000 /var/log/auth.log | grep ‘invalid user’ | awk ‘{print $13}’ | uniq > /tmp/badhosts.txt
route | egrep -v ‘Kernel|Destination|default’ | awk ‘{print $1}’ > /tmp/routes.txt

for i in `cat /tmp/badhosts.txt`; do
if [ -z `grep $i /tmp/routes.txt` ]; then
echo -e “\n Adding $i to blacklist” ;
route add -host $i reject ;
else echo “$i is in routing table”;
fi;
done
echo -e “Now printing routing table, make sure nothing in here looks wrong”
route
echo -e “\n”
exit 0

I have put the script in a cronjob so that it runs every fifteen minutes:

0,15,30,45 * * * * /usr/local/bin/blacklist.sh >> /tmp/blacklist.log

This all gets dumped to a log at /tmp/blacklist.log, which I then have emailed to myself each day at 8:00 AM by a cronjob:

0 8 * * * mail -s “Blacklist.log for `date +%b” “%d” “%Y`” XXXX@gmail.com < /tmp/blacklist.log

In this way, I effectively block anyone who ends up in /var/log/auth.log as an invalid user from bombarding my ssh daemon with nasty brute force attacks to get into my server.

Linux is so awesome.

Filed under: Linux

HTC Hero looks good

Gotta say, this phone is making android very compelling:

Filed under: Uncategorized

BeejiveIM with push finally hits the App Store!

Of course, the day I figured out that I could use TextFree (an app that provides you with an email address which displays any messages sent to it as a push notification to your iPhone) BeejiveIM finally hits the app store with push notifications enabled.  AIM did as well, as you can see below:

IMG_0634

I like the new splash screen, very classy, and uh, bee hivey?

IMG_0635

In the Settings app you can select which type of notifications you’d like to receive:

IMG_0637

This is how the notification appears when you have the screen locked and first turn the phone screen on:

IMG_0638

This is how the notification appears if you are currently using another app.  Not perfect, as it is disruptive, but it is leaps and bounds better than having to actually keep the single IM application open in order to see your updates.

IMG_0639

All in all I have to say I’m pretty pleased with the performance, as I saw the notifications pop up on my phone about 1-2 seconds after receiving the same IM message on my computer.  In addition, if you delete the chat from your phone you won’t get the notifications if you’re using an IM app on your computer, so you’re not getting bombarded with notifications when you really don’t need them.  Great work overall, @BeejiveIM!

Filed under: iPhone

Byline for iPhone: integrating Google Reader the iPhone way

I read a bunch of different RSS feeds from websites all over the place, and for a few years now I have been using Google Reader because I can use it on any computer or device and then keep my read items in sync no matter where I am.  The experience was improved after I got the iPhone and Google quickly made adjustments specifically for the WebKit based browser used by iPhone as well as other smartphones.  However, I recently learned about an app for the iPhone called Byline, and being a feed junkie I thought I would try it out.  Boy am I glad I did.

IMG_0579

When you first open Byline you are presented with Folders, which is basically the menu you see in Google Reader on the left hand side of the screen under normal view.  I had just finished reading all my items before I took the screen shot above.  From here I generally go straight to New Items, as that is what I want to read.

IMG_0580

In this view you get a listing of all the feeds you would see if you were going to the Google Reader site optimized for the iPhone.  Byline fills in some extra data such as Source Webpage and time posted.  You can tap to follow through to the detailed view for a particular post.

IMG_0583

Oh yeah, the app supports landscape orientation throughout as well.  Now that I’m actually viewing an item i have a few options.  If I tap the > button on the top toolbar the actual webpage this item references will be pulled up in the built-in browser, looking like this:

IMG_0584

That is very cool, and extremely convenient, not to mention that it works very quickly.  When you are finished a quick tap of the < button at the top of the toolbar will take you immediately back to the previous screen.  Nice.  You can also navigate up and down through your list of unread items or add it to your starred items list, using the respective icons above.

Another superb feature of Byline is that it includes playing of YouTube clips directly in the application, rather than kicking you out and opening YouTube separately.  This includes all the bells and whistles that Mobile Safari enjoys.  For instance, if I open a detailed view of a particular item that has a YouTube clip that is not available to play on the iPhone, I will see the following:

IMG_0586

A better look is like this:

IMG_0587

However, if the clip is playable, you will be presented with a screenshot of the clip and the play icon without the international no symbol through it:

IMG_0588

Tapping on the icon starts the clip in the standard YouTube interface, but the important part is that we actually don’t ever leave Byline.  Very nice integration, and this is the first time I have watched a YouTube clip without actually being in the YouTube app.  It is great to not have to jump between the two applications.  This is the kind of innovation we need to see in more applications to circumvent the circumstances in which Apple will not allow background applications.  This behavior is even better, since we don’t need to ever leave the main app we are using.  Badass.

IMG_0594

Once you’re done reading you can choose to mark all the feeds you just scanned through as read, and then if you hit the refresh button at the bottom left of the screen the feeds all slip away and anything new starts to be pulled into the app.  This works very quickly and dynamically, so the page fills up with new items and the counter of New Items goes up one digit at a time, rapidly.

IMG_0608

IMG_0598

Byline is all about bringing the true iPhone experience to reading your Google Reader feeds, and syncs with your account seamlessly.  An added bonus is that the number of unread items shows as a badge on the icon when you are not using the application.  This does not dynamically update as of now, but it would be really nice if push notification system was used to update this app without having to manually sync it.

Filed under: iPhone

Tweetdeck rules the iPhone twitter client arena

I have started to really use twitter all the time, everyday.  It’s quite addictive to have a pipeline directly into the thoughts of all these other people that also use the service.  I have been going back and forth between Twitteriffic and Tweetie on the iPhone, and using Tweetie on the Mac up until recently.  Then I found out about Tweetdeck, which is an Adobe Air application, but works quite well on the Mac.  I started making groups and filters and going totally nuts loving all the extra control it gave me over how I could use twitter.  Then last night, the iPhone app was released.  This is probably the single nicest application I have ever seen on the iPhone, and it’s quite quick and useable.

Tweetdeck Start Screen

Tweetdeck Start Screen

When the application first loads, you get the view on shown above.  It defaults to showing your friends, which is just really people you follow.  Plus there are separate columns for DMs, @replies sent to you, and you can create groups and search filters or add other types of columns as you please.  It basically mimics the desktop application experience as best you can with the limited real estate of a quarter vga LCD screen.

Rearranging tabs

Rearranging tabs

One of the most visually impressive and convenient actions the application handles is rearranging your columns, and it works just like you think it would.  When you are viewing the zoomed out view of all your columns, you simply hold your finger down and the columns zoom out even further.  Then you can hold your finger down on one and drag it around to rearrange it.  It works pretty well, and when you’re done you hit the giant Done button, pretty simple.

This is how you do notifications, Apple!

This is how you do notifications, Apple!

Another really nice feature is the integrated notification system.  While you are flipping through columns, reading tweets and writing them too, perhaps browsing links, watching youtube clips and following new friends, updates pop up in a small bar at the top of the screen, not shown here.  But also at the bottom is the total number of updates you have not marked as seen, and when you tap it the pop up widget comes up which allows you to jump straight to the column that you select by tapping.  This is really awesome, and I wish more apps did stuff like this.  VERY usuable.

Mentions Column

Mentions Column

The pic above shows what it looks like when you are actually viewing a single column.  I think the left and right arrows at the bottom are unecessary as you can move to the column to the left or the right by swiping in the appropriate direction.  The yellow “write” icon up on the top right allows you to go to the “edit tweet” window, and when you’re done there it just slides out of the way and returns you where you left off.  You can select an individual tweet to see the details, which is pretty useful and fully featured.

The last thing I want to show is the column edit tool:

Column Edit View

Column Edit View

In this view you can select from a number of different “types” of columns, and then add it.  Once you have the ones you want, you can easily come back and edit them.  If you choose to sign up for a tweetdeck account the application will sync between your iphone and desktop so you don’t have to deal with marking tweets as seen in both placed, total synchronicity.  I have noticed it isn’t always perfect, but it’s still a lot better than keeping two separate apps that don’t know about each other.

Next up I’m going to take a look at the Google Reader iPhone app by Phantom Fish called Byline, it carries along this same type of idea but does the syncing through Google’s Reader service.

Filed under: iPhone

iPhone 3.0 is good enough for me

I finally decided that paying upwards of $399 for the new iPhone 3G S was not worth it for me, considering that the only thing in the new phone I’m really interested in is the speed boost.  The next day, I found the ipsw file for installing the new 3.0 software update which is released to the public on Wednesday June 17th.  Following are my impressions, especially poingnant in light of my recent dabbling with the Palm Pre at the Sprint store the other day.

Let’s start with the most obvious and dramatic change, Spotlight (which is Apple’s marketing-speak for “search”)

Spotlight on the iPhone 3.0 OS

Spotlight on the iPhone 3.0 OS

It actually works really really well, even if it can lag for a second or two while it searches the database it creates of all your media, contacts, mail (To, From, Subject), and application names.  As you can see, searching for “earl” above returned a contact, a song, and two emails from said contact.  This is awesome, and makes life much easier when you just want to quickly pull up a contact, search an email, or play a song.  It’s also handy when the app you want to run is several screens to the right, because you can generally get the application open quicker by swiping right and typing one or two letters to bring it up in the search results.

The next big change for me that makes life using this phone so much nicer is landscape mode being supported in Mail, Messages, Notes, Stocks and Contacts.

LandscapeMail

This feature is especially nice in Mail when trying to read an HTML email.  usually they are formatted in such a way that viewing them in portrait and being able to read the text means moving the screen back and forth to read each sentence, not exactly optimal.  Having landscape support in these apps really adds to the experience of using them, and it is something that was a long time coming.

Previously, if you downloaded any podcast using the iTunes application on the iPhone and that podcast had chapters, there was a bug which wouldn’t let you play the file with the screen locked.  This was insanely annoying, even though there was a workaround.  Now, that bug has been squashed, but there is still a 10MB file limit on downloads using AT&T’s network instead of wi-fi.  Essentially, this means you’re not going to download any podcast of significant size without finding a wi-fi network first.  However, there is a really nice feature which allows you to tap the title of the podcast, instead of the download button, and it will simply stream the file to your device over the air.  I was very surprised by this.

Streaming a Podcast from iTunes

Streaming a Podcast from iTunes

So once the file is streaming, you don’t even need to download it, the screen above is what you see, which is similar to the way streaming files in the browser looks.  Now, if you lock the screen, the stream pauses.

A streaming podcast playing from the lock screen

A streaming podcast playing from the lock screen

But once you double-tap the home button and the controls for music playback come up, you can just hit the play button and the stream you had been listening to just picks up where you left off without having to unlock the screen.  Nice!

I’ve also decided not to jailbreak anymore, as it seems like things always get too wonky and I end up taking a performance hit for it.  The only two things I was using jailbreak for anymore anyway was to have a notification icon in the status bar if there were unread messages and the Terminal program.  Most of the time I used the Terminal app to ssh into my Linux box at home, or to jump host from that to my Apple TV if I needed to fix something for my family while I wasn’t home.  There are apps out there, like TouchTerm and iSSH that let me do this still, even if they are not as nice and smooth as Terminal was.  This is iSSH checking on an rtorrent session on my Linux machine:

iSSH

Works for me!

When I first heard that the Palm Pre was going to support running multiple applications in the background I was pretty jealous.  Now that I’m getting to hear some first party reviews about how it actually works, and had a little time to play with it myself, it appears that battery drain is a big concern.  Not only that, but on a screen that small applications are optimized already to be running in full screen, there really isn’t a huge need for me to be running multiple applications in order to conduct my daily business.  If I want to chat with someone over IM, I go into the IM application I have installed, I can still listen to and control music playback while staying in that IM app.  Granted, I can’t check what a new email is without leaving the application, and it would be nice to have a notification drawer like the Android OS does so you can see the subject and sender and then decide if you want to go to the Mail app or just deal with it later.  Overall I am pretty happy with the way that Apple has decided to run things with the new 3.0 OS, and it is certainly an improvement over 2.1.1.

Although the iPhone OS only allows limited multitasking (only Mail, iPod, SMS, Phone, applications getting installed/upgraded, or content being downloaded on iTunes can be running in the background) copy and paste works just like it does on a desktop computer, so you can copy some text in the browser or from an email, and then paste it to use somewhere else, like a twitter application or in Notes.

I am eager to see how well (or not) the push notification system Apple has built in for third-party applications to use works.  I am worried that it will be painful when you get 5 IMs at once from someone, and have no way to get back to controlling the application you are using without dismissing those 5 pop-up windows first.  Maybe I’m wrong about how it works and they have something more elegant planned.  I’ll find out June 17th, so I can’t wait!

Filed under: Opinion, iPhone

Latest Tweets

  • so I wasn't kidding, who is buying the droid so I can play with it? 8 hours ago
  • so who is getting a droid from Verizon and when can i come over to play with it? 10 hours ago
  • been checking out all the great jailbreak apps and on the 3GS all this stuff runs so well. good times. good times. 1 day ago
  • This is pretty interesting, how much the US pays for health care compared to other nations: http://bit.ly/17kls 4 days ago
  • doing the laundry, which thankfully isn't anything like last week's nightmare. 5 days ago