Produktivity

2006-12-29

If Programming Languages were art...

Muli Koppel writes about how we select our Programming Languages based on the credo of their creators, and that each creator can be viewed as a Sociologist or philosopher.
In my case at least, it's a very astute observation about why we use the languages we do, in order to create systems.

You could almost think of each language as an artistic style:
- Ruby : Monet, Zen Art
- Perl : Dali!
- Python: Bauhaus
- Java : Modernism
- JavaScript: Popart
- C/C++/C# : Renaissance
- Rails : A lot of Jackson Pollock's...

When programming it is important to feel comfortable with the language you are using. A function or module is like a piece of prose expressing a concept. Lack of feeling for the language will lead to dull code. Translation is not the same skill as creation, which is perhaps why strict design specifications produce uninspiring code.

It seems to me, reading Muli's piece and the comments, that there are 2 basic types of programmer, the artistic one and the scientific one.
The former is drawn to more abstract, philosophical kinds of languages that give a blank canvas and the latter is drawn to regular, mandated practices and defined boundaries.
There will always be disagreement in which way is the best way to work, the latter group cling to standards and manuals, the former defy best practice and re-use.

There ought to be room for both types, and their preferred programming languages, but I suspect the scientific approach will be more and more dominant as our industry evolves. There's a place for art, but it's usually only an option for the gifted few.

2006-12-25

Presence is content management!

Alex Saunders writes some more on 'New Presence'.

I've been thinking about this subject for a long time now, and my conclusion was much the same as Sean's in that people generally can't manage complicated presence.
In discussion with a good friend of mine, he suggested that it really came down to 3 'circles', your family and close friends, your colleagues and acquaintances/friends (but not so close), and then your contacts, in the sense that they are people/companies you have interacted with but you don't necessarily know them. Outside that is the rest of the world.
Each circle or layer has a template that inherits from the outer layer. So in order to make something known to somebody you have 2 choices; move the information out to their layer, or move them in to the layer which has access to the information. Providing a simple interface to what amounts to 'content management' would make it easier for people to manage their 'new presence'.
It also occurred to me that what you need is a personal HTTP server, rather than having it hosted somewhere. I initially started with the view that Jabber would be the model to do this, but I'm not completely sure - it would certainly be a very wierd form of Jabber, plus my experience of Jabber in general has not been that good (Gush fails to connect more often than not).

It must also be possible to direct information directly at a specific person/entity, regardless of where they lie in the circles. By allowing each relationship to be tagged and then to direct some published content to only certain tags, e.g. your electricity company is an entity in your 3rd circle, and is tagged with 'electric', you can publish your current meter reading to the 3rd circle tagged with 'electric' or to the specific entity name that belongs to your electric company.

New Presence is complex and there has to be a default, simple mechanism that is easy for the user to understand, but provides some extra dimensions to todays single-dimensional buddy lists.

Buddy List = Address Book, and every contact that I have in my several different address books and buddy lists, has a defined place in my life, but I don't spend too much time catgorising them. About 3-5 categories is all I could manage. The stuff I'm doing or listening to, or what I think or like or dislike is my profile and I probably have 10 of them at least on different hosts.
I need to take control of my profile through serving it myself (though the storage could be remote/mirrored/encrypted), and then I control who sees what, when.

As a side effect (and something I've mentioned a few times in the past), we don't need DNS, the connection is established as P2P. Only if we decide to include the 4th circle, do we need to register a domain.

In summary, I think this all falls out of the unification of identity, or perhaps that's the wrong term for it. Rather, I mean the unified control of identity; the ability to organise our lives around the sum of our different identities, while keeping the different siloes intact.

2006-12-08

'Phones are boring!'

Ari Jaaksi attended an Open Source in mobile conference and felt that the participants had it wrong.
"Cell phones exist in a very restricted ecosystem. Phones that you can buy today are closed; they include features, such as SIM locks, walled garden browsers, DRMs, MMS's, and other stuff desired by the ecosystem but ignored or hated by end users"


He's right, but if you put Linux on a phone it should open things up. Maybe we can have hardware without locks, that just takes a SIM card and lets you do whatever you want.

I think, the same as Ari, that we should be envisioning different sorts of device, not just phones.
I'd like to see the voice & keypad separated from the rest of the device. What I really need is a server/router, with a bunch of devices for gaming, voice (a phone), extra storage (pNAS- tm :) and a keyboard.
If I just want to travel light, i take the voice part and the router.

The router can do things like,
- pull down my email
- convert MMS to email
- upload photos to Flickr etc
- sync with a directory on my home server
- provide remote access to a fixed PC
- forward calls to some device I am using
- publish my location/presence to authorised subscribers etc

The beauty of putting Linux on the mobile platform (whatever that is, and it also applies to MS Windows) is that applications will come thick and fast, breaking through the walled garden and making the mobile internet the same as the 'fixed' internet.

I'd put money on it...