Missing iPhone OS 3.0 Features

Apple has released the third major revision of its iPhone mobile operating system and it has sparked both developer and user interest. This update is mainly Apple playing catch-up to both other mobile operating systems as well as their own promises. I have been playing with it for about a week and have compiled a list of missing features and missed opportunities.

Icons As Displays

Icon Displays

Adding badge numbers to some icons (Phone, SMS, App Store) is sufficient to convey needed information but on other applications more information is needed. As seen with the calendar icon as well as the clock and weather icons for jailbroken users, the ability to use an icon as a display surface is a powerful and underutilized concept.

Applications should be able to modify their icons to provide quick and relevant information about themselves through multiple, pre-rendered images. Similar to how applications are displayed, a base image and multiple transparent images could be layered to produce the final icon.

When a push notification is received the ability to switch your applications icon image to another should be an option. Then, when the icon is next displayed on the screen (phone is unlocked, paged to, running application exits, etc.) it should “dance” as if you were rearranging icons but only for 1 second to indicate it has changed.

Examples:

When Sportacular (or ESPN, etc.) application receives a score update it could update itself to reflect the most recent scoring updates.

A to-do list application could display a series of pictures on its icon screen to help remind you of tasks. A shopping cart and green dollar sign would server to indicate that you need to stop by the grocery store for items and visit the bank for some transaction.

Background Processes

A lot of the debate has been over the decision to use push notification in lieu of background processes. This seems to benefit applications whose architecture is already server-client. Most developers likely don’t have the resources to set up a large infrastructure to support this architecture, nor do their apps necessarily lend themselves to it either.

In the OS 3.0 presentation (SD, HD), Scott Forstall reports that Apple’s internal testing yielded an approximate 80% reduction in battery standby time by enabling background applications. A lot of applications do not need to run constantly in the background but merely need to update themselves.

One possible solution would be to implement scheduled background code execution.

Applications could schedule themselves to have certain code run at particular times. Limitations would have to be placed on the frequency of scheduling and the length of execution allowed, say no more than 10 seconds of total CPU time and 4 schedule instances an hour. This code should work like local push notifications and only be able to play a sound, update the badge number, display a notification, or update the icon screen.

Examples:

The native weather application could now have a preference for auto-updating every 15, 30, or 60 minutes. Its icon screen would update to reflect conditions and it could also fire a notification if there are any weather watches or warning issued. It could also query the location services if time allowed to use your current location rather than any stored ones.

An application like What’s On? could notify you before a favorited program airs by scheduling itself to run at the :25 and :55 minute mark of each hour. While this functionality could be achieved through normal push notifications it shows an example where the infrastructure might not be feasable to implement.

Native App and OS Decoupling

While a lot of the native apps’ features are tied closely to the underlying operating system, decoupling would still prove to be of great benifit. When Apple discovers small quirks in their native apps the changes have to be rolled into the next OS update. The creation of an “Apple Applications” category in the App Store would allow them to distribute updates and new applications independently of the OS. Major changes that rely on underlying OS API changes could still be controlled using this method.

Decoupling would also allow for the deletion of the native applications since the possibility exists of later reinstalling them through the App Store. For users like me who never use the Stocks, Contacts, iTunes, etc. apps it would eliminate the need for it as a jailbroken feature.

Notification Center

Allow for a notification center to be pulled down by swiping across the status bar which provides access to Messaging, Email, iPod, Phone, Search, and Settings. Think of it as a shamless ripoff/combination of Android’s notifications, SBSettings, and Status Notifier which provides access to common features without quitting the current application. In addition to just the alarm icon, icons for new SMS, MMS, and email, missed calls, and vibrate would be displayed.

SMSs can be viewed and replied to (though no conversation history). MMSs could also be viewed and replied to via SMS. New emails could be viewed and forwarded, deleted, moved, or replied to. The iPod song could be chaned within the current playlist, a new playlist selected, or a song picked from the standard artist/album/song heirarchy. A list of missed calls and voicemails could be accessed as well as the contact list. Placing a call or listening to voicemail would obviously suspend the current application similar to how an incoming call does. A global search would provide you with quick access to you to all your data though some selections would quit the current application to launch their own. Finally access to simple settings such as WiFi, airplane mode, and bluetooth would allow for quick setting changes.

Since the OS is unix-based when this Notification Center is active the current application’s process priority would be reduced to allow these functions to operate smoothly.

Now extremely frequent operations such as replying to an SMS, MMS, or Email would not take you out of your current application. Switching on WiFi or turning on bluetooth can be done as needed inside an application. Accessing your contacts and phone records for copy and pasting info from would be quickly accessable.

Other Minor Features

  • Srobbling - The iPod.app should scrobble all my music to Last.fm. The Last.fm app should only be a client to the sites streaming music and database.
  • Photo/Video Sharing - It would be trivial to add a “Share” option to the photo action sheet which brought up an interface to upload both photos and videos to Flickr, Facebook, YouTube, etc. It should also support the features for all of those sites (sets, tags, etc.).
  • Turn-by-turn - xGPS can do it without the digital compass. At the very least the 3G S should have this. Everything needed is already programmed the features just need to be tied together. If Apple did it then maybe it could even be backgrounded like the iPod.

