Getting UX right for mobile apps – I get it

February 20th, 2012 No comments

UX is hard, don’t get me wrong here, I’m not going to pretend a single blog post can even begin describing how hard this is.
Having said that, lets consider what is the minimum viable user experience for a mobile app.
Today ill try to cover one minor topic

“I get it”

So when a user first opens your app the feeling you hope to achieve is the “I get it”, if your app failed to deliver this feeling for the first 10 seconds, you have lost it.

Its not a secret that most of the apps that get installed on a smartphone these days are only given one shot and are being eventually either never opened again or uninstalled immediately.

How do I make users “get it” then? by speaking their language. When I say speaking their language I refer to providing the most expected, and what they are most likely best trained to understand, identify and use.

Apple releases a never ending spec of how your app should look, feel and behave, fail to comply to  their rule of thumb? you don’t get in.

This all comes for a reason, an Apple user, or rather an iOS user to be more specific is being taught  how to use his device from the second he opens his iBox, completely opposite to what happens on Android, where every device or even every ROM speaks its own UX.

Speaking the same UX language across the entire stack of apps makes your users “get it” much faster, thus improving on user loyalty.

So what does a “I don’t get it” UX look like?

Path seems like a very  nice app, its eye-candy iOS design made its screen shots on the app store a very big promise, only to find out that I have no idea what these buttons do, being able to click on the one you actually refer to is a challenge in it self for being way too small.

Path

 

 

 

 

 

 

 

 

 

 

 

 

A look at something an iOS user might feel like “I get it” much faster by Reeder for iPhone:

Reeder

 

 

 

 

 

 

 

 

 

 

 

 

Linkedin for iPhone:

 

Note that for the last couple of apps, the buttons are as big as an iPhone user might expect, and that the behavior is clear and the user understands what is about to happen once he hits one of the buttons, this can be achieved by either using “native like” buttons (IE the Linkedin way of putting stuff), or by merely using some text and familiar icons.

iPad 2 finally gets jailbroken

July 2nd, 2011 No comments

So its been a whiPad 2ile since I’ve been here, but I plan on getting back and posting lots of good stuff as always :)

For now, I have just noticed that the iPad 2 has finally been jailbroken, by what seems to be some sort of beta, and works on a limited amount of devices (iOS 4.3 wifi only), but if you are lucky & brave enough just follow the attached youtube video and enjoy your new kickass iPad 2.

the-1-click-jb

Categories: iOS, iPad Tags: , ,

iPhone integration to SalesForce, Yes it can be done.

October 14th, 2010 No comments

Well obviously it can be done, and it is today by the SalesForce application for the iPhone, however this is really nice when you have the capabilities you need inside.

If you would like to extend your application to connect to SalesForce, you are in the game at the right time, SalesForce announced last week that they are finally adding a REST API.
This is good news, why?

Up until today, if you would want to have a SFDC connection from an iPhone you could basiclly
Build a soap and start parsing the soap response slowly, carefully and hope to be doing it right.
However, this would require your SalesForce username, password and last but not least your security token.

The other way around this, was to write a proxy web service to take restful communication from the iPhone, and translate them into a SOAP connection using SFDCs meta API, this is not really handwork but the architecture brings another point of failure, and off course you find your link working much slower.

Now that SalesForce is going to support both OAuth and rest, the life of the iPhone developer trying to have all these crazy integration are just becoming much easier.

I’m not going to write any code samples here, but you may find a great project that updates quite frequently that assists building up restful requests quite easily under the Objective-C language – ASIHTTPRequest.

Now all thats left is to register to the webinar(26 oct), and get the final release dates and best practices from SalesForce.

Chrome has just become the best browser for SalesForce

October 10th, 2010 No comments

Great news for SalesForce developers, admins and users!
Today I have finally logged in to our new Corporate SalesForce instance that has been updated to the Winter 11` release, I was surprised to see the Page editor appearing along with some new capabilities that were not supported in Summer 10`!

Please do note however, that the ideaexchange still refers to these ideas of supporting chrome as under consideration :

So make use of this at your own risk.

The Chord protocol – a neat solution for distributed peer to peer networks

October 9th, 2010 No comments

In my academic studies, I came across a course that deals in large distributed peer to peer networks, the reason I am writing this blog post is because during my project I had a hard time finding implementations of the algorithm except for some Pseudocode and some very general explanations of the way it works.

The idea is simple, you have a large set of machines over an IP network, and you would like to have the best solution to transfer information between different nodes.

One of the algorithm / protocols that came up has been the Chord protocol.
From Wikipedia:

The Chord protocol is one solution for connecting the peers of a P2P network.

And it looks something like this:

So what does all of this stand for, and why would you care?
Chord is a very straight forward approach to P2P networking, using a simple consistent hash algorithm the Chord protocol provides a robust fast and strong method of managing the knowledge and awareness of each node against the other.

So how does this work?
The protocol is using a logical ring with 0 to 2m − 1 nodes, while every node is given a K reference to its successor.
Given an N nodes and K keys, every node is responsible for K/N nodes. This reflects a change of approx. K/N node changes on a node connection/disconnect.
The big thing about chord is the ability to find nodes in the circle in a sub-linear time (O(logN)), this is achieved by the fact that every node contains a “finger table” containing the successor node for every given node search required (the i-th successor is known to be (n + 2i), due to the circle logical structure used).

So given that A is looking after B, the search would look like:

Note that the first step, is getting to the successor of B, which makes all of this possible.

Attached is an implementation I have written in C# to demonstrate the usage of the Chord protocol.
It’s not quality code, it was just written as a POC.
1. building the chord-map
2. creating a finger table for each node
3.demonstration of an O(logN) search after a node, with the 360+search capability.

The full Pseudocode can be found at Wikipedia.

So how does FaceTime really work?

October 4th, 2010 No comments

Just made my first FaceTime video call today, which got me really thinking, how does everything wrap around the entire sweet iPhone dialer experience?
Googling the net a little, brought a few answer, some were surprising and the others were expected.
So the recipe itself includes the following ingredients (open standards to be formally correct):

  • SIP
  • ICE (extended by STUN & TURN to overcome firewalls and NATs)
  • RTP
  • H.264

Now this is all good news, and the process itself is explained later on this post, but the thing that really got me wondering, was the message we owners get when we first turn on the FaceTime feature stating that you must have SMS reception, and you may be charged for the standard SMS fees by your mobile operator.
Now this is odd, if you have a device that says to be capable of video over wifi only, why would I need cellular reception in order to initiate a call?

This is the point where the going gets boring.
In order to initiate a FaceTime call the following happens:

  1. Call initiator uses STUN against an apple hosted proxy, this helps determine the public address, and other points of failure towards the proxy.
    TURN is used to relay data between participants.
  2. A sip invite is sent out to the Call recipient, he then follows the same as the initiator on the first step, once the process is complete the proxy will return an ack packet to the initiator letting him know the recipient is compatible and overriding the data gathered by the recipient using the STUN “move”.
  3. The ICE algorithm is kicked off on both devices, in order to determine if a data stream is doable under these conditions.
    If no data stream  can be achieved the call will fail at this point.
  4. Once this ICE algorithm is complete, the devices can communicate through RTP which resolves in a successful video call.

Now this is exciting and everything, and apple has already stated they have plans to release this as a standard as well.
However, this still does not answer the need of cellular reception, and this is all easily explained once you dig in.
FaceTime is also supported by the last generation iPod Touch, which does not come with a Cellular chip, so whats required here?
An email address, thats right to start the FaceTime feature you must have an email address configured on your iPod touch.

So basically the thing is, once you enable FaceTime, it requires an identification between the device and the proxy sitting at apple, this means that for the first time you turn the feature on, the iPhone is sending out unencrypted data about you to the proxy to be used in the future in order to identify against the proxy itself.

Here are some quick pictures showing the process from behind the scenes (picture credits):

Proxy communication

200 OK

RTP Stream

Makes you wounder…

Categories: General, Security Tags: , , , ,

Stay Safe : A New ASP.NET Security Vulnerability Detected

September 19th, 2010 No comments

A new vulnerability has been detected during this last weekend.
The vulnerability is considered by Microsoft as Critical, so I highly recommend you do not delay patching your servers, and take the suggested recommendations to stay safe ASAP.

The vulnerability itself allows attackers to read encrypted data sent to the client (Ex: viewstate), or read file system files like the web.config which often consist of sensitive data.

The workaround suggested is to enable customerrors. do this by adding/modifying the following section on your web.config file, for each web application on the server(!):

<configuration>
<system.web>
<customErrors mode=”On” defaultRedirect=”~/error.html” />
</system.web>
</configuration>
After applying this fix, you may want to run the following vbs locally on the server to make sure everything is properly patched.
For more information about the vulnerability please follow this.

SalesForce.com how its done

September 18th, 2010 No comments

Some exciting times for the SalesForce CRM and the Force.com platform itself are happening these days.
In the last CloudForce 10′ London, Marc Benioff stood on the stage and has given some impressive stats that made me wounder.

  • 83,000 Clients.
  • 350 Milion transactions a day, that is 350,000,000 transactions A DAY!
    (thats 10% of what google does a day).
  • 750,000 Custom apps.
  • 1500 Servers.

These statistics are very impressive, come to think about it, if you look at SMBs to Medium size organizations today, you will find a fair large amount of servers within the organizations, however they never really reach success. there are always configuration issues, network issues, maintenance required, developers required and much more.
You always find yourself spending thousands of dollars for all of these precious resources, but never really reach the true scalable, cost-efficient solution you were really looking for.

The Force.com platform, finally allows business to reach this success without investing so much time, effort, and money to get there.

So how do they do they achieve this success for so many customers?

I have started looking back at DreamForce 09′ videos, and found some very comprehensive videos that give all the answers for these open questions , I recommend you check out the following video, and you find this intersting I recommend you take a look at the other CloudForce 09′ videos..

Version control and Force projects

September 12th, 2010 No comments

Ok so a lot of organizations would love to have version control when developing as a team, or even as inviduals.
Source is an important thing to developing anything basiclly. having that said, developing with the force.com IDE which is based on Eclipse allows integration with many opensource/free plugins when Subclipse is one of the best plugin to integrate against a Subversion repository.

What you need?

  1. Force.com IDE
  2. if you are using a 64bit JVM you will also need the slikSVN avilable here

installation in the Force.com IDE is simple simply go to : Help -> Software and Workspace center
Look for the subclipse plugin and install it and whatever plugins you would like to add aswell (see picture below).

Install Subclipse Force.com IDE

After you are done with that, you should be able to right click your force.com project -> Team->Share Project

Choose SVN as the plugin to share the project to.
In the following screen you would be promted with a window asking for the repository path, this is somthing that you should have had set up before or have recived this from the repository admin.
Click on finish and the subversion would create a sub-folder for your project.
Now the last step is to commit the changes to the repository, do this using the Team->Commit changes.

Thats it, you project is sucesfully connected to a subversion repository.
Now if one of your collegues would like to sync against your project:

simply revert to installing the Subclipse plugin, and follow the sync operation to apply synchronization to the SVN Repository the same way.

Sync to Subclipse

Categories: Force.com, SalesForce Tags:

Using the new VisualForce view state component

September 10th, 2010 No comments

As a part of the Winter 2010 release of Force.com another very compelling feature the guys are introducing is the View State component available on Visual Force pages.
To enable the view state, go to Setup -> My Personal Information -> Personal Information and turn on both Development Mode and Development Mode.

Now another point worth mentioning, is that the View State will only display on pages using the <apex:form>.
This is a short example of how easy it is to drill down to the data given by the controller and would surely help developers avoid the maximum view state limit VisualForce are carrying.

Here is a quick example of what the view state data looks like on a Custom Visual Force page:

Force View State

To find some more details about the view state you may visit the developerforce wiki.