Archive for September, 2008

V For Volatile

Tuesday, September 30th, 2008

Let’s assume we are buying a business software that will meet some business needs for our business. It is a multi user enviroment, so we opt for a product with a Client/Server architecture. What to ask for, other than the obvious requirements for the task?

I would, first of all, ask for ease of deployment. What good is a software if you can’t run it? Ease of deployment for both the clients and the server. But clients here are more important for two reasons; they will be many, and they will be installed on desktop computers in the wild. As opposed to one server, which is (hopefully) maintained by professionals. So I would like my new software to be easily installed, uninstalled and upgraded on any computer connected to my network.

I would also like to be able to access the software through any client connected. It is a bad bad security model to rely on authentication against a client installation. Each and every client should be identical and the authentication should be done against some form of credentials1.

As a user I would also like to know that the client software will not mess with the rest of my system. Software breaking2 other software, or the entire operating system is useless, no matter how much utility it has otherwise.

I guess you have realized by now where I am going with this. The system I have described above is unlikely a big over-burdened application that radiates seriousness from your screen and clings itself into the bowels of your Operating System. I am actually talking about a volatile client and server architecture. Where the client almost doesn’t exist. It exists of course. It resides on the server until you connect with your browser3, then get downloaded and run. This model is called Rich Internet Application, RIA for short.

The key characteristics of RIA are;

  • No install or uninstall4.
  • Automatic remote upgrades.
  • [Sandboxed](http://en.wikipedia.org/wiki/Sandbox(computersecurity))

Rich Internet Applications are powerful and considerably easier to deploy. They do have one drawback; the platform (HTML+CSS+JavaScript) they run on is not designed for applications from the beginning. It is initially designed for documents and then extended to support for applications. The main practical problem is that the JavaScript implementations are not as fast and reliable (on high loads) as native code or other popular interpreted languages. But we have started to see a new breed of browsers specifically built for applications. I am sure JavaScript virtual machines will be improved significantly in the near future.

On the other hand benchmarking and measuring performance by actually using and application typically yields different results. In our example, business applications do not involve heavy operations that require a lot of processing power. Non-linear video editing does, image synthesis does, desktop publishing does, business applications doesn’t. So the RIA would still be my first choice even with the possible performance problems mentioned above.

More on this later.

Bookmark and Share

Does Django Need An Overhaul?

Friday, September 26th, 2008

When I wrote Freedom is Power, I was pissed off because of the extra work of extracting all the info into the context for Django’s templating system doesn’t support enough logic. You have to create many little variables to be inserted only once in the template, while you could have just passed the model instance itself. Coding and maintenance becomes harder.

I have done some thinking over this but I am still not sure. If you’re doing both the views and templates yourself then it can be overkill. Just like static typing, or public/private/protected discrimination. On the other hand for design-heavy projects, where there is a seperate template designer who doesn’t know/care much about programming it makes sense. Still the possibility of having adequate presentation logic in templates is a good thing. It shouldn’t hurt anyone.

Last week (jinja dev) Armin Ronacher has posted an article named “Why Jinja is not Django and why Django should have a look at it“. It is a comprehensive comparison of internal workings of both templating engines. Inevitably it is a little biased, but I think each argument is valid and important. If you are into Django, it is a good read. There is also some speed comparison to back it up.

I am currently working on a project using Django. But I don’t touch the templating engine for this one. Everything served as JSON. :D

Bookmark and Share

Social Networking Done Right

Monday, September 22nd, 2008

Let me just say that the social media, or more technically loser generated content is inherently flawed. That is of course a polite way of saying it is screwed. But I am not a polite person, so there you have it. I have found a CNET article explaining why. It is a short, good read. So I won’t go into details why social networking sites are crap.

But I would like to take the first argument from the article and elaborate on it a little bit; There’s nothing to do there (in a social network). Social networks like MySpace, Facebook and Orkut are based on creating a profile and associating other profiles with it. Thus you get to show everybody how many friends you have, you get to sell them and poke them and bite them (via Facebook applications), you get to rate them (in Orkut) and finally you get to send them private (and otherwise) messages. You can do all this stuff, so these social networks must be invaluable tools for our social life, right? Let’s take a closer look.

Last time I checked, relationships were more about quality than quantity. Who cares if you have 10 or 1000 friends in your profile? Having a huge friend count doesn’t even make you a popular person as far as I’m concerned. Because I know people who just pop out of nowhere and request to be friends with me. Unsurprisingly they have a high friend count themselves, go figure!

I think relationships are about sharing experiences. Social networks like Facebook give you that opportunity. In a twisted sick way though. For example you can poke your friends. Think about how much you can strenghten your relationships by poking people. And not only that, thanks to the application API you can buy and sell your friends as pets or you can suck their blood till they become vampires. Just the constant stream of invitations makes up a great experience. But I doubt it is the kind of experience Facebook wants you to have.

But hey, you can use social networks to communicate with people too. Isn’t that a good thing? You can publish your status, you can send your friends private messages. You can even join groups to meet like minded people! Isn’t that cool? …well, no. If you think that’s cool you must have missed the news about something called Internet! You can do all these without a social apparatus and almost always more effectively. You can email people for example. I would suppose people check their email more often and with greater attention than their social web2.0 gadgetry Mainstream social networks are not much more than profile association tools. There is nothing to do there. And noone, other than your friends, cares about your profile decoration. Perhaps not even your friends…

This huge mass of loser generated content reminds me of all that wasted bandwidth over once popular and useless e-mail forwards. When I lashed out to the senders they would be offended and surprised at the same time. How could I reject these wonderful delights Internet has to offer us. Do they still forward? That was before we had hyper-super-wall applications and send-poop applications. Actually I am a big fan of user generated content. There are many blogs for example, not only worth reading but their content is so precious that you can’t just possibly buy a book or take a course to get to that information. These people genuinely have something to tell and they have spent the effort to set-up a proper channel for their valuable voice. There are lame blogs as well, but of course if you’re reading this you already know that. But the bad ones are not strongly connected with the good ones, therefore you don’t even have to notice them. In other words they can not publish stories in your news feed.

There are also social networks that are built around another application. So there is a common goal, or at least something solid to talk about. I divide them into three and a half categories; building, sharing, bookmarking and business.

  • Building applications with social networking are in my opinion most sophisticated and most valuable. Common example is Wikipedia. If you find it hard to spot social networking elements in Wikipedia that is probably because you have only seen the frontend. Wikipedia is a big community, and they form a social network with a wide communication bandwidth. Just google it to find out about how they operate and edit. Another good example to this category is open source software development. They also form a social network, and the networking aspect is much bigger this time.
  • Sharing applications with social networking include Youtube, Flickr, 8tracks and the like. I won’t deny most of the content here is loser generated, just go to a random Youtube video and try to read the comments. But that may be, on an end user level, irrelevant. In these applications networking is not pushed too hard and the sharing mission is fully accomplished.
  • Bookmarking is actually a special case of sharing. Bookmarking applications such as Reddit, Digg and Stumbleupon are built on an incredibly powerful idea of sharing bookmarks. Today we are using WWW for many different things, but generally surfing is still the most prevalent. And hyperlinks and search engines fail to serve well enough for general purpose surfing. Social bookmarking does. You can choose a general or specific category and enjoy an almost endless stream of human reviewed websites.
  • Business oriented social networks form half a category. They are not very different than mainstream friend portfolios. They emphasize business networking and I hear they can be useful. People are more open to meet new people in business context and these sites copy real world interaction successfully, so I don’t put them together with the other time wasters.

If you want a web presence the best way in my opinion is blogging. If you don’t have anything to say, no matter how many social profiles you have and how many times you can twit a day doesn’t really matter, nobody cares. You can also incorporate social media if you like, you can import your RSS into your Facebook profile or ping.fm some your posts. There is no need to spend a lot of time tweaking your profile, it is pointless.

On the other hand social networking is an important concept. It adds value when it is built around another, related service. Take Kongregate for example. I mentioned about how it is structured as a game which forms social network with unique dynamics. Check it out, if you also believe profile association is not the highest point for social networks.

Bookmark and Share

Best Way To Shut Your Customers Up

Wednesday, September 17th, 2008

I have seen two significantly different approaches to the sales problem. The prevalent one is to push it onto the customers even if your product is crap. The other approach is to try to perfect the product, perfect the marketing, perfect the whole user experience. The latter is seldom seen, and for a reason.

I am business illiterate, I won’t even pretend I know the first thing about sales. But inevitably, just like everybody else I am a customer, I try hard to get it right. So I try to understand what happens behind the counter. I don’t think it is as simple as I have the good you have the money let’s trade.

The common business model or sales model looks just like that from the outside. Me Tarzan, you Jane simplicity. But first of all you should notice that the sales person doesn’t have an emotional relationship with the product. I am not talking about romance here, maybe just a strong feeling of the product being really useful, or some personal experience. The reason might just be that the sales person doesn’t try hard enough, or it might be that the product is not really cool anyway. So they either fake it or they enlighthen you with “uhm, I don’t know actually. But…”s.

Another characteristic of the conventional model is that you don’t get proper service after sales. This is mostly because the product is crap and therefore the service costs are higher. Or more dramatically because the seller thinks that the market is a set of buyers. And a subset of those buyers will buy her product. And a subset of that subset of buyers will be dissatisfied. Now if that dissatisfied group is not effective enough to reduce the potential buyers that’s fine. Whether they are satisfied or not she has cashed in. Once this market is saturated, there are other crappy products and new markets for them. I am not making this up, I was explained this and I was assured that it works. Furthermore I have seen it in action personally.

The other, brave model of making it right is rarely seen. Let us be honest here, financially it is not as rewarding as the conventional model. It is difficult to implement and even more difficult to keep alive. But from my point of view this model should be the only one. I don’t care if the seller has earned ten times her investment. As a customer I only care if the product is as good as it was advertised and if I will get proper customer service after the purchase.

When I find a supplier for a certain product that does business the right way, I stop looking around. This prevents you from learning what is new, but it also saves you time otherwise wasted. For some things you just don’t get much from being an expert.

I used to move from one hosting company to another, but for several years I am using Webfaction (formerly python-hosting.com). I am 100% satisfied with their services, and it is not expensive as some of you might think. I don’t know much about the competition now, for the reason I have explained above, but I know there are too many cheap, as in cheap imitation, hosting companies you just regret you have ever known them. Webfaction does it right. And they are still alive and probably growing up[1].

So what do they do right;

  • Their plans are no BS. They give you shell access (for shared hosting too) and all the tools you need. They have installers for popular programs for quick and painless setup. If you need a library the server doesn’t have they kindly install it for you. Finally you can install and run your custom application.
  • They are open and proactive; when a server goes down it is immediately posted to status blog. And posts are updated when the problem is fixed, usually with detailed information about the problem and/or solution. I think being open is huge on customer satisfaction.
  • Their technical support is great. I don’t remember a single issue when my problem isn’t solved somehow. Response times are very good, support people really know their stuff[2] and they are always kind. I have asked many stupid and/or irrelevant questions but they have never disdained or told me to search the forums. This is the biggest reason why I don’t keep an eye out for hosting companies.

Webfaction has started showcasing sites they are hosting. This is a simple, easy way to strenghten the community. Why do I care? Because Webfaction users are like-minded. So there is a community to begin with. Maybe the most important consequence of the do it right model is that you end up creating a community around your product. Let me re-phrase it; a community with you in the center.

Before I sign off I would like to mention another company that know how to shut their customers up, in a good sense. Neosante is an online store for supplements. I have purchased from them many times. They do nothing extraordinary, they just do it right. Everytime. Even when there are many bigger stores selling a wide range of products, this niche store does near-perfect compared to all of them.

I used to work for a price comparison site so I have a rough idea about the market. But those figures shouldn’t mean anything to customers at all. We should have a different set of heuristics for the success of a seller. Take Neosante; I give my orders, they ship it, they ship it right, they ship it on time, I get what I have ordered, I am offered a satisfactory solution if I have a problem, I say this is successfull. Anything else, I stay away.


1: This is because they are smart people.

2: No “have tried turning it off and then on again?” stunts.

Bookmark and Share

Just Enough Chrome?

Tuesday, September 2nd, 2008

Google has announced Chrome as its new open source web browser. Is the much rumoured Google OS? Or just giving back to the open source community as they state it. In any event I think it is good news.

They have a nice comic e-book highligthing the features of chrome. Here is a list of the features I find most interesting (and promising):

  • It is a multiprocess application (instead of the multithreaded approach modern web browsers use). Interesting thing is not only tabs (or HTML renderers) but JavaScript VM’s and plugins are seperate processes too. This is the most important feature IMHO, read more about this in the comic.
  • The interface is almost non-existent. Of course we need to try it out before we decide if it is unobtrusive or literally non-existent. But web browsers are all going towards the direction of minimal interfaces, and I think this is good.
  • It is said to be faster. Faster page rendering, faster JavaScript, faster everything… I don’t know if it will be really considerably faster; but if they implement those enhancements over JavaScript VM it would at least be smoother. The comic has info about the new garbage collection strategy and compilation and running of bytecode.

I am pretty content with the Firefox 3, its new full-screen mode and somewhat intelligent addressbar. It runs quite fast, crashes only once in a while (and almost all the time because of the stupid flash plugin). But Google’s web browser is still exciting news, I will be looking forward to its launch. Don’t forget to check out the presentation.

Bookmark and Share