dinsdag 1 april 2008 by arnoudm
Someone in our office put up a print of a really great comic from Eric Burke on the in our coffee room. It makes you laugh and it got me thinking once again how hard good user interfaces are to create.
Now it may seem that Google has it easy, you might argue. Google only deliver one service right? False; Google delivers many services and products, gmail, google news, search appliances to name a few. All of these services compete for space on the homepage. However Google remains focused on delivering the most optimal service 99% percent of their visitors come for. Apple products are known for relentless rigor and effort for getting the user interaction right.
So a classic example of the difference between simple and easy. Easy to use, difficult to create. I once attended a presentation from Gerry McGovern which provided with me a new and fresh look on user interaction design on the web. I recommend reading some of his material if you are interested why some sites work and some seem to get more in the way.
Geplaatst in Gerry McGovern, eric burke, usability | Geen reacties »
woensdag 5 maart 2008 by arnoudm
A great way to represent the major vendors in content technology:

Click the image to download larger one. By CMS Watch.
Geplaatst in CMSWatch, Content Management | Geen reacties »
maandag 3 maart 2008 by arnoudm
We are the brink of a new war in browser land. On top of the Firefox versus IE divide, multiple companies are now taking position to dominate the delivery model in your browser. Regardless whether you are running IE or Firefox.
It is obvious to everyone that the current browser based programming model based on Javascript manipulation of a so called DOM tree should and will be replaced by something better.
The alternatives so far to this have been marginally successful, Adobe with Flash and Java with it’s JVM and capability to run applets. Adobe did not have enough supporters in the server side programming world. Sun applets just looked awful.
Microsoft is experimenting with Silverlight running on its CLR virtual machine. Sun is entering the arena with JavaFX, a union of javascript, flex and java running on its JVM virtual machine. I have written about Apollo before, the new programming platform from Adobe. First aimed at the desktop, now this Adobe Virtual Machine is evolving to the browser, it has a new name Adobe AIR, but its principles have remained the same. Adobe is in the process of opening the virtual machine to run other languages and thus also opening up the developer eco system. They have already successfully worked with the Firefox team in project Tamarin.
The there is discussion about which scripting language to support in the VM’s. Is it an evolution of Javascript or Actionscript or is it a revolution. Microsoft and Firefox have different opinions.
The browser is the major delivery platform and will drive the programming language and model. No doubt will all three major contenders (Adobe, Sun and Microsoft) find a way to install their respective Virtual Machines in most browsers. Only time will tell who gets most mind share from developers, organizations and end-users.
Interested in where Javascript is going see a presentation by Brendan Eich, the creator of Javascript 1.
Why does this remind me of VHS, Betamax and V2000? Impossible to choose upfront, sorry when you have chosen the wrong one.
Geplaatst in Software Development, adobe air, firefox, javafx, javascript, silverlight | 1 reactie »
vrijdag 29 februari 2008 by arnoudm
Consider the following equation:
buggy release = bad testing
I agree this is true, if you release something for users and it contains many unknown bugs, a closer look at how thorough your testing is would be appropriate.
Turn the equation upside down and you get a second equation:
good testing = good software
In my opinion this is false and is a trap that many people, particularly non developers, fall into. Testing is the art of verifying the quality of software and by doing so at the same time enhancing the quality of that software.
Good testing alone is not enough to produce good quality software. As many studies have found, good quality is the result of doing many small things right and having a process in place that detects failures and takes corrective action.
A good resource that takes many lessons from a the field of manufacturing to the relatively young field of software engineering is Implementing Lean Software Development.
Geplaatst in Software Development, quality, testing | Geen reacties »
donderdag 28 februari 2008 by arnoudm
LinkedIn just upgraded the design of their homepage. I have been a fan of their interaction design and usability. With their clear functional design they set the bar for many other sites. The explosion of profiles and connectedness of accounts on LinkedIn proves that point.
The most surprising fact is that LinkedIn has banned tabs from their new layout. Amazon gradually did the same thing, in stages but with their last redesign last year they were removed completely.
Tabs are visually appealing and when done with the right design and very intuitive to use. Apparently this is not enough, LinkedIn and Amazon both abandon tabs as their primary navigation structure. At sites like these interaction design is well though out so apparently other ways are better to engage users to do stuff on your site.
More closer home, we are about to release an improved design for the BNR Nieuwsradio site, also getting rid of the tabs.
For more information on how to website implement navigation see Patterns of interaction design by Martijn van Welie.
Geplaatst in interaction design | 2 Commentaar »
donderdag 20 december 2007 by arnoudm
Unless you work in a starfish organisation you probably have some responsibility that is part of someone else responsibility and or the sum of the responsibilities of others. If you are an individual contributor you work on something your boss is being judged on, if you are a boss of some sort your responsibility should be for most part delegated to others (otherwise what would make you a boss).
One of the most effective things you can do if you have some delegated responsibility (from your boss) is making explicit you feel responsible. Feeling responsible and actually showing that you feel responsible are different things. The most powerful ways of showing your responsibility is saying sorry when things do not work out as planned. And most of the times in some way or another this happens.
Saying sorry shows you care, you accept your role in the mistake, and you have an intention to do better next time. I am often surprised by the power of that simple word in the right setting.
Showing and taking responsibility makes you stand out.
Geplaatst in Software Development | Geen reacties »
woensdag 5 december 2007 by arnoudm
Geplaatst in Arnoud, Mirabeau | Geen reacties »
dinsdag 4 december 2007 by arnoudm
KALAMI (n.)
The ancient Eastern art of being able to fold road-maps properly.
I remembered this quote from the Meaning of Liff while thinking about my latest and recent involvement in tuning a web sites that are complex and have high volumes of traffic.
Complex websites have many components interacting horizontally (in sequence) and vertically (on top of each other like a stack). Sequential components such as firewalls, load balancers, web servers, application servers, databases, content management servers and third party applications. Throughput is determined by the weakest link in the chain. So remove one bottleneck and you end up searching in many places for the next bottle neck. A strategy often used is by offloading traffic from one complex component to a more simple component. Caching in front-end servers is a classic example of this strategy.
A website integrates vertically, meaning one components uses another component to function. Examples are the HTTP and TCP/IP protocol, application servers, Java, databases, Operating system and hardware. An improvement in one component can and most likely will influence the performance of the other, often in ways you do not expect it. Change something in HTTP for the better, can have a downside on the TCP/IP level.
As an example one discussion that came up was about honoring Keep-Alive on http requests. My wisdom and experience has learned me that Keep-Alive’s are bad things for servers with a lot of traffic. Some colleagues agreed, others disagreed. Who is right? Most likely it depends… on many factors. So no one can tell. A quick scan over some high volume sites (CCN, Amazon, Yahoo, Google, AOL) shows that opinions on this topic vary. Some use keep-alive’s others instruct the client to close the connection.
In high volume websites there are many components each having many options to tune the performance. You need to look at them individually, but at the same time honor their role in the greater whole. As a result there is no clear cut recipe how to set up a high volume website. What works in situation A might or might not work in situation B. So it all depends on the specific situation and experience of the team.
I have some knowledge on this subject but I am by no means an expert or authority on this subject. A good starting point this the Yahoo website about Exceptional Performance.
What most online resources fail to point out is that no matter how many testing and preparation you do, the proof is in eating the pudding. And while you are watching your site slow down due to increased traffic, you need a good structure and set of rules to let the technical people do their work, make sure they progress in the right direction and keep the customer informed and involved what you are doing.
Geplaatst in Software Development, high performance websites, keep-alive, tuning | Geen reacties »
donderdag 29 november 2007 by arnoudm
Everyone active in de online industry probably has at least once edited their “hosts file”. Do you remember by heart what comes first the hostname or the IP address? I know I always forget, fortunately there is always an example in the file itself.
The hosts file is what is called a domain specific language or DSL for short. The hosts file is an instruction to the IP stack to resolve certain hostnames not via DNS but directly by a mapping.
DSL’s have had an important place in programming and their importance is rising. DSL can simplify programming and make systems more flexible by putting some part of the workings of a system outside code in a separate file. In the Java and .Net ecosystems we have seen many DLS’s, such as the web.xml, server.config, hibernate mapping files and spring configuration files.
Many of these examples take some part of the programming away from a general purpose language such as Java or C# and put the programming in some kind of XML. That is also where two of the major dangers lie of DSL’s. As a programmer you have to adopt and learn a new language. Second point DSL’s are by their nature limited in what you can do compared to a general assignment. I have yet have to come across a DSL where something simple as assignment can be done.
If you are developing both the DSL and the engine that processes the DSL, be very careful of DSL bloat. DSL should be limited in what you can do with them. Before you know you are writing a compiler, which is not a mundane task and often architecturally appealing but not very economical and practical. A good example that I have witnessed a couple of times is a web form generator. A simple xml or csv file drives the layout and processing of a webform. Nice idea until you start getting more and more requirements and end up writing a DSL with so many flags and options that the language is becoming equally complex to HTML itself. In fact HTML is one of the best form generating languages around. Xforms is an example of how difficult it is to write a DSL and get momentum in the developer community for using it.
I think it was Martin Fowler who started writing about DSL’s.
I checked the IP part comes before the host part in the hosts file. Bonus question: what is the windows path to the hosts file?
Geplaatst in Software Development, domain specific languages | 1 reactie »
donderdag 15 november 2007 by arnoudm
I am reading The Tipping Point at the moment. The book discusses the size of groups that are cohesive. Research has shown there is an upper limit to the size of such groups. This limit is 150 and is called Dunbar’s number. It has been proved in many different settings. Some research shows the major difference between humans and other animals is the size of groups that we can be part of.
Further research has shown that group size of around 150 works only in situations where people have a strong reason to stick together, such as armies or tribes facing a struggle for survival. When we are able to choose self we maintain a far smaller set around 50 or so.
This brings me to an observation in my own company. When I joined Mirabeau employed about 80 staff. It was well possible for most employees to know over 75% of their co-workers. As we grew gradually to over 160 we are now, I noticed that people actually know less people in absolute terms. When faced with a larger group People tend to stick with smaller groups they know.
I am pretty sure Dunbar’s number and the theory behind it, explains the rise and fall of many (online) communities. As communities become more popular they grow up to the point where communities fall apart. If you Google there is also some material on this phenomenon in online gaming.
Many fast growing companies use this theory to their advantage and use a cell based growth model. About 10 years ago this model was applied by two companies in the IT industry, CMG and BSO. When a unit approached 80 staff they would split the unit in two smaller units, to let them grow again.
I am still wondering how this works out for the 300+ connections I have on LinkedIn.
Further interesting reading on the Dunbar number.
Geplaatst in dunbar, dunbar's number, the tipping point | Geen reacties »