March 18, 2011

Early adopters: losers or heroes?

When a new technology, gadget or device, which I will refer to as "thingy" from here on, comes into existence, it must manage to enter the hype cycle. Otherwise it won't get noticed. It's creators will need to convince other people to use this new shiny thingy. I am not talking about beta testing. We are already past that stage. The thingy needs early adopters. The thingy needs an army of zealous thingy evangelists.

So, the thingy's makers - or rather, the thingy's investors - need to convince a fairly large group of people to use the thingy and tell the world how incredible the thingy is and how it has changed their lives. People like that usually are not hard to find at all. They are always there, on the lookout for new, trendy coolness with which they can differentiate themselves from the masses: the trendy people. They simply need to be among the first adopters of the thingy, because being cool and trendy is their sole purpose in life. Sounds pretty pathetic when you put it like that, doesn't it?

Well, they don't care what we think of them. The are on a mission to show off their state-of-the-art thingies on any occasion that gives them high visibility. The more, the better. They crave being at the center of everybody's attention. They have this intense desire to be admired for their unworldly coolness. That desire will grow ever stronger, until being übercool is all that matters, all that drives them. That is when they have turned hard core.

The hard core early adopters lead very busy lives attending parties and visiting conferences, fairs and exhibitions all over the globe. They may very well still live with their parents technically, but also have appartments in New York, Paris, Tokio or any combination. They sleep in a business class airplane chair and live out of a suitcase most of the time, but somehow manage to look perpetually fresh and dashing.

Only during the Christmas holidays the übercool get to relax a couple of days and visit their friends and relatives and shower them with the obligatory, promotional presents, hoping to win some souls here too. These people live the fastest and shortest but coolest lives, while driving our precious economy at the same time. Without these people, new thingies wouldn't ever get adopted. Without these people, Apple would not even exist. Early adopters are practically heroes.



Powered by ScribeFire.

March 15, 2011

Koz: 100% event driven programming language

Vision
Koz is an object oriented programming language that is purely event driven. Koz is pronounced as chaos, but can also be pronounced as cause. The philosophy behing koz is that chaos is ordened by means of cause and effect. Separation of concerns by language design: no direct object to object interactions. A system would consist of a number of autonomous objects that only act on the occurence of events (triggers) in their context. Objects never explicitely connect with other objects.  

The basic idea
The main idea is that Objects only act when triggered by events effected by objects in its proximity. No direct invokations. Everything is strictly causal. The result of an action always is an event. Events can trigger other actions to run, local (scope) statements to execute and other objects to act. There is no need for loops or conditional statements. Just a list of unordered statements. Each statement has an identified trigger and and identified effect. During runtime, the order of statement execution is determined. The compiler or VM (or interpreter, as this could well be a dynamic scripting language) should be able to determine unreachable statements (never executed because it will never be triggered).

Primary mechanism
The primary mechanism of koz is based on triggers and effects. A trigger is the occurrance of an event. A statement can only be executed if it is triggered by an event that occurred within the scope of the statement. Scoping is similar to other programming languages (blocks). There are two scope types in Koz: block ({ }) and action (compare to class method). A block or action is finished when certain conditions are met. It results in an event (for instance Action.end) into its surrounding scope (context)

Objects can be aggregates of other objects. An aggregate scopes the events of the objects inside.A trigger is bound to an event type, never to a specific event instance.

Syntax (BNF)
predifinedEvent = init|changed|disposed|...
definedEvent = predefinedEvent | identifier
trigger = definedEvent | definedEvent identifier
variable = type identifier {(trigger(,trigger)* : expression;)+}

Predefined events:
scope-init
scope-end

About variables:
no direct mutations, only through predefined triggers
predefined events: init, changed, disposed

Example
The example below counts the lines that are entered in standard input. To do so, each line is added to a List object. Notice how the trigger System.in.lineEntered changes the state of myList. the new line is added to the list by using the + operator. Also notice how the variable lineCounter is set to 0 (zero) through the occurance of the init event, and the myList.disposed event. And each time the event myList.changed occurs, the value of lineCounter is set to the size of myList.


List myList {
  System.in.lineEntered line: self + line;
};
int lineCounter {
  myList.changed: myList.size;
  init, myList.disposed: 0
};


March 14, 2011

Bloggers are tenaciously idealistic fools, as they should be

I'd say that the blog is rather dead. You already know that and you're shamelessly yawning. No, don't suppress it! It is perfectly alright. It is commonly known that most blogs are deathly boring. Who has the time to read all those undoubtedly brilliant but tediously long and redundant items? Most blogs have a high yawn-factor. People stop reading at just about this point in any blog post. Whatever I write after this, probably won't be read.

Oh, you're still with me? Wow, I'm flattered. I mean it, because you got past the title and my first paragraph. A well read blog post has a catchy title and is up-front with the conclusion. Whatever is read after the first paragraph is pure bonus. If you're really brilliant, you manage to keep the reader's attention a little while longer. But more often than not, your message has already been brought accross by an army of bloggers before you posted your own message.

You, the tenaciously idealistic, blogging fool , usually won't think of that when you write your master piece. I don't intend to make fun of bloggers (well, just a little bit). Being foolishly idealistic actually is a good thing. The power is in the larger numbers. The more redundant the message, the more important it must be. So, don't hold back, publish that redundant post.

Perhaps you could target your message a little more precisely. The avarage blog is often hard to read on a large portion of the devices used for accessing the internet. For instance, if your post is targetted to business people, aim for best readability on a blackberry: Catchy title plus 5 or 6 sentences top, and start with the conclusion. Say what you want to say first, don't build it up.

Or if your intended audience consists of stay-at-home moms, aim at something Oprah would want to read to them from her show. A post titled "Why flirting with other men and buying shoes makes you happy", would get their attention. Your Oprah style piece ideally fits on a single ipad screen while taking the ad space, easily amounting to 50%, into account. That leaves space for perhaps two paragraphs. Say what you want to say first, don't build it up.

But then again, I am no expert on this topic, because statistics don't lie. This blog is way up there on the list of blogs with a high yawn-factor. I could say that I don't care, because I mostly write for myself. But that would be utter nonsense, because I am also a tenaciously idealistic fool who desperately wants to see the number of page views reach into the tens of thousands.





Powered by ScribeFire.

March 07, 2011

Big Clouds Cast Dark Shadows


It is an ongoing discussion around Cloud Computing: Can cloud providers be trusted? Will they take care of your data in the ways we expect? And in the light of the recently announced shutdown of Delicious, the once popular cloud service for remembering and sharing your bookmarks: Do clouds last?

Let's start with the trust part. People have been collectively taking a huge leap of faith when they put all their personal contact lists and photo albums on a convenient and immensely popular cloud meant for that purpose. I think you know what cloud I am referring to. It is provided by a company that might sue you for saying the body part that contains your mouth, nose and eyes to loudly, while at the same time treating their cloud users like they don't care.

Back when today's clouds were born, the baby cloud did its best to look innocent, inviting and promising. It lured new users with fun, free and easy services. Come play and don't worry, I'll take care of all your data items like they're my own. The cloud grew bigger and bigger and became more and more powerful. And eventually, the once idealistic little cloud needed to answer to its investors for its exponentially growing maintenance costs. It needed to find a way to turn the user base into money. And that's where it became less caring and more demonic.

That's right: demonic, because the cloud has become detached from the humans it provides its services for. It wants to know everything about you, but it couldn't care less at the same time. It feeds on your gullibility. It leaches its user base of profiling data. It has to, because it will die if it doesn't. That's the shadow a cloud casts. The bigger the cloud, the bigger and darker its shadow. Once a demonic cloud has your soul, it is very possesive about it. Try deleting your account. You might need a shaman (lawyer) to exorcise your demon (break the contract).

I am not saying that all clouds are demonic. I am just saying that you should be aware of the consequences of sharing personal stuff with a company that largely acts on the financial demands of its shareholders. For its existence, a cloud depends on servers, people, electricity, et cetera. It needs a constant and reliable revenue stream to finance all that. On top of that it also needs to be profitable, because its investors want value for their money. It is as simple as that. When the sustainability and profitability fail, the cloud is doomed and will be killed.

So clouds may not last. What happens to your data when a cloud is killed is unclear. I know that it probably isn't going to be returned to you. Your data will most likely be sold to another company. That is why I believe you should be carefull. It is why I am starting to see the point of private cloud systems (such as PogoPlug or TonidoPlug) that allow you to make your personal digital items accessible from anywhere using any device and to share these items with other people, while always staying in control of your own files. A private cloud cannot get corrupted and acts on your personal needs, and not on the needs of the demon that lurks in the shadows.

Now, I might have read a few too many fantasy books. But that only explains my choice of words, not my opinions in this...


Powered by ScribeFire.