John Wargo

Home
JohnWargo.com
What Were They Thinking #5 PDF Print E-mail
Thursday, 04 February 2010 08:43
AddThis Social Bookmark Button

As part of my family’s move to Charlotte, it was time to start looking for a new bank. We selected Bank Of America and proceeded to setup our new accounts. It occurred to me to take a look to see if the bank had an iPhone application and I was pleased to find that they did. I downloaded the application from the iTunes and proceeded to launch it. When the application starts, it presents you with the screen shown in the following figure.

 

Figure 1

You can then define your account login information (including the same additional security measures Bank of America uses on their desktop browser application) and access all of your accounts and transactions. It’s pretty cool and I like it. I’m not going to show you this with my own accounts (yes, I blanked out my login name in the figure below), but I’ll describe it. What you see after you login is a list of your accounts. When you select an account, you’re provided with a list of transactions and other information.

 


Figure 2

The only complaint I have about the application is that it’s very sluggish – after you login and start navigating through the account information, the screen response is very slow. Whoever wrote the application apparently didn’t know how to optimize the menu items and so on to provide the best user experience.

Where the What Were They Thinking stuff begins is when you look at the BlackBerry version of the application.

I didn’t expect that there’d be a BlackBerry version of the app. It wasn’t until I’d used the iPhone version for a while that I thought to look in the BlackBerry AppWorld for the app. Surprise of surprises – Bank of America also offers a BlackBerry application. So many times, vendors decide that all people care about is the iPhone application and skip other platforms. In this case, they are trying to accommodate multiple platforms. The problem is that they didn’t implement the same features in the BlackBerry version of the application.

When you open the BlackBerry version of the app, you see the screen shown below.



Figure 3

It looks like the same features of the iPhone application. When you open the ‘Locations Near Me’ option, the application uses the GPS information available on the device to determine the location of the nearest bank locations – very nice.
When you click on ‘Mobile Banking Sign In’ you’d think it will prompt you for your credentials and allow you to view account information (just like the iPhone app). Nope, that’s not how it works here. When you select this option, you’re presented with the following screen.



Figure 4

What???? The Browser? What were they thinking? The iPhone application shows an interactive list of accounts then allows you to browse the account transactions inside of a native iPhone application. The BlackBerry application launches the browser and gives you the exact same functionality you’d get if you fired up the browser and typed in www.bankofamerica.com in the address bar. The browser???

Eventually you get to the login prompt and you just have to deal with the mobile browser version of the site.



Figure 5

What’s the point? It’s essentially useless except for the branch finder. I just don’t know what they were thinking. The bank spent the time and money to build a fully functional iPhone app but relegated BlackBerry users to a simple application that merely launches a particular URL in the BlackBerry browser.

Developers: Please don’t do this. The functionality the application needs to call on the back end to get the account information and account activity clearly exists (the iPhone application is using it) and the BlackBerry platform supports the exact same application capabilities that the iPhone does (the same API’s are generally available across both platforms) so why the dfifference? I bet it was harder to do for the BlackBerry and it will take them some time to deliver parity. I’m OK with that – UI’s are just easier to build on the newer platforms (iPhone, Android).  But the BlackBerry can call any service on the back end and process the data – just like the iPhone app. If it’s too hard to build the long list of account transactions like used in the iPhone application, just have the server return the activity as HTML and render it in a BrowserField in the BlackBerry version. You’d still get the same data and you can make it look like the iPhone application (although on non-touchscreen BlackBerry devices it won’t be as easy to navigate. You could always intercept the click within the browser field and open up the selected account activity record natively.

Anyway, my personal opinion is that hybrid applications for the BlackBerry should be avoided at all times. If you need to launch the  browser to provide your application with specific functionality then you’re not really trying to build a BlackBerry app – all you’re building is a shell program that uses the browser for its heavy lifting and I’m really not interested in using that kind of application.

 
I Love it When Bob Cringely Gets Mad PDF Print E-mail
Friday, 29 January 2010 09:19
AddThis Social Bookmark Button

Robert X Cringely used to publish on www.pbs.org and now publishes his own blog at www.cringely.com. He has done a bunch of cool things related to the PC industry over the years – including being the author of Accidental Empires: How the Boys of Silicon Valley Make Their Millions, Battle Foreign Competition, and Still Can't Get a DateAccidental Empires: How the Boys of Silicon Valley Make Their Millions, Battle Foreign Competition, and Still Can't Get a Date which I really loved.

Anyway, he writes about US Security every once in a while and recently published the following regarding how hard it was for US Officials to determine whether this Christmas Day Bomber was a terrorist:

“Instead of just complaining, let’s take a look at the issue from another angle. Contrast these three situations: 1) you are sitting in a hotel bar in Mongolia and want to use your Visa card to buy a round of drinks for your friends, and; 2) your Mom is at the check-out counter at a Sears store when the clerk asks her if she wants to apply for a Sears credit card and save 10 percent on her order, and 3) a possible terrorist with a dubious travel record and suspected al-Qaeda connections is standing in line at a European airport waiting to board a flight to the U.S. that leaves in an hour. What happens in each of these cases?

In Mongolia the bartender takes your card and authorizes it in seconds across a 12,000-mile round-trip. At the Sears store the transaction is not only authorized in less than a minute, but a new account is created and both your Mom’s identity and her creditworthiness are established and calculated on the spot, along with her discount. Meanwhile the airline, airport, local security, European police, Interpol, Transportation Security Administration, Department of Homeland Security, Customs Service, FBI, CIA, and NSA can’t between them figure out in an hour whether this guy standing in line in Holland should be allowed on the plane or not.

How is it that we can run our credit card operations so well and our national security so poorly?”

