Friday, November 13, 2009

Hidden iPhone App #1 - TRUCKER1 Friends

I'm starting a set of posts regarding small hidden apps that would normally go unnoticed in the big Apple app store.

#1 TRUCKER1 'Friends' feature

TRUCKER1 was released by a truck insurance company called 1st Guard to give it's customers access to their data in Geico-style (actually better then geico in this case). Along with that came some other features like 'friends'.

'Friends' lets you exchange ID/PIN combination's with up to 3 of your friends so you can see each others location on a map. This is cool because (1) It's free; (2) it doesn't require MMS or texting; and (3) it is up to date and very accurate.

There are a lot of other apps that do this that require a lot of setup and they aren't free. Check this one out.

If you install and register TRUCKER1 and then click on the 'tools' menu... and then 'friends'... you'll see the app. It gives you a way to send your ID/PIN via email too. Very cool.

Once you can see your friends, you can touch the pin and see who it is and how far away they are. This works great when you're meeting at an event like a football game, nascar race or the mall.

This one is a hidden home run....

Here is the website:
http://www.1stguard.com/trucker1.aspx

Dan Ribar

Wednesday, October 28, 2009

iPhone App Approval - TheTale of Two Apps

We have two apps approved -- each with it's own path and length of process.

==========
App#1 complexity: high.
Forms: ~20
Technology: web services,XML, geo-coding, graphics manipulation, sound recording to remote SQL, etc..
First submission: July 9
Rejection#1: our server was down and the app was freezing (our problem)
Rejection#2: app was not written to handle airplane mode (our problem)
Rejection#3: we used a 'add contact' button for 'add email' (our problem)
Approval: Oct 20

==========
App#2 complexity: low
Forms: ~1
Technology: geocoding, math calculations, location services
First submission: Oct 14
Approval: Oct 28

==========

So, from my viewpoint, Apple is doing a great job. Complex apps require more processing to approve. Self inflicted pain is not anyone's problem but your own and we don't want them approving junk.


Good job Apple.

Dan Ribar

Monday, May 11, 2009

Sunday in America

Yesterday started off as a normal Sunday…. Work in the nursery; go to church; talk to the pastor… all normal activities. Somewhere on the ride home our 1-week old car decided to stop running and strand us in the 92 degree cloudless sunshine. Lucky for us, there was a Publix close by so my fiancĂ©e ran over and got us the all American fried chicken and coke picnic lunch while I awaited the tow truck.

So we’re happy to be enjoying a sunny picnic lunch, but wondering about our move to buy a low-end new car…. Then one of the coolest things happened. One by one, people started stopping and asking if they could help. Now picture that we are on the edge of civilization for Sarasota, FL. It’s just dumb luck that they just built a new Publix next to the break-down spot… but one by one these people started stopping. First a dude in a pickup… then another and by the time the tow truck showed up we had had at least six people stop and say “Everything ok?” or “Can I give you a hand?”

OK – I’ve been working hard to push the American handshake transactions, because It’s a return to what is good: one man shaking another man’s hand in trust. But how cool is it that in the midst of America’s seeming demise (by it’s own hand), the real American spirit still comes out: help your fellow man. My preacher would say “Love your neighbor as yourself”.

These people that stopped didn’t have to; they didn’t get paid; they had nothing to gain… but the real American’s stood true and stopped anyway. Wow – what a great Sunday in America!!!

Dan Ribar

Monday, January 12, 2009

Device of the Century - The Winner is: Apple iPhone

The Apple iPhone is by far the quintessential example of applying technology to enhance your everyday life experience. This single sexy device that slips into your pocket does so much, but here’s a short list to start.

The iPhone:
  • makes crystal clear phone calls
  • uses my vehicle as a hands free kit (via Blue tooth)
  • maintains a single unified contacts list
  • send and receives text messages to my kids
  • accesses the NATIVE Internet via browser
  • plays any music from my iTunes music library
  • plays any movie from my iTunes movie library
  • remote controls playback & volume of music
  • shows me business statistics from my office (native)
  • gives me full time access to all email accounts – for me this means our corporate Exchange server and my Yahoo account without the archaic ‘syncing’ process
  • provides a quick calculator and switches to scientific mode if needed (this may sound insignificant, but watch how many people in your office reach for a calculator, start up windows calc, or excel)
  • shows me interactive gps-driven maps and directions
  • fully integrates into Google maps with streetview
  • tells me what is around me – restaurants, gas, hospitals, movies…
  • tells me the name of the song playing on the radio
  • entertains my children on long trips in the car
  • wakes me up in the morning
  • provides a flashlight at night
  • gives me instant stock information
  • gives me instant weather information
  • lets me read the news anytime I want
  • gives me access to my bank account and lets me check balances, pay bills, etc.
  • reminds me when I have a pending appointment
  • prints a picture that I just took directly to my network printer
  • set a timer for the cake in the oven
  • eliminates carrying my laptop in most instances

