SD Touch and SearchDial 2.8.1

| | Comments (0) | TrackBacks (0)
SearchDialTouch-100.png   SD-100.png

I'm happy to announce the release of SearchDial Touch - an iPod Touch friendly version that has all the great and powerful search features of Search Dial but without the, well, Dialing.

SD Touch is currently Free, so no reason not to try it out!

Also updating the icon for SearchDial to match, and to look a bit better sitting down there in the dock.

As always, feedback welcome!

SD 2.7 Now Available

| | Comments (6) | TrackBacks (0)

This quick update turned out to take a bit longer than anticipated.

The primary addition is the option to enable "contains" search for names.  This was introduced in 2.5 and removed in 2.6 due to the volume of search results often returned.  However, enough folks protested so its now an option (which is what I should have done in 2.6 - lesson learned).

I also found and fixed a memory leak during sync which was causing some crashes.  Let me know if you used to have sync issues but no longer do with 2.7.

Finally, one of the biggest, perhaps controversial change is the View/Edit features.  Per my forum post, there are problems associated with certain services, mainly MobileMe.  This service has no concept of a consistent unique identifier, which means that when you click the View/Edit button it would often no longer be there!  This is why it would break and give you an error message.  However, this works just fine for other services, such as Exchange. 

Therefore, I decided to make View/Edit an option that defaults to Off.  I couldn't see how I could go backwards and pull it entirely.  However, its very confusing for MobileMe users as there is no workaround for this.  No unique ID is a killer - at best I could guess based on name but that would fail certain percentage of the time.  So, please enable it until you detect its not working.  If I have some flash of brilliance and find a way around this, I'll be sure to update the app.

 

sd-search25.jpgHappy to announce that SD2.5 is now available on the AppStore, in record time I might add.  Took 3 days for approval this time; great to see Apple making progress on this.

There are a ton of new features in this version, based entirely on feature requests from users.  First, I made some changes to how and what its searching.  At the highest level, SD does two types of searching: "Contains" and "Begins With".  They are what you probably think they are, and i'll use those terms to explain the changes.

I've included Notes now, so it does a Contains search on your notes for the search term.  This can lead to a lot of search results so you can optionally turn it off.  Also, I now do a Contains search on the full name and Company name rather than just begins with (search by initials still works).  This was done to accommodate middle names and multi-word names better.  Also works for entries like "Bob and Sue".  I now am ignoring all punctuation when searching, so O'Brian can be found by typing "obrian".  Also works for people who use punctuation to group contacts together.  Note you can also search with the punctuation - works either way.

One big improvement is full extended character support.  There are many users who's entire contact database is in a localized language requiring unicode characters (Russian, Hebrew, Greek, etc).  This now works - I store and search UTF8 characters.

In addition to these search changes, there are a few significant new features.  You can now View/Edit contacts directly within SearchDial.  When you click the Blue Arrow from the search results table, it takes you into this view:
sd-contacts.jpgFrom here, you can click the Edit button and edit the contact as if you were in the native Contacts app.  Any changes you make here update your main address book as well as the SD cache so you don't need to refresh.  There is no default support for Delete but I'm working on that for a future release.

Also, you can now search using T9 syntax on the dialpad.  This lets you quickly find things using bigger buttons - much easier to do one handed.
sd-email-white.jpgNotice how hitting the numbers 5 2 find both John Appleseed (JA) and Kate Bell (KB).  That is because 5 searches everything with a JKL and 2 everything with JKL.  This means 52 does JA, JB, JC, KA, KB and so on.  Its actually very efficient once you get used to it.  This is a mode you have to turn on in the Settings.  Its off by default, giving you a normal keyboad.  But if you enable this setting all 3 modes will use this keypad.  The only limitation is that you can't use DirectEmail while in T9 mode.

One cool new feature is that SD will remember your last search only when you call, SMS or Email someone.  This means if you search for Jeff (and it returns a Home and Mobile number) you can dial Home.  If they don't answer, you hang up and when SD reloads its right back where you left off so you can just hit Mobile.  When you do a normal exit without calling anyone, it clears this and starts with the default AutoFavorites screen.

Also, in addition to choosing your default mode (Call, SMS or Email) you can set it to remember the last mode used.  This will always start up SD in whatever mode you were in when you exited.

There have been numerous minor fixes that I hope you notice over time.  As always please email me at support@ibranc.com if you have any issues, questions or requests.

One final note: there are a number of comments on iTunes from the inital 1.0 broken release.  If you made one and SD is now working for you, I'd appreciate it if you updated it with your current thoughts.  Thanks!

 

FreshApps

| | Comments (1) | TrackBacks (0)
There are a few sites out there for iPhone apps outside of the AppStore itself.  They offer a lot more in terms of community features to rate and discuss apps.

I would appreciate a vote or comment for SearchDial on FreshApps.com http://www.freshapps.com/searchdial/

Also wanted to drop a quick note that SearchDial 2.5 is in Beta.  It has a bunch of new often requested features such as:

- Search Notes field

- View / Edit Contact Details directly inside SearchDial

- Option for T9 dialpad searching (2=abc, 3=def, etc)

- Full UTF8 support for international language contacts

- You can now choose to default to the last Action Mode at startup

- Remembers last search when returning from a phone call, email or SMS.  Normal exit erases last search.

- Color coding now works for Email

- More flexible search on Company name

- Search works even if there are characters in phone number: ( )-.*,#

- Search ignores punctuation in names

I hope to submit this to the store in the next few days and will provide more details once its finished.

SearchDial 2.0

| | Comments (13) | TrackBacks (0)

I finally finished SD 2.0 and submitted it to the AppStore on 10/12.  I suppose it will be another few weeks before this gets cleared.

sd-search.jpgHere are some of the top issues users wrote to me about:
  1. Slow start times, or crashes, for large numbers of contacts (>1,000)
  2. Search by intials (Johh Doe is jd, dj, jdo, djo, etc)
  3. Allow a white background with standard blue controls
  4. Search through special characters: typing e is the same as é or è, etc.
  5. Do more than just dial - allow SMS, Email, Edit, etc as well
  6. Erase all AutoFavorites at once, or disable them altogether.
  7. Search the Notes field
  8. Enter letters through a standard phone keypad (2=abc, 3=def, and so on)
  9. When returning from a phone call, default to the last set of search results.
For 2.0, I tackled 1-6 (well, part of 5). 
This required a near complete rewrite focusing on fast start times for large numbers of contacts.  Rather than read the AddressBook into memory as 1.x did, I store a cached copy of the necessary fields in a local SQLite database.  This has the advantage of no overhead during application startup - 2.0 starts in the same amount of time with 10 contacts as with 10,000.  This also provides a lot of search flexibility, allowing more than the Address Book API calls support. It will also be easier to expand downstream by adding additional fields such as Notes.  The only real downside is that you have to manually sync SD with your Contacts.  This only has to be done when you change your contacts (and want to search the changed ones), NOT every time you run SD.  It's speedy up until a few thousand contacts and then starts to slow down.  At about 2,000 it will take 15 seconds.  At 10,000 as long as a minute.  Above 10,000 is unsupported, and will frequenly crash due to memory constraints.  It was a tradeoff I had to make based on the assumption that 95% or more folks have less than 10K contacts.  Comment here if you fall into the > 10K category.

I also made some big changes to the UI.  I have always been hesitant to use a toolbar or tabbar in order to maximize the vertical space, and therefore the number of contacts displayed while searching.  However, even more important is the notion of "one click action": find your number and tap it - no intermediary screens.  To resolve this, I implemented an "Action Mode" toolbar:toolbar-small.jpg
 
This works by letting you choose which mode you are in.  If you want to SMS someone, hit the SMS toolbar button, search and then select your contact.  You can also switch modes after searching.  SMS Mode will only display Mobile numbers, and Email Mode will only display email addresses.  You can specify the default mode on startup.  This lets you still get the benefits of "Start, Search, Connect" and the flexibility of other actions, and allows you to optimize the number of clicks for your common use case.

All 3 modes support the DirectDial concept in that if your search result is not found, you can finish typing the number or email address and connect accordingly.  I had also intended to include Edit in this release, but it was going to be a bit more time consuming than I first thought (at least to do it right), so its been pushed until a future release.

I included a few new settings (you get to settings through the main iPhone Settings screen).
sd-settings.jpgFrom here you can choose a white background, turn off AutoFavorites, choose your default Action Mode, and set the colors as before, including email.

I also multi-threaded the search to allow you to keep typing while it searches in the background, and if you type fast enough and have enough contacts it will even attempt to cancel your previous searches in favor of your lastest one.  If you have 10,000 contacts you may see this in action; if you have < 500 you will never be able to tell.  Also if you have < 100 contacts it syncs with your address book so fast I don't bother displaying  the progress screen, so here is a good look :)
sd-sync.jpg
As always, comments and feedback welcome.  I really do appreciate the constructive emails, and very much appreciate those who volunteered to test my various betas.  I'd hate to do another 1.0 fiasco, so I am grateful.







Priorities for the next release

| | Comments (5) | TrackBacks (0)
Thanks to everyone who has taken the time to contact me with feedback and feature requests.  There are some definite common threads that I plan on addressing, so I thought it best to let everyone know what I'm currently working on.

Here are my priorities:
  1. Improve performance for both startup and searching.
  2. Provide search by initials (i.e.  search "jb" or "jbr" to find Jeff Branc)
  3. Enable an "Action Mode" so you can choose what happens when you find/select your contact.  Current priority is SMS and Edit, but also working on Email as well.
  4. Configuration setting for background color (white or black)
There are also a few bug fixes:
  • Fix searching for first and last names that contain multiple words
  • Fix searching names that contain extended characters
If you are encountering other bugs email me at support@ibranc.com so we can work through it, and get it fixed in the next release.

I'll provide additional posts with more details on #1 and #3 above - those are the most involved and fundamentally change the way SearchDial is currently architected.

SearchDial 1.1 Update on AppStore

| | Comments (3) | TrackBacks (0)
The update was approved today.  Hopefully folks are able to upgrade - I know I've been seeing some very odd upgrade behavior with apps lately.

Let me know if you don't see 1.1, or are having issues upgrading.  Of course, also visit the forums if you have comments/questions/feedback on SearchDial

AppStore Delays

| | Comments (0) | TrackBacks (0)
My past few experiences with the AppStore involved 6-7 day delays.  So far I'm on Day 10 of this update submission.

I wish I could tell you when the update will be out, but I have no idea, and no way of knowing.

Also, I've tried to be very clear here, in the forums, through email, and on the iTunes Store description that the current version has known bugs.  I don't know what else to do to make it more clear.  Comments keep rolling in, and they appear to ignore everything I've said.

a) Yes I did submit an update
b) No I don't know when it will be out
c) The current version on the store doesn't work for most users
d) If I take it down from the store, I have no faith the update will be processed at all, and no way of knowing in advance how Apple reacts to that scenario.
e) The screen shots are not fake per se - they contain sample data that comes with the default Simulator (app that lets you test the phone app on a Mac).  Since I'm dealing with contacts, I'm not exactly going to publish screen shots of my personal address book.

I know people are understandably frustrated.  I am frustrated as well.  I've sent repeated emails and phone calls to Apple and they simply do not respond.  Hopefully it will be "any day now".

Thanks to those who have been supportive, helped me test this update, and are patiently waiting.  I am committed to continuous improvent of SearchDial and the suggestions have been great.

-Jeff

SearchDial 1.1 and AppStore Workflow

| | Comments (12) | TrackBacks (0)
In going through this experience with SearchDial, it highlighted a few things about the AppStore workflow that could use some tweaking.

As you can no doubt tell from the comments, the 1.0 of SearchDial had a critical issue - it did not show contacts for some (most?) users.  This was essentially caused by the way I was getting the contacts, and for 1.1 I changed to a new, better way.  Due to the nuance of the problem, it never once showed up in the local SDK simulator, my phone (and those that tested), or even in the AppStore testing.  I never looked for the better way because it never came up, nor would it until it hit a broader, more diverse set of phones and the variability that that gives you.

At any rate, I removed the app from sale until I could fix it.  However, this has 2 effects:
  1. I could no longer communicate to users through the AppStore product description.
  2. You cannot post an update to your app without making it available for sale again!
So, now I have an app out there with a known issue while I wait for Apple to approve my update, which can take up to a week or more.  I hope people can understand that I'm not trying to 'pull a fast one', its simply how the system works.

My suggestion to Apple is to amend their workflow to allow a Developer to suspend downloads.  This would keep the app in the store, allow the Developer to explain the situation in the Description, and then post the update and re-enable downloads when ready.

Another feature sorely needed is the ability to comment on comments, without adding a rating.  I see all kinds of comments I would love to respond to directly to clarify things but I have no chance to. 

As the story of Podcaster makes its rounds, I thought I would share my own tale of the opaque AppStore approval process.

I was a Treo user for years - first the 650 (Palm OS) then 700w and finally 750 (WinMo 5 then 6).  Lots has been written about the various WinMo versions so I won't dig in here.  However, they were at the very least 'functional', meaning they did over the air sync with Exchange for email, calendar, contacts and tasks.  They also had a cool feature that became my most common use case - you could turn on the phone, start typing the name of a contact and it would list out the search results, where you could select the appropriate number and dial.  The actual sequence to call, say, Jeff would be to hit the On key, hit the center key to complete the unlock, type J E then choose Jeff's mobile number from the list using the arrow keys (down arrow), hit the center button to dial and done.  In reality, it was no clicks prior to searching, and only one click to dial after searching.

Then the iPhone 3G came about with Exchange integration, and I felt I earned it, finally, after putting up with WinMo and Palm for so long.  And I do really like the phone, but it isn't all that much less crashy, etc.  The browser pretty much makes up for all shortcomings though.

Then I tried the Contacts app.  Whoa.  First, it was days before I figured out how to reliably hit the search icon.  Most of the time I'd hit a letter or hit the + button to add a contact.  Then, evil of all evils, they made you select a contact THEN select the number from another screen.  So, it looks like:
  1. Click Phone icon
  2. Click the Contacts tab (this is non-deterministic, you could be on any tab when you launch)
  3. Click the top bar, or the little search icon to locate the search box (this is also non-deterministic - you could be anywhere in the scroll list when you get to the contacts tab)
  4. Click the search box to bring up the keyboard
  5. Type your search
  6. Click the contact you want and visit the next detail screen
  7. Click the right number.
7 clicks to find a number and dial.  On a mobile Phone.  That most people use one-handed.

So I set about to write SearchDial

Take 1
ND-SmallIcon.png
It actually started out called "Name Dialer".  The goal was the least possible amount of clicks to search and dial someone.  The steps are:
  1. Click Name Dailer
  2. Type your search (keyboard is already up!)
  3. Click right number (each number gets its own row in the search results)
This seemed like a no-brainer.  No frills, no extra toolbars or tab bars, no buttons.  Maximize the space and minimize the clicks. 
ND-screen1.jpg

I submitted to the AppStore. and waited, and waited.  After a full week, my efforts are rewarded with:
Your application, Name Dialer, cannot be posted to the App Store at this time because it violates section 3.3.5 of the iPhone SDK Agreement; "Applications must comply with the Human Interface Guidelines and other Documentation provided by Apple."

Your application duplicates the functionality of the built-in iPhone application Contacts without providing sufficient differentiation or added functionality, which will lead to user confusion.

Steps to dial using Name Dialer:
1.  Select application icon.
2. Enter letters to search for name.
3. Select name that is presented (multiple options for multiple phone numbers). Number is dialed.

Steps to dial using Contacts:
1. Select application icon.
2. Enter letters to search for name.
3. Select name.
4. Select number to dial.

So apparently someone could download, install, then run and application and be confused.  Also, they clearly don't consider saving clicks as a feature, which is odd.  Seems like a company so focused on usability would see the value in saving time and clicks, especially on a mobile device.  So I was pissed.  Wrote back to them, complained to friends, etc etc.  Its no small task to get an app built and published, and to be stuck with no recourse was amazingly frustrating.

Take 2

Some friends gave me some advice and ideas.  Basically, don't fight The Man, pay homage, swallow your pride and anger, and keep moving forward.  Righto.  So I introduce some new features such as AutoFavorites and color coding by number type.  I switched color schemes to be extra different (plus I think it looks cooler.  Black is the new black I hear).  AutoFavorites lets you sort numbers based on either A) how many times a number has been called or B) most recently called numbers.  Both the AutoFavorites sort order as well as the various colors for number type (home, work, mobile) were configurable. 

ND-screen1.jpg

OK.  Now it has features that the built-in system definitely doesn't have.  Plus it looks way different.  No way someone would be confused.  So I submit and wait another full week for this:
Your application, NameDialer, cannot be posted to the App Store at this time because it violates section 3.3.5 of the iPhone SDK Agreement; "Applications must comply with the Human Interface Guidelines and other Documentation provided by Apple."

Your application duplicates the functionality of the built-in iPhone application Contacts as well as the 'Recents' phone list without providing sufficient differentiation or added functionality, which will lead to user confusion. 

OK.. I handled it better this time, almost expected it.  They still don't value saving clicks, so its up to whatever else I can get it to do.  So, back to the drawing board.

Take 3
SearchDial-57.png
So now I'm on to SearchDial.  The name now reflects some of the new features: search by Phone Number and search by Company.  The built-in app doesn't do the number search (or display the company name in the search results even though you are searching on it.  Talk about confusing), so I figured that would be the clincher.  Plus, its a useful feature that the Treo app also had, and was requested by some early users helping me test.  I also took some time to make the colors better.  The downside of 'search by number' is that I have to preload the address book, making things a bit slower on startup.  And leading to its major flaw in the way I grabbed the contacts.  More on that in another post.

SD-Screen1.jpg

Submitted to AppStore, and wait the week again, and...
The status for the following application has changed to Ready for Sale.

Finally!  Of cousre, it was only hours before the bad comments poured in and I broke out into a pale sweat.  No testing I or the AppStore folks (who DO test these things, trust me) found this.  After all that, it had a critical bug causing it to just plain not load contacts for most people.  The error turned out to be a quick fix, and it would have been out the following day if it wasn't for this crazy long review process.

While I take responsibility for the boneheaded bug.....bugs happen.  Even Apple shipped iTunes 8 that blue screened Windows boxes.  Of course, their update appeared a day or 2 later so the damage was mitigated.  Lucky them.  I expect as people all over the world run this app in various local languages with all kinds of different contacts, syncing, etc there will be other bugs.  And I'm equally sure it will still take forever to get the updates out.

So, while I was flatout pissed at Apple the entire time, the rejections lead to a more feature rich product that is (or will be) better for it.

However, that does not excuse their behavior, especially for some of the other rejected apps.  Building these apps takes a huge amount of time and effort (and I have a day job, this is a side project).  They offer no support through the process, its a total black box.  Emails go unanswered, as do phone calls (i just spent 3.5 hours on hold before giving up).  Its unpredictable what will make it and what won't.  You could make it in and get pulled later on.  I mean, who wants to build a business around this?  Who wants to build more than Koi Pond if there are no guarantees your efforts will pay off?  Why would a VC or company invest in this with no say in a totally opaque process?

They may have opened the door to a whole new platform and marketplace, but they certainly didn't close the door on the competition.  Its wide open for somebody to do it better. (Android and even WinMo are watching the mess with glee I'm sure).