He’s right and has every right to be mad. Read the full article: http://www.cringely.com/2010/01/predict-me-im-from-the-government.http://www.cringely.com/2010/01/predict-me-im-from-the-government.

 
Android Development Trials/Woes PDF Print E-mail
Tuesday, 26 January 2010 08:00
AddThis Social Bookmark Button

As I mentioned last week, I’d been trying to build an Android application for my rich client session at Lotusphere 2010 (AD114). I got off to a very late start, but with the right resources I thought I could throw something together to show in my session.

I took the XML-based web service I created for the BlackBerry Java and Windows Mobile examples (they both provide native support for XML-based web services) and created a new one that used Representative State Transfer (REST) to process the request and return some JSON with the results. The agent is working great, I’ll write about it in a little while.

I created a Android Java project in Eclipse and started coding through my sample application, reading a couple of books as I went. I got the main application working, got the search box and the button that called the service working and was finally able to connect to the local Domino server to request the data (read about that here). As I tried to figure out the Android ListView widget, my application crashed and I just couldn’t get any further. I poked and prodded in Eclipse and the simulator and just couldn’t get anywhere.  Whenever I load the application, I get the following screen:

Android Application Error
It’s something in the startup of the application, but it’s not telling me anything about the source of the problem. On the flight home, I read more about the LogCat view in Eclipse that would allow me to see what Android is saying when the application crashes. It turns out that there’s an uncaught exception being generated when the application starts. Here’s the relevant log lines:

01-25 15:57:16.082: ERROR/AndroidRuntime(244): Uncaught handler: thread main exiting due to uncaught exception
01-25 15:57:16.092: ERROR/AndroidRuntime(244): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.johnwargo.contactlookup/com.johnwargo.contactlookup.main}: java.lang.ClassCastException: android.widget.TextView
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at android.os.Looper.loop(Looper.java:123)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at android.app.ActivityThread.main(ActivityThread.java:4363)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at java.lang.reflect.Method.invokeNative(Native Method)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at java.lang.reflect.Method.invoke(Method.java:521)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at dalvik.system.NativeStart.main(Native Method)
01-25 15:57:16.092: ERROR/AndroidRuntime(244): Caused by: java.lang.ClassCastException: android.widget.TextView
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at com.johnwargo.contactlookup.main.onCreate(main.java:58)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
01-25 15:57:16.092: ERROR/AndroidRuntime(244):     ... 11 more

At least I know what’s happening now – all I need to do now is figure out the source of the problem. I’m disturbed that I’m not getting more information in the UI about the problem. On the BlackBerry platform, you’d get an error message identifying that there is an uncaught exception and listing the exception that should be caught. If I had that information, I think I could find this problem pretty quickly.

OK, so I dug into the code and found the problem. I was using EditText and TextView widgets to create some of the UI. EditText widgets to accept user input and TextView widgets to display some text on the screen. When playing around with some things, I’d inadvertently cast the TextView as an EditText object (that happens some time when you’re copying and modifying code). As soon as I changed the cast to TextView, the application is running again. Woohoo! 

The line containing the information I needed is here:

01-25 15:57:16.092: ERROR/AndroidRuntime(244): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.johnwargo.contactlookup/com.johnwargo.contactlookup.main}: java.lang.ClassCastException: android.widget.TextView

Next step is to figure out how to use an Android ListView widget to display the array of names that is returned by the Domino server. Stay tuned…

 
AT&T Public Policy Blog PDF Print E-mail
Saturday, 23 January 2010 07:45
AddThis Social Bookmark Button

OK, so I work for AT&T now and that focuses me more regularly on AT&T-related topics, but I'm trying to write about them only when they apply to a wider mobility or telecommunications topic. I was poking around today and discovered AT&T's Public Policy Blog.

While probably not very interesting to people all around the world, but I did find some interesting articles about AT&T's response to the FCC regarding Network Neutrality. This topic has fascinated me for a while and the Jury's out (as far as I'm concerned) whether the results of this whole argument is going to be a good thing or a bad thing for me (us). I know I want to be able to do whatever I want with the network pipe my provider provides me and at the same time I understand the network provider's concerns about how their network is being used. Ultimately it should be the consumer's who's rights are protected (I know, I'm baised) but the result if we have our way will be that the network providers will ultimately charge us more for what we get - just to protect their investments in network upgrades and management hardware so we can have what we want.

Anyway, the site has several exhibits AT&T sumitted along with its response to the FCC that highlight some of the background details and outline what many think will happen depending on how this argument goes. I'm printing out hundreds of pages from the articles right now to read on an airplane in the next couple of weeks. i'll probably have more to say once I've read through all of them.  Stay tuned.

 
Lotusphere 2010 Files Posted PDF Print E-mail
Friday, 22 January 2010 12:43
AddThis Social Bookmark Button

As promised, the final database and project files for my AD114 session from Lotusphere 2010 have been posted to the files area of the site.The available files are:

Domino Database (with the XML-based and RESTful services code)

BlackBerry Java Project

Windows Mobile Project

I spent some time on the plane ride home reading through another Android development book and got some new insights to the problems I was having with the demo. I will spend some time working on that project in the next few weeks (in between the move to NC and my real job) and hope to have something posted by the end of February. Bug me if you don't see it by then.

I'll start working on the iPhone version of the same app - with plans (as they are) to have something posted by the end of March.

Several people have sent me emails about some broken links on the site. I implemented a commercial SEF plug-in for Joomla! and apparently even though they say old links will continue to work, they apparently don't. Thanks for the feedback, I'll try to fix them ASAP.

 
<< Start < Prev 1 2 3 4 5 6 7 8 9 10 Next > End >>

Page 7 of 24

My Book

InformIT (Pearson Education)