Hopefully some of these will trickle into the 3.0 minor updates over the coming months. If not, use this as a base for 4.0, Apple.

Written on: 06-18-09 · No Comments · Permalink

Scenerename - Automated TV Show File Renaming

scenerename is a python script which will automatically parse and rename your TV media files. It uses the tvdb_api library to access thetvdb.com’s extensive TV information.

Example (be sure to scroll to the right to see new names):

/mnt/media/.Downloads/Scrubs.S08.720p.HDTV.x264$ ~/scenerename.py
Fetching series data for "scrubs"...
--------------------------------------------------------------------------------------------------------------------------------------------
Original Name                                                          New Name
--------------------------------------------------------------------------------------------------------------------------------------------
e7-scrubs.s08e09.720p-x264.mkv                                         Scrubs 8x09 - My Absence.mkv
scrubs.s08e16.720p.hdtv.x264-0tv.mkv                                   Scrubs 8x16 - My Cuz.mkv
scrubs.s08e11.720p.hdtv.x264-ctu.mkv                                   Scrubs 8x11 - My Nah Nah Nah.mkv
Scrubs.S08E07.720p.HDTV.X264-DIMENSION.mkv                             Scrubs 8x07 - My New Role.mkv
Scrubs.S08E06.720p.HDTV.X264-DIMENSION.mkv                             Scrubs 8x06 - My Cookie Pants.mkv
scrubs.s08e14.720p.hdtv.x264-ctu.mkv                                   Scrubs 8x14 - My Soul on Fire (1).mkv
scrubs.s08e15.720p.hdtv.x264-ctu.mkv                                   Scrubs 8x15 - My Soul on Fire (2).mkv
scrubs.s08e01.720p.hdtv.x264-ctu.mkv                                   Scrubs 8x01 - My Jerks.mkv
e7-scrubs.s08e10.720p-x264.mkv                                         Scrubs 8x10 - My Comedy Show.mkv
scrubs.812.proper.720p.hdtv.x264-sys.mkv                               Scrubs 8x12 - Their Story II.mkv
scrubs.s08e17.720p.hdtv.x264-ctu.mkv                                   Scrubs 8x17 - My Chief Concern.mkv
Scrubs.S08E18.720p.HDTV.X264-DIMENSION.mkv                             Scrubs 8x18 - My Finale.mkv
Scrubs.S08E13.720p.HDTV.X264-DIMENSION.mkv                             Scrubs 8x13 - My Full Moon.mkv
Scrubs.S08E02.720p.HDTV.X264-DIMENSION.mkv                             Scrubs 8x02 - My Last Words.mkv
scrubs.s08e04.720p.hdtv.x264-ctu.mkv                                   Scrubs 8x04 - My Happy Place.mkv
Scrubs.S08E05.720p.HDTV.X264-DIMENSION.mkv                             Scrubs 8x05 - My ABC's.mkv
Scrubs.S08E08.720p.HDTV.X264-DIMENSION.mkv                             Scrubs 8x08 - My Lawyer's in Love.mkv
scrubs.s08e03.720p.hdtv.x264-ctu.mkv                                   Scrubs 8x03 - My Saving Grace.mkv

Run with "--confirm" to rename files

There are a variety of arguments which allow you to control the parsing and output format. Documentation and downloads can be found at Knio’s GitHub project page.

Written on: 05-20-09 · No Comments · Permalink

mkvdts2ac3 1.0.0 released!

Version 1.0.0 of mkvdts2ac3 has been released, the first major milestone for the script. mkvdts2ac3 is a bash script which automates the conversion of DTS audio tracks to AC3 audio from within matroska files. You can read more about it here if you are not familiar with it.

You can download tarballs or zipballs from the GitHub download page. The current version is actually 1.0.2. I have made a few fixes since the actual tagging of 1.0.0 in the repository.

Written on: 05-13-09 · No Comments · Permalink

mkvdts2ac3 - DTS to AC3 conversion for Matroska

Users of the Popcorn Hour A-100 or older-model receivers might not be able to decode the DTS audio that is embedded within their movie files. It is for this reason that mkvdts2ac3 script was developed.

mkvdts2ac3 is a bash script for Linux and Mac OS which automates the task of converting DTS tracks in Matroska (MKV) files to AC3. There are a variety of arguments which control the resulting output file but running the script is as simple as:

mkvdts2ac3.sh Some.Movie.File.mkv

The DTS will be extracted, converted to AC3, and then appended to the file. Now when you play back the file you can switch to this AC3 track and finally enjoy the movie’s sound.

If you do not want to retain the DTS track or you want the new AC3 to be flagged you can indicate that with one of the script’s arguments. You can view all of the arguments in the script’s documentation here.

The source code is available for browsing and download from the GitHub project page.

Written on: 04-24-09 · No Comments · Permalink

New Issue/Feature/Support Location

Now that GitHub has launched an integrated issue tracker all issues, feature requests, and support requests should be filed under the ‘Issue’ tab of the respective project.

Written on: 04-16-09 · No Comments · Permalink