Did I mention that it fits in my pocket?

I am not a mac-lover, but Apple continues to prove that their technical integration skills are the best. The iPhone continues to rock my world with cool technology thatactually helps life happen – in the office, on the road, at home and everywhere else.

Dan Ribar

Find the iPhone at: http://www.apple.com/

Sunday, January 11, 2009

Corporate Web services -- Connect by Disconnection

There will always be a need to give customers confidential and sensitive information from an Internet based Web Server & application. Historically all of this logic has resided on the web server, but there are new ways to disconnect the Internet from your sensitive information and still give the customer what they want.

One great way to protect your Internet website is to eliminate all of the business logic from the site and rely on a corporate web service that is further back behind the firewall security level.

If you’re not too sure what a web service is, consider it to be like a secure web page that has no user interface. So I can get to most web services to see what they have to offer by keying them into my browser, but daily operations are all in-band – no user interface.

One example of a web service might be to calculate a customer’s current balance. The old style would be to put the SQL statement as well as the communications parameters (including login and password) to get to the SQL server right on the website. Now, this is the outside website, so it has a bit more exposure to the dark side of the Internet. This is actually very common practice and fairly secure, but there is a better way.

On your internal web server, create a web service that has the needed function – in this case a function called ‘GetCurrentBalance’. Inside of that function and safe from the Internet are all of the SQL statements, connection strings and business logic that will give the correct answer back to the requestor.

Your customer website that is looking for a balance, now asks a simple question to the web service, and presents the answer. There are a lot of other steps – mostly authentication and security related, but bottom line is that all of the confidential and business critical information has been removed from that exposed web server.

One tangential benefit is that you don’t need high-end programmers to write pages that ask for a current balance [for example]. One line that asks the web service can be handled by most 9th graders, so you can apply a bigger resource base against your projects.

One other hidden benefit is that although you have to (or should) write wrappers for these functions within the web service, your code base will get homogenized and consolidated into a single set of class libraries – something that is typically problematic when you have multiple web servers / applications. Microsoft and the world will tell you to compile and distribute these libraries, but it’s a forced way of doing things.

Disconnect your website by connecting to a web service.

Dan Ribar

Saturday, January 3, 2009

iPhone Development - RSS, XML, ASP.NET and Generic Handlers

As soon as your boss gets an iPhone, he's going to be asking you how to get to your corporate data from the road. Good side is that you'll need to get both a Mac and an iPhone but then you need to make it all happen. We focused on delivering a solution quickly that was very simple, adjustable and quick to market.

Specifically for us, we have corporate statistics that our executives wanted to be able to view easily from the road without having to boot up a laptop, find wireless, login to our web app, navigate to the statistics page... you know the drill. Instead, they should be able to pull their iPhone out and push a 'stats' button. Boom! There are the stats.

Many people are searching for the golden sample iphone application that they can mode and forget that there is back-end infrastructure required to feed that data to the requesting iPhone. To get that done, you're probably already thinking a nice web service feeding back XML. SOAP comes to mind but the current release of the iPhone SDK is light in support. This is here most people will direct you to using REST. REST is cool in that it is an URL based requestor but it takes a lot of work to set it up.

Remember that part of our goal is 'quick to market' so why not consider the generic HTTP handler that is in Visual Studio.

Here's what you do:

1. follow the sample for building an RSS reader and get it wired into your iphone. Follow it word for word and it will work great. Here is the link: [Click Here]
2. now in Visual Studio add a public generic handler. This will be a .ASHX file
3. in your SQL database, build a table that houses a user name to iphone ID relationship
4. edit the generic handler to take in two parameters -- one for the requested operation (in our case: stats) and one for the iphone ID.
5. if they are validated respond to them with the stats in XML using context.response
6. test this in your browser passing the correct parameters so you know it's
working before you start trying to hit it from the iphone.
7. now adjust your iphone app to use your new URL with parameters.

Once you get the basics working:

1. create a corporate db table that houses iphone ID to user Id relationships and check it as the first operation on the handler. This makes the handler extremely secure because you can't get past the front door without a valid iphone Id. BTW, we used UDID to get the addresses to be used. You have to do this for the ad-hoc provisioning anyway so you're doubly covered.
2. create a logging function that writes date, time, user, iphone and function to a table
3. enhance the iphone app to allow drill down capabilities (just another operation)

A couple of notes:

this is scaleable by way of the parameters passed.
you can adjust the output at the asp.net level instead of the iphone.
this is very secure in that only the registered iphones will get in.

Good Luck

Dan Ribar