Tuesday, September 9, 2008

Selling Software Is Hard

Writing software is hard, but for a programmer, marketing it is even harder.

Once you've written the functionality, gussied up the interface, prepared the documentation and created the related webpages it is extremely frustrating to find that in actual fact, all you've done is managed to finish the easy stuff.

With 6 billion people in the world, you would think that getting some of them to look at and use your software would be straight forward.

The trick to selling software is surprisingly easy to state: All you have to do is create software that performs a task, find a group of people who need that task performed, create a moment of clarity for them regarding the purpose of the software and then find some way to stop them from crushing you in the rush to purchase.

The problem comes at the point you try to get the people who need the software to notice you, and to listen to you long enough for you to convey that moment of clarity.

The name of the game is Persistence.

Good Luck :)

Saturday, September 6, 2008

The iPhone, Legacy software and modern computer security

The problem with most common security models is that they are based on a security model that was developed many years ago for mainframe computer systems in an environment where, in general, the user was the distrusted element and not the process.

The user based security model that Unix and Windows offer today is actually nearly useless in the face of the real threat.

Traditionally in large mainframe systems it was the user that was seen as the threat, everything on the system was backed up on a regular basis and software in general did not tend to travel far enough, fast enough, to be much of a vector.
Because the user was seen as the potential source of trouble, they were given 'sandbox' environments known as 'user accounts' in which they could roam freely but not easily leave without demonstrating that they had the right to access other parts of the system.

On a modern PC, we all have documents, pictures and other personal files that we do not want to lose in the case of a problem, yet very few people outside of the IT community actually have backup systems in place, and nearly everyone stores those documents and files within their own user profile - the same user profile within which they run software they download from the internet, mount drives other people give them and generally take insane risks on.

The threat in this modern age is from the process and not the user. With password protected access the user can be assumed to be trusted to a reasonable extent, burglary victims aside, whereas a lot of software cannot.

A seemingly obvious solution to this is to place each application within its own 'user' space, treating them in the same way as Linux, Mac OS X and Vista currently treat individual users, with their own limited file access.

...and the iPhone does exactly this. Each individual iPhone application is limited to its own set own of folders, and has no ability to look outside them or to open or alter documents in other areas of the file system.
There is a single shared area, where the user can choose to place files for which that makes sense, but fundamentally each application is being given its own user space in exactly the same way that users are on other operating systems.

It is an interesting step forward, and one that I do expect to see appear on mac os x. The most likely initial implementation is as a 'sandbox' environment in which untrusted applications are run by default, with the user having the ability to move them outside of that environment once they are happy.