Subscribe
Recent Posts
- free as in "free spirit"
- Application Distribution in the Cloud
- We don't need social media
- Weekly digest
- Are user stories an alternative to (smart) use cases?
- Twitter: the end of the gossip magazine
- For the sake of being social
- Weekly digest
- Twitter is a competitive sport
- Weekly digest
Navigate
Search the blog
Customised Software Development / Open Source
free as in "free spirit"
Open source is usually associated with the word "free", and in our minds we see a comfy zero followed by our local currency symbol. Of course, it is a huge misconception to think that open source technology comes at no cost. Okay, you won't have any licensing costs. You can freely experiment with open source technology to see if it could meet whatever demands you have. You probably shouldn't endlessly experiment until you encounter the perfect solution either. Depending on the number of FTE's doing the experimentation that could become costly, and of course there is this thing called "time to market" too. Time is money. When it comes to choosing between open source and proprietary commercial technology, you will at least need to balance those factors. No, open source does not refer to free as in free beer.
The thing with proprietary technology is that it is, well, proprietary. It means that the components that differentiate the technology from the other technologies (open source and competing proprietary technology) are locked away and closed to the public. These components tend to live rather solitary lives and don't meet many peers (if any). If they would be human, they would be wretched and lonely. Sure, they often get royal treatment, but they are never free (and in a cost sense, nor for their owners). Never (well, almost never if it weren't for reverse engineering and hackers) will they be able to share their ideas and their ways of thinking with peers. Not being able to share your thoughts with others would make me very unhappy. If souls would be proprietary they will most likely become either suicidal or delusional.
Open source technology on the other hand would be very happy beings when humanized. They are truly free spirits dancing around with other spirits, sharing in the joy sharing what they are enthusiastic about, in the joy of knowing things could be improved even further. These beings are open minded about agreeing to use commonly developed standards to improve compatibility between them. They wouldn't mind at all if you would replace them with a better implementation, in fact, they would completely understand your reasons. They are fully supportive of your freedom to choose. Being outperformed by their peers only stimulates them to get better, faster, more standards compliant and more compatible. That is why open source technology can reach extremely high quality.
Okay, that is a rather black-and-white picture I am drawing here. I agree. The reality is made of all the colors between those extremes. My point is simply that sharing knowledge is a good thing. It sets you free.
The war of the mobile platforms
A smartphone is a highly sophisticated piece of technology. Besides being highly functional, having a long battery life, these devices also need to make its owner look good. The trouble with smartphones (and al other mobile devices for that matter) is that most of their owners probably aren't aware of or even appreciate the complexity and sophistication of their phones. But thanks to the OpenMOKO project, which specifies an open source smartphone architecture, we now all can be.
Smartphone users commonly "just" want something that allows them to make phone calls and access online services wherever they are, download & install new applications and games, shoot pictures and share them with their friends and family, navigate from A to B, find nearby points of interest, download and listen to or view various rich media (audio, video) and much more. And all of that needs to fit inside something no bigger than a modest bar of chocolate and look no less irresistible than that too. Nothing special really...
The mobile communications and mobile internet market is currently being seen as the market with the biggest boom. We all want a slice of that pie. Apple wanted and got a big slice with their iPhone, Google takes an aim at the pie with their Android platform, Sun Microsystems was also drooling at the pie and launched JavaFX, Palm on the other hand is trying to maintain as much of slice it previously had by introducing the new mobile platform Web OS and the Palm Pre (could it be the iPhone killer?). Adobe is porting their flash player to the ARM processor platform to increase the almost non-existent Flash Player penetration on mobile devices. Of course, Nokia, is trying to maintain the size of their slice with their Symbian platform. Then there is of course RIM and their familiy of blackberries representing a significant slice of the mobile market pie. And let's not forget about Microsoft's Windows Mobile, which is rather popular and comes shipped with cool phones such as the LG Cookie and the SonyEricsson Xperia. Windows Mobile 7 is on its way, although typically delayed and is tipped to be a possible iPhone killer too (go figure).
When you buy a smartphone, it already has its operating system installed on it, and a number of applications and games too. Depending on the model, you can usually add more applications and games. The type of applications you can install and run on your phone obviously depend on the capabilities of the phone (GPS, networking capabilities, user interaction capabilities, and so on) and on the operating system that runs on the phone.
Unfortunately, applications usually aren't interchangeable between the mobile platforms. A blackberry app won't run on an iPhone, and a Symbian game won't work on an Android phone. However, if JavaFX catches on (version 1.5 is rumoured to be released on JavaOne 2009), or if Adobe manages to also make their flash player as ubiquitous on mobile devices as it currently is on PCs or if Palm's Web OS (Webkit based) miraculously catches on (don't be surprised if it does) and is conforming to open Web standards, we should see that change.
Will Google's Android become the default mobile platform? I doubt it, and I don't think it would be good to have a single dominant platform. What we need are open mobile application platforms for developing cross platform mobile applications. Note the plural "platforms". I mean to say that we need both openness and choice, because application developers need to be able to choose their platform of choice, and customers need to be able to choose their platform of choice without needing to worry if they can use popular applications.
If you like this entry, please retweet it.
---
Mark Nankman is a UX Architect and Web 2.0 thought leader at Capgemini. His public brain waves can be followed on Twitter: http://twitter.com/mnankman
The Tesla "Cloud Mobile" Model S
When I heard about this on the RIA Weekly podcast, while I drove to the office this morning, I couldn't suppress a whoop: Tesla has deployed Adobe AIR in combination with the open source technology Merapi (Roundarch) inside their Model S super car. It doesn't get any cooler than that!
Merapi is a technology that allows Adobe AIR developers to interact with local computing resources and devices that normally cannot be accessed from the security sandbox an AIR application is embedded in. It should be seen as a bridge between Java and Adobe AIR. Merapi allows you to build components for controlling and monitoring peripheral devices (such as a car's electronics) in Java and passing data from these components to an Adobe AIR application, and vice versa.
The Tesla Model S boasts an incredible 17 inch touch screen displaying a full screen Adobe AIR application that integrates climate control, audio systems, navigation system and other dashboard functions. Of course, integrated, touch screen controlled dashboard systems are already becoming mainstream, but Tesla is taking this a whole lot further. Their dashboard system can also access the web, allowing for a whole new range of cloud services rendered to you while you are on the go.
Most of us will probably not be able to afford the Model S (I know I won't, let alone be allowed by my wife), but it really is just a matter of time for this sort of technologies to become mainstream. I really admire how Tesla invests in crucial innovations such as zero emission car engines and now also, the mobile web. Like the iPhone, the Model S' dashboard system is definitely setting a new trend - the iPodification of the car if you will - and could become an important catalyst for a new range of mobile applications.
Finally, marvel at the utter coolness of the Tesla "iCar" in the video below. Tesla should really consider renaming the Model S to iCar, don't you think? I am sure Steve Jobs would have proposed that name if Apple would have built this car (wink wink).
---
Mark Nankman is a UX Architect and Web 2.0 thought leader at Capgemini. His public brain waves can be followed on Twitter: http://twitter.com/mnankman
Java based Integration Technology
Is Java the new hot or the next not? Arjan Kramer, Oracle Fusion thought leader at Capgemini Netherlands gives his Java temperature check in this guest blog post. And I can add that this will also be his last guest post, since he will join the league of awesome Capping IT Off bloggers and thus post directly! Arjan is also featured in next Monday's edition of "Featured job role: Expert Group lead and Java based Integration Technologist".
Java based Integration Technology - a guest post by Arjan Kramer
So how hot is Java these days? A lot of enterprises are moving from Customized Software Development towards standard applications. You would expect that Java's footprint is decreasing because of this movement as would Microsoft's actually.
Well let's focus on middleware or integration software. A lot of effort is put in creating integration platforms (and they're succeeding), like ESB's or BPM environments, just to minimize the amount of coding and the possible errors you introduce with it. Resulting in robust, state-of-the-art firm bases for your business technology. This means that enterprises will want to move from error-prone custom-built applications to more standardized and configuration based way of developing applications based on services.
So what does this mean for the good old Java programmer then?! Hmmm... well this might be like telling a turkey what's on for the Christmas dinner, but eventually we won't be coding a lot anymore. Sorry guys but it's the way it is. I'm not sure how long it will take, but the day will come... Currently we are already sensing this quite a lot at our customers.
But now the good part! If you take a look at the best-of-breed integration or middleware software out there you'll find out that most (if not all, after all I said best-of-breed ;-)) of these are Java based! WebMethods, Tibco, BEA / Oracle Fusion Middleware, SAP Netweaver, IBM Websphere, to name just a few insignificant ones, are all Java based. This means, and it will keep meaning in my opinion that in order to tweak / configure or even add that specific functionality customers need, but that's just not available out-of-the-box will definitely require that good old java skilled developer to do the trick.
So will Java based Integration Technology mean the end of Java?
The answer in short is: No!
In more detail: since a lot of our implementation is standardized, differentiation in the areas we still can influence ourselves (as developers) becomes very important and thus a good and imaginative programmer or Java based Integration Technologist becomes more important than ever!
---
Lee Provoost is an emerging technologist with a focus on cloud computing strategy and ERP+ lead at Capgemini. You can follow his ongoing stream of thoughts on Twitter http://twitter.com/leeprovoost.
Tech Predictions 2009: Webkit surpasses Flash Player penetration
As I wrote before in my post titled "Write once, REALLY run Everywhere", I believe WebKit to possibly be the most installed piece of open source software today. And if it isn't today, it will be next year, mark my words. However, that it is only a part of the prediction I want to make in this post. I am taking this one provoking step further: I predict that WebKit will even surpass the device penetration of Adobe's Flash Player.
I know, I know, Adobe has just released version 10 of Flash Player and in my experience, it takes about 18 months for a new Flash Player version to reach the penetration level of its preceding version. So, fair enough, I will take that into account in my prediction. Let me rephrase:
I predict that WebKit will surpass the device penetration that Flash Player 9 has today, which, according to Adobe, is 97.5% (this is an average over the markets this is measured in).
Now you will want to know how in the world I think to measure the penetration of WebKit. The answer is that I don't know yet, but Adobe uses the Millward Brown methodology which looks to be very comprehensive. I don't see why the same thing couldn't be done for WebKit. Off course, someone will need to pay for that research and that is where my challenge lies. So, here goes nothing: Dear Adobe, would you be so kind to do the Open Source community a big favor and rank the ubiquity of your Flash Player against WebKit? Come on, I challenge you to bust my prediction!
Tech Predictions 2009: First convict for hacking into a cloud
The year 2009 will definitely see much cloud accumulation. Cloud computing is a hard to miss trend. Gartner ranked it #2 in their top-10 of tech trends. Let me list some noteworthy clouding initiatives that got to my attention:
Microsoft has already announced their own cloud (Azure). This cloud which will likely see some impressive applications in 2009.
Amazon recently announced that their Elastic Comput Cloud (EC2) now also runs Windows, allowing for cost-effective deployment of applications built with the .Net platform.
Oracle and Intel are collaborating on cloud acceleration to enterprise speed and possibly demo their first results in 2009.
Apanta - known for the popular Ajax IDE "Apanta Studio" and the incredible serverside javascript platform "Jaxar" - has now also introduced a Cloud that can run Javascript and do serverside DOM magic. This cloud has one very compelling benefit: it allows for very flexible mobile apps. If a device isn't powerfull enough to do CPU intensive stuff such as graphing, it could choose to simply do that in the cloud, using the same Ajax code!
There will be many more in the coming year. No doubt about it. The people on the ground look up in awe and wonder whether they should put their trust in these Clouds. Myself, I have no worries whatsoever. The benefits outweigh the risks. Clouds will reduce cost while increasing storage, automation, flexibility, mobility and innovation. Sure enough, these clouds will also attract hackers. To them, the clouds look like huge, very irresistible nuts, simply waiting to be cracked. Therefore, I predict the first cloud hacker to be convicted in the year 2009.
Mashups can be made by your grandma
There used to be a time that creating a webpage was a hard job. You had to open notepad, vim (or whatever editor was suitable those days) and you had to create every piece of markup by hand. Then came the first web editors (Microsoft Frontpage, Macromedia Dreamweaver, Adobe Go Live) which made these things easy. I have to admit they produced horrible markup, however everybody, even my grandma who is currently 92 years old, could make a webpage.
Nowadays we got used to the ease to create pages on the web, even more, we got used to the fact that we can even create mash ups in a few mouseclicks. The nerdy / geeky developer used to be the only one who was able to create a proper mashup. Especially since you needed to the understand the API of a component, you had to be able to understand XML and sometimes XSL and foremost you had to code this by hand in notepad, vim (or whatever editor you use nowadays). Well this is the past, everyone, even my grandma, can create a mashup using only their mouse and their browser (or using their mouse and a third party application).
It is even better: people do not know anymore they are mashing / meshing things, they take all components for granted. All the components used in mash ups are so omni present some of the mouseclicking mash up creators don't even realize that there are developers for these components (yes, Google Earth is developed as well as Yahoo Pipes is a result of a development by others). Facebook is also an excellent example of a mashup platform where all components already are taken for granted, Facebook is always there, the data is always there and a new widget / gadget for Facebook is easily created via a specific widget for Facebook.
Is there something we can do with notepad, vim (or other editors) instead of creating webpages or mash up to maintain our mysterious developer karma? Well tons of things, however in the end everyone will be able to create the things you create in your notepad. Even my grandma will build better solutions than you using those (to be developed) tools than you do nowadays in your notepad. The developer will be building on the platform and the cloud components more and more, a platform and components that my grandma can use to build her solutions. The developer will not build any end solutions anymore, those solutions will be made by the masses in the tools they prefer to make them. The outcome is that web developers will be obsolete in the near future.
Social software: inside our outside the firewall?
At Capgemini we are experimenting a lot with social software and one of the big discussions we have internally is whether it should be inside our outside the firewall. The main product that is causing this discussion now is what we consider as micro blogging, like Twitter. You have now versions that you can host on your own servers or that you can rent as a hosted service but the big question with that is… are we going to run it inside our outside the firewall? Meaning, will it be publicly available or only internally for the employees?
Both have their pros and cons: Having it internally means that you can discuss topics and talk about projects that are not supposed to be shared with the outside world. You can discuss company internals, customer specifics, bid information, etc. without for instance legal issues. On the other hand, one of the biggest pros why you should open up and use publicly available tools like Twitter is the collaboration with the outside world. I really enjoy that I can discuss on Twitter my thoughts with people from Capgemini but also from IBM and SAP.
After discussing this with my Twitter contacts (thanks to @alkronos, @ibmresearch, @rickmans, @faheyr, @yojibee) I got different ideas with pros and cons and a couple of them suggested to have the concept of groups. While the group thing is an interesting way to address the privacy issue (you tweet about company confidential stuff in the company group), I still haven’t figured out completely how it would work out. Are there actually Twitter-clones out there that fully support the model with multiple groups where some groups can be company internal and others public? Yammer? Laconica?
Share your ideas in the comments or engage in a discussion on Twitter (follow me here: @leeprovoost)
SaaS for the masses
As I wrote before, the distinction between a desktop application and a web application has become a fuzzy blur, and it is widening too. Desktop applications, traditionally belonging to the offline zone, go online to, for example, allowing you to collaborate on documents with your right shore colleagues. But that is only a small shift compared to the one made by Web applications. Their UIs have become indistinguishable from desktop applications, and web applications have crossed over to the offline zone by allowing you to use them while you are offline.
The web application has become as rich and powerful as the desktop application. It could do anything a desktop application could. Okay, there's the security sandbox (a fence around the application that protects your privacy) that a web application cannot get beyond, but that is actually a good thing. And the real beauty of the web application is that it does not need installation and you always have the latest version. So, deployment cost is negligible. Also, backups are something you (the user) no longer need to worry about, because all your documents are stored online.
Wait a minute? Are we back at the thin client versus fat client discussion again? I guess we are. The yo-yo-ing between fat and thin seems to be a perpetual thing. Currently, the trend is to go thin again (quite literally). HP, Dell and Asus have created cute little mini laptops that are cheap, lightweight and thinly equipped (e.g. solid state drives ). Each of these cuties run a tiny linux distro (Ubuntu, Xandros, ...) and smartly use software that has never been physically installed on it, such as Google Documents.
Allright, Dell's mini also comes in Microsoft flavour for only $50 more than the Linux flavour (as is the case with Asus' Eee PC), but that is besides the point I am trying to make. My point is that these minis are ideal vessels for providing Software as a Service (one of the innovation building blocks identified in our TechnoVision). And since these awesome devices are low-cost by design (aimed at developing countries), SaaS has become within reach of the masses.
Why don't we take this one step further and approach SaaS as we do telecommunication. I don't want to pay for the device but for the service. Like cell phones these mini laptops should come free with the software service plan you buy from the software provider of your choice. Dell has already taken steps in that direction by partnering with Box.Net. So, go ahead vendors of mini laptops (HP, Dell, Asus and the likes), team up with ISPs and SaaS providers such as Google, Adobe or Microsoft and make this reality.
To conclude, SaaS has changed the way in which software is being marketed, and PCs can be made thinner because of it. Finally, have a look at the SaaS Plaza (it features a really crazy video that promotes SaaS).
Hypertext Markup Love 5
I think it was at least 10 years ago that I bought a book concerning HTML. The thing I remember most of this little book was that is contained a warning concerning the use frames in websites. Not a warning that you are probably completely clueless and you should not have a keyboard when you are planning implement frames in a site, but a warning for the fact that not all the browsers were supporting frames at that very moment of writing.
It was indeed a rather old book, however I fell in love with markup. Markup is the solid base of websites, all the other things (CSS, Flash, Silverlight, other plug ins etc) are just some fancy paint on the solid building. Off course the paint is important, however without a building there is not much to paint. Building buildings is more interesting to me than doing some paint jobs with fancy shiny paint.
Currently my markup loves is reviving since HTML5 is being specified. HTML5 does contain so much good elements, functionalities and other technologies that were missing since the introduction of HTML4 (almost 10 years ago in December 1999). I will give you five good reasons why you too should be in love with HTML5 and why you should use it:
- Clearer structure
HTML5 will offer you a clearer structure to create a page with. Instead of ending op in a severe case diveritus (use the div element for nearly everything with caring about semantics) you could use elements like Section, Article, Aside, Nav, Figure, Header and Footer. Your page will become far more semantic using the elements. - Video, Audio
Video is on great demand (every hour 13 hours of video is uploaded on Youtube). HTML didn't had native support for playing video and audio in sites. There was the object tag, however it still required a plug in to get things to work. Another great thing is that you can easily offer alternative formats for e.g. video's and that can you style the video tag as you can with any other element. - Offline web applications
With a native implementation you are no longer dependent on one vendor based plug ins (Google Gears), which is great, since more vendors result quite often in more innovation. And innovation is good for HTML as long as it is using open standards and is not proprietary. It really opens a new way of working (Gears is currently paving the path), you can now work when you want, where you want independent of connection. - User interaction
Isn't it a great idea that you can edit browser pages without the need of rich text editors like tinyMCE of FCK editor? Isn't it even greater that you have some elements that will enable a track changes functionality in webpages? Off course it is nice that you can drag and drop items in web pages, however the nicest option is the native Undo functionality (for someone with my typing skills it is really great). Again a standarized functionality that currently implemented via many plug ins (that have a hard time to manage cross browser functioning). - Communication
One of the limitation of e.g. AJAX is that it is by default single domain (with some tweaks in a browser you could make it multiple domain). However HTML5 offers by default cross-document messaging, which is great and offers again a great set of opportunities. Besides that also server-sent events, Web sockets, and channel messaging are great new features.
I bet you are also in love now with HTML5, it is only a pity we have to wait another 14 years before it is a real recommendation. However in the meanwhile we can flirt with it in several browsers.
Fiddling about in The Platform, part I: "browser anatomy"
As a little boy, I was already fascinated with "how things work" and "what things are made of". Screwdrivers were kept where I couldn't reach them, because I wanted to have a look inside anything electrical. I guess geeky-ness is something you are born with...
I still have a strong urge to "look inside" things that intrigue me. My latest fancy is this platform everybody is talking about. I mean "platform" as in "the web as the platform" in the Web 2.0 Meme Map sketched by O'Reilly. We should really refer to it as THE Platform, because it is the platform of platforms and it is all around us. It deserves the capitals (no reference to divinity intended here, just borrowing the convention).
In this post I will scratch a little bit at The Platform's surface. Doing so today reveals a rather impressive technology that renders web content to human beings and provide means for humans to interact with the web. Oddly enough, we still call this technology "Web Browser" even though it has become a major layer of The Platform.
I have never built a web browser myself nor did I dissect one, but I have a fairly good idea of the basic requirements for a web browser:
A web browser must be capable of:
- retrieving information from addresses on the web,
- interpreting that information,
- transforming that information into something visually attractive and easy to understand and use: a user interface,
- interpreting and following the scripts that come with the information on what to do with user generated events and other events within the context of elements of this user interface
- and submitting information back to addresses on the web.
That's your basic web browsing machine, I think. So, as depicted below, it will at least consist of a networking component that supports the protocols for securely and insecurely retrieving and submitting data, a user interface rendering component and a scripting component for making sense of and executing retrieved scripts.
Makes a web browser look like a pretty dumb thing, doesn't it? No wonder Google made Gears, Microsoft invented Silverlight and Adobe created AIR. The common web browser is too dumb to provide in the modern internet user's needs. Today's web applications need local storage (more than the simplistic cookies common browsers support, I forgot about that one above) to be able to access certain types of content while you are offline. We also need support for cool, smooth 2D & 3D cinematic effects, of course. And we also need advanced communication components for receiving and transmitting high volume data such as high quality audio and video.
Our beloved web browser has been extended with various plugins over time to achieve the above feats. You also see that browser vendors have been extending and improving their product to provide built-in support for these feats too. I have googled-up a set of blueprints of two popular Web Browsers. The architectures still look a lot like my own sketch. See for yourself:
And being the geekiest company of them all, Google decided to explain their latest baby's architecture with a cartoon.
One interesting technical detail is that the above mentioned web browser vendors have (or currently work on) something that is referred to as a Virtual Machine. This VM is the engine for processing scripts of instructions. They apply things such as JIT compiling and HotSpot-like technology. These are state-of-the-art tricks to dramatically speed up the performance of these web browser's scripting engines.
Hopefully, the efforts in improving the scripting engines will also improve cross-browser compatibility. Because, in spite of what Ajax frameworks promise, Ajax development too often involves manually tweaking javascript for making it work with all browsers (slightly less if you just target the popular ones). It is a pain during development and it remains a pain during maintenance.
In future posts I will fiddle about some more in The Platform. Perhaps by digging deeper from the top or by poking at the foundations. Let me know if you have any requests in that respect.
The browser wars are on again! Boo yah!
“Keep Internet Explorer 8 from adding any sites you visit to Browsing History with InPrivate Browsing. Now you can shop for that special gift with confidence knowing your family won't accidentally find out.”
While Microsoft is preparing to put the world upside down with the imminent (?) release of Internet Explorer 8 with one of the most awaited features for 99 % of the internet browsing crowd (also known as “porn mode”, I’m one of the 1 %), Mozilla (the team behind the Firefox browser) hasn’t been sitting quietly either. They’ve created in the past couple of days a lot of buzz amongst the nerds in the blogosphere (guilty!) with their attempt to bring mash-ups to the end-user with the Ubiquity project.
The idea is that with natural language you can tell your browser WHAT you want instead of thinking yourself HOW. We all know how annoying it is when you want to email something you’ve seen on a website (text, image) that there are a couple of steps you need to do in order to achieve that. With Ubiquity you just type in “email this to Lee Provoost” and it opens your “Compose message” screen of your Gmail account, pulls up the email address from Lee Provoost out of your address book and copy pastes the things you want to send automatically. It’s not only limited to email, no you can Twitter, translate, schedule events in your calendar, etc. This gives us tremendous opportunities in mashing up tasks like translating the text from an event site, add it to your calendar and twitter about it to your friends, all in one easy way without switching apps or browser tabs.
The news from the guys (and girls?) from the Mozilla Labs was quickly pushed to the background because one Internet giant decided to tell the world about their “world domination” plans, as my fellow blogger Rick Mans points out. Instead of releasing a 200 page technical whitepaper about how amazing their view of how the Google Browser (named Chrome) should and will be, they just released a … comic book! To be honest, it was pretty clear about the design decisions they’ve made in a way that even your grandmother would understand.
Apparently the whole buzz about Google releasing an Operating System, turned out to be an advanced browser (based on WebKit, the same engine as the Safari browser on Macs and iPhones) that borrows ideas from Operating Systems. It seems that Google has not released “just a browser”, but I think more some kind of application platform. Of course, while they were at it anyway, they’ve thrown in a complete new, high-performing (?) JavaScript virtual machine kind of thing.
So… what does this mean? First of all, next to Internet Explorer, Opera, Firefox and Safari, we’ll have yet another browser that we can choose from. Secondly, what impact will this have on the market share of browsers like Firefox, Safari and Opera? Depends a bit on how smart they will take this. I can imagine a scenario where you buy a new computer that has Linux, but it doesn’t matter anyway because you get Google Chrome with it that gives you Gmail email, Calendar, Google Docs office suite, etc. No need of Microsoft Office and Outlook anymore.
While I've been beaten by my fellow Capgemini bloggers (not only Rick, but also Carl and Ron) on the scoop part, I do have the honour to give as first person a review on the Capgemini blogs :-) So, first impression? It's... a browser! Don't expect something that will blow you away at first sight, while the technology behind it might be mind-blowing, for the end-user Google Chrome is not that spectacular. The first and most interesting feature that I noticed is the fact that your address bar has become much more. The direct search bar that we know from Firefox and IE7, is now a part of the address bar. So, when you type in "Berlin", it will search through your browser history (unless you run in "porn mode"), look it up in Wikipedia (why can't I add my own sites?) and suggest a Google search result. With that, the excitement also ends...
Does Firefox needs to be afraid? At the moment not. Being a nerdy software engineer, I am prett
y impressed with the technical implementation, but I can imagine that the regular John Doe does not care about that and is still pretty happy with his/her IE6 (or Firefox if he or she as a nerdy nephew that fixed the computer). I do believe that it might gain market share when people start to move their apps more and more to the web (think about Google Apps or SalesForce), than a solid platform like Google Chrome might be the thing you are looking for. I just hope that Google can monetize the buzz that they have created, unlike their Android product which status seemed to have changed from "the next big thing" to "could have been"...
Looking at these three browsers, I can only say that the browser wars are not over yet… I think it has just started…
World domination is near
Everyone has a rather strong opinion on the monopoly Microsoft has/ had on the desktop. Microsoft is seen by some users as a bad company because of its monopoly, leaving the desktop user no other chance than using functionalities than windows Mediaplayer and Internet Explorer (due to the deep integration in the Operating System). Same goes for Microsoft’s Office suite, which doesn’t support ODF natively (it does since July 2007 via an add-in) and saves documents default in the proprietary .doc format.
Well that said, Microsoft may not be on the good guys side, however is there a good guys side at all? Fan boys now would jump on their chairs and would chant "Google, Google, Google!" however Google also has certain drawbacks, as it stores a lot of information on its users. However if you take a look at the developments of Google in the last view months in a certain perspective you could start to think Google will be monitoring you rather closely.
Fact is that Google already hosts your email, calendar, RSS reader, web history, documents, photos, blogs and much more free functionality. It is quite clear Google knows what you are doing since you do it with their applications. It is always questionable if you should want to outsource that many of your applications to one provider. However Google stated that it is not evil and therefore you should not mind it.
Some months ago Google launched the “AJAX Libraries API”, which is, on first sight a very nice thing of Google to do. However on second sight Google gets also to know what you do on other websites, which websites you visit, and which websites are rather new and needs to be indexed. This all is possible by the simple fact that one or more javascript files are included in a webpage. Therefore Google get to know more about the web and more about you (and other visitors off course). Just a few hours ago there is the buzz around Chrome, which is a browser. Google’s open source browser to be more specific.
All of us at Google spend much of our time working inside a browser. We search, chat, email and collaborate in a browser. And in our spare time, we shop, bank, read news and keep in touch with friends -- all using a browser. Because we spend so much time online, we began seriously thinking about what kind of browser could exist if we started from scratch and built on the best elements out there. We realized that the web had evolved from mainly simple text pages to rich, interactive applications and that we needed to completely rethink the browser. What we really needed was not just a browser, but also a modern platform for web pages and applications, and that's what we set out to build.
So if you take a look at this development: not only are you outsourcing all your useful applications to Google. You are also storing your data at Google, your personal history (pictures and video’s), and your video history and indirectly via de AJAX libraries API you history of pages you visit outside the Google domain. And now you are also browsing with Google. Since Android is on its way it is not unthinkable Google will offer a complete set from operating system to (web) application to your desktop/ laptop and mobile phone.
Off course that does not have to be evil, Microsoft had good intentions too when they started integrating Internet Explorer in Windows.
About coffee blends and the platform the web is
Over the last 5 years or so, web applications have shifted from a stateless, page oriented set-up to a statefull set-up where the concept of page has been completely banished. When it comes to the ways in which a user can interact with them, modern web applications can now rival with desktop applications. In fact, the distinction between them is already blurred. It won't be long before - from a user's perspective - either the notion of web application, or desktop application disappears. The fact that an application uses remote resources that it accesses through HTTP will and should be transparent for users.
Interestingly, many people don't even care what web browser they have to use, as long as it allows them to do what they need to do. Common internet users (people that are not particularly technology savvy) will "run yahoo" where they mean starting up their browser and (automatically) opening the yahoo URL. And consequently, if Yahoo "doesn't work" because the site is down, or the latest browser or OS update causes their web browser to crash because of incompatibility issues in Yahoo's javascript, they probably won't blame Yahoo or the browser, but their computer and will most likely call computer support.
In other words, to users, an application is something that allows them to achieve certain goals, and it is completely transparent to them how the application does it, whether they need internet access or not and whether a web browser is required or not.
From an engineer's perspective however, there are many ways of creating such applications. As Tim O'reilly stated in What is Web 2.0 , the web should be seen as a platform for building and deploying applications. What does that platform look like? What does it consist of? Engineers (like myself) always try to simplify things by dividing complex notions into layers, so in my mind that platform looks a lot like a lasagna (others might prefer an onion). Each layer addresses a certain problem domain, for which a multitude of technologies can be used.
The choice of these technologies depends on many factors, such as developer preference and familiarity with the technology, cost, community opinion, compliance, compatibility, performance, scalability, et cetera. Another interesting aspect is that application developers will probably also be unaware of the workings of lower layers of the lasagne. Put very simply, building a mashup basically consists of choosing a frontend technology (there is much to choose from: Adobe Flex, JavaFX, GWT, Dojo, JQuery, Sproutcore, you name it), Web APIs (mapping APIs, social network APIs, eCommerce APIs, ...), a hosting party and the technology for storing application specific data. The API's themselves have multiple layers themselves that the developer using these APIs probably doesn't care about. The developer only cares about certain aspects such as stability, support, compatibility with other APIs, reliability, et cetera.
I know that I am repeating myself, but in the end, the user is unaware of all this and doesn't even care. If, in spite of the superiority of all technology used, the user experiences difficulties and annoyance with an application, the user won't want to use it and probably switch to something else.
The other day, while I listened to one of my favourite podcasts: "The CoffeeGeek podcast", I had a weird enlightment. In the podcast they discussed about the fact that coffee blends hide the origin of coffee beans. One argued that the origin of the beans used in a blend should be mentioned on the package, whereas the other felt that that is completely irrelevant because it is the consumer's experience that matters. Coffee blends are very carefully created and it is ensured that the taste and quality is constant. Being a slight coffee snob, I buy single bean coffees myself every now and then, and the quality of these coffees definitely differs per year. I don't mind that, but most people just want their cup of coffee to taste good.
A Web API blends various resources, standards and technologies (which are also blends). The developers don't and shouldn't care about an API's composition. The API should just do what it promises within the expectations of the developer. A web application blends various resources, standards and technologies. The end users don't and shouldn't care about their application's composition. Most people just want their applications to work as they expect.
The World is Free
There are a couple of books that everyone should’ve read in his life and I think that Thomas Friedman’s “the World is Flat” is one of them. Anti-globalists might disagree with his “globalization is great” story, but you cannot deny that globalization has had a huge impact on our lives and the IT business we are working in.
I don’t want to discuss the impact of globalization or the offshore business, no I actually want to highlight a recent initiative that Thomas Friedman (and/or his publisher) launched: give away a free audio copy of his book! You might wonder… why? Since sales of his books are rocket high (still to date with all the reprints), why does he need to give away audio copies for free? Apparently he is about to launch a new book in September, called “Hot, flat and crowded” that will focus on “how America can lead the green revolution in the 21st century”. This is a pretty smart move, since (as far as I can see it) it creates two effects:
- By doing this, he gets a lot of publicity (well we are talking in this blog about it, aren’t we?). It’s probably inspired by Radiohead’s decision to let users decide how much they want to pay for their new album (between 0 and unlimited). Radiohead got a lot of publicity, got a lot of street cred for this initiative and they get a huge revenue from their live performances anyway. So it’s free publicity for his new book (since you get also an excerpt from his new book for free).
- He potentially reaches an audience that was not planning to buy his book “the world is flat”, but now that it’s free, they “just try it”, with the hope that they’ll like it and are willing to buy his new book
When you think about it, with almost no budget they have created a whole media buzz for Thomas Friedman and his new book, by giving away his old book for free. A similar initiative was launched recently by a computer book writer (sorry, I really can’t recall his name anymore) that gives away his books in PDF. His reasoning is that with almost zero costs, you can potentially reach millions. This has two effects:
- People that were never ever planning to buy his book, download it and read it. They like it and decide to buy the hard copy.
- People that were planning to buy the book, download it as well, but then decide not to buy the hard copy since they already have the digital one for free.
As long as the first group outweighs the second one, you make profit. Let’s just hope that his theory works out.
The funny thing is that this model of giving away something with the hope to get extra revenue back, is seen as “disruptive” outside the IT world, but it’s a very common business model in our industry for years: giving away hardware to drive software license and support revenues, giving community editions to drive sales of the commercial editions, opening up Google APIs in order to gather even more data that can be analyzed… Whatever initiative, you always need to be aware that there is not such a thing as a free lunch. How tasty it might be!
Can we apply this strategy also for knowledge? True, by opening up code, you are giving away intellectual property, experience and knowledge but I am more talking about knowledge management systems. What if you would open up your whole company internal knowledge system? Can you monetize that in such a way that the benefit you gain, is bigger than the “threat” that your competitors gain by having an insight in your knowledge?
An interesting blog I read is High Availability that discusses the architecture from the largest internet applications in the world, think about Facebook and MySpace, think about Digg and 37Signals. I frequently read that several of those big websites share a big part of the way how they have tackled scalability issues with the rest of the world. Why? Because most of the time they are all reinventing the wheel again and again. They all face issues that the database becomes a bottle neck, caching issues, fault-tolerance, etc. Facebook and 37Signals are not competing with each other on having the fastest database, no they are both focused on delivering a web application: Facebook a social network platform, 37Signals a hosted project management software. If they can learn from each other’s experiences, they can serve their respective markets better.
Does this also hold for a knowledge sharing system? Let’s say that Capgemini would open its knowledge system and thus exposing information of how we have tackled a complex IT infrastructure problem. We could keep it internal and reuse that knowledge at other clients. We could also share it with the world, thus risking that another competitor of us applies our solution to another client. Is that a bad thing? Not necessarily I’d say. If you are producing really innovative solutions, it really boasts your brand. You get a lot of recognition for the information you have shared and can establish yourself as an industry leader, with the added side-effect that it gets appealing for IT professionals to join your company. One concrete example that I can give is the Integrated Architecture Framework (IAF), an internally developed enterprise architecture framework that we have opened and donated to the Open Group’s TOGAF standard. Now we get a lot of street cred in the enterprise architects scene for this.
So open up the corporate knowledge system or keep it internal?
Goodbye Flash, Silverlight, AIR and other plug-ins
Techniques that require a plug-in in the browser are dying. However Silverlight is not the one dying, since it was already dead just before it started (why even try to penetrate a market with a product that is not finished and with a competitor that is 4 blocks ahead). Therefore we can conclude that Flash will disappear, AIR will disappear and finally those ugly Java applets (who ever thought those would be useful on the web, waiting 5 minutes to have an applet loaded) are gone too.
For me it is clear that all plug-in based techniques will be replaced by more native techniques like JavaScript. JavaScript was forgotten due to some browser wars which ended up in the result with two rather incompatible implementations of JavaScript. However with the several incompatible implementations becoming less dominant (there now is only one implementation that is questionable at some points) and the rise of the libraries like JQuery, Prototype, SproutCore, YUI, MooTools, ExtJS it is clear that JavaScript is back on its feet again and it is running to overtake all these plug-in based techniques. JavaScript is platform independent, as most plug-in based techniques are not.
The limitation in JavaScript used to be the 'flashy' things: drop and drag, animations, interoperability and other nice and fancy stuff that was either limited by the technique or by the processing power of the client. Nowadays this isn't a limitation anymore, do you want nice animations, you could use script.aculo.us, JQuery UI, or Processing.js. Interoperability is arranged in almost all libraries. Do you want applications that feel like desktop application, think of your design and build it, just like 280 Slides, Google Docs, Zoho and SproutCore gallery. You are no longer limited, you can make these things happen with techniques that are native for all browsers: HTML, CSS and JavaScript!
It will be hot JavaScript winter, especially since everything is possible again. Flash, AIR and Silverlight aren't the only techniques that can make flasy desktop like nice solutions. JavaScript can do that too and JavaScript does not create a vendor lock-in requiring a specific closed source plug-in.
The hyper corrective browser
I just had a discussion via Twitter about the desired behavior of browsers during an endless javascript loop (e.g. while(true){alert("test");}). One of my friends suggested that browsers should correct this kind of code. Browsers should do this in order to prevent endless loops that crash you browser or your operating system.
This really sounds horrible to me. Whenever I write code I would like to see it executed the way I wrote it, not the way I could have probably thought about it that it should work. If I write lousy code, let the browser crash, let my operating system crash and probably I will learn something of it. In the worst case even valid code could be corrected by the browser since it could match a pattern that is used to filter invalided code blocks. That would be a real developers nightmare: hyper correcting browsers that are adjusting valid code blocks combined with all current known specific browser quirks.
However this hyper correcting behavior could make the web even more insecure. Microsoft will probably implement some protection in Internet Explorer 8, at first sight this is pretty nice, however there are quite some (amateur) developers that 'test' their websites in only one browser. After testing it in e.g. Internet Explorer 8 it assumed save and published on the Internet. However when using a different browser XSS is still possible and the visitor can still be harmed by these kind of attacks.
With all these hyper corrections you will be in the end only safe on the Internet depending on what browser you use. This is incorrect you should always be safe on the Internet no matter what browser you use. The developer is responsible for the security /usability of his web page/ application, not the browser! The browser should only be supportive to visit and use this page / application.
Backpacking. Redefined.
I’m just back from a weekend getaway in Bangkok, Thailand, just to escape from the hectic work life in Mumbai. The Mumbai chaos can sometimes be a bit overwhelming for Europeans, so I decided to visit the well-organized “City of Angels”, mainly for relaxing and shopping.
I didn’t take much with me, with the idea that I’ll buy most of it over there, so armed with a couple of t-shirts, a pair of jeans, slippers and of course my 3G cell phone I took off. The latter was part of an experiment to redefine the way we travel. Forget maps, forget sending postcards, forget exchanging phone numbers. These are so nineties! The tools of the modern traveler are Google Maps to navigate, Dopplr or TripAdvisor to get advice from fellow travelers, Twitter to keep the home front updated and Facebook to keep in touch with the other backpackers you’ll meet.
It’s remarkable how well penetrated Facebook is in the young travel community. When I was passing by internet hotspots, 75 % of the people were checking their Facebook account and a very standard way to say goodbye is “oh, add me on Facebook”.
I use Twitter already a lot to engage in interesting discussions with colleagues and friends and a couple of my best ideas came from Twitter discussions. The most interesting part of something like Twitter is that you can think out loudly and once in a while it gets picked up by one of your contacts who gives you a whole different view on the problem you are trying to tackle. For this trip, I wanted to use it more to use as some kind of diary to keep everyone updated what I was doing and I even got engaged in some funny Twitter discussions while crawling through one of Bangkok’s many markets.
I sure admit that it takes perhaps some of the “romantic backpackers way of life” away, but it also puts an extra dimension to your trips. Think about a great night you had in a bar with some travelers you met. You take some pictures, upload it on your Facebook account, the people you’ve met can comment on the pictures, share their pictures with you and you build up a whole world of memories. It would be actually cool to have your geography location associated with your Twitter updates so that you can afterwards see on the map where you have exactly seen that funny cow sleeping in the middle of the street.
We are only seeing the tip of the iceberg of what is possible. One of the most promising areas for the future is the domain of location-based services where services and information adapt to your location, but that’s an experiment I will talk about in August. I’ve been asked by Nokia to test their E71 business phone (with GPS, HSPDA and Wifi) and will take this new way of traveling to a next level during my trips to Berlin and Helsinki.
Stay tuned!
Banking. Redefined.
I have yet to see the first financial portal that can be called user-centric and user-friendly. When I look at the website to manage my bank or credit card account, it’s quite sad to see that most of them are like still stuck somewhere in the pre-Web 2.0 era. I am not only talking about the fancy hocus pocus Ajax stuff, but really about usability and the YOU experience: the application should be centered about what I want and centered around my life (yes I am very egocentric) and not that I have to figure out how the bank thinks I should handle my account.
One of the frequent readers of this Technology Blog pointed me recently to some proof of concept (PoC) of the bank for the digital natives, where every feature has been thoroughly investigated how it can come forward to my needs: the Frank Bank (http://www.thefrankbank.com). It incorporates all the Web 2.0 concepts like tagging, gadgets (small applications you can add) and personalization of data. On top of that it lets you administer your budget with fancy bar- and piecharts and gives you different views on your data.
When you look at the video on the URL mentioned earlier you can see that one of the interesting features is that everything is based on tagging. You can add tags like “shopping” or “work” to every expense and thus create views on your expenses based on the tags. This is a similar approach that Google’s Gmail use to categorize your emails (instead of using the old-skool folder based approach). That gives you a grip on your shopping expenditure because you can perfectly get statistics of your shopaholic alter ego and decide whether you still need those Manolo Blahniks or not.
I’d say that the first bank that offers this to its clients will change the way how we look at financial portals. Trust me, this is quite revolutionary. It’s banking, but redefined.
Acid3 and 4, why even bother?
If you are in some way involved in web development you might know the Acid tests. These tests check if and how well a web browser completes a certain set of test cases. Based on this it can be concluded if a browser is compliance to certain web standards.
Well that sounds great, but what is in it for the users of the browsers and what is in it for the developers testing their web pages for standard compliance? In my opinion: nothing. Do you as a user really care that you use a browser that passed the Acid3 test? Probably not, otherwise the browser statistics would be quite different. Currently only the webkit (Safari) and the presto (Opera) engine pass the Acid3 test with a 100/100 score. These two browsers have only a market share of almost 5%. The trident engine (Internet Explorer) scores only a questionable 18 points and the new Gecko engine (Firefox) scores 80 out of 100. However these two browsers are used by approximately 90% of the internet population.
Users do not care about something nerdy like an Acid3 or 4 test. Simply because it has not any added value for them to have an Acid3 compatible browser. Most of the sites will be perfectly rendered in their browser; only a few specific advanced things that are tested in Acid3 will not be shown correctly. These specific techniques aren't used that common that it should have impact on ones browsing experience.
When buying a car, the results of the NCAP test can influence the decision to buy a car, simply because these results do add value (when you crash, will you and you passengers still live, or not). On internet there is another mindset. Bert Bos once said the following:
I'd like browsers to fix bugs as soon as possible, but it is true that they (and not me) will get the complaints from users when pages that used to work suddenly look differently in a new browser version. Too many people see the Web a bit like television: who ever heard of incompatible content? If there is an error, it's because the TV set is broken, or maybe the antenna. On the Web, it is much more likely that the content is invalid, but try to explain that to users who just want to buy their holiday or see their bank account…
This still is the mindset of most browser users. If you cannot visit your favorite website with your browser and you can with another browser, than the browser is broken and not the website. This mindset is also adopted by lot developers. Which is quite reasonable because would you make a website that can only be viewed successfully by 5% of your visitors?
Users and developers should become more standards aware, without proper use of standards the web is doomed to become something useless. The user's mindset should be changed that the Acid test is his NCAP test for the browser, however currently this is not the mindset. Therefore Acid3 is and Acid4 probably will be great for browser vendors and geeks like me to compare how well their render engines function, however the normal user and less geeky developer will not care. I hope they will care in a few years...
The Internet Service Bus
I gave recently a presentation for Capgemini’s Indian Architects Community about delivering high-scalable SOA with Amazon Web Services where I was discussing the potential of Amazon’s Simple Queue Service (SQS) to become the Internet’s Service Bus. Today I stumbled on a project called Gnip (http://www.gnipcentral.com) that wants to “make data portability suck less” by acting as some kind of protocol bridge between several data producers (like Twitter, Flickr, etc.) and consumers.
While the service is still in its infancy, not that many big data producers signed up and couple of services like message transformation not present yet, it reminds me to some kind of domain-specific Enterprise Service Bus (ESB). One of the problems we face now with all these Web 2.0 websites that offer APIs and all these data aggregators/clients is the tight coupling between producer and consumer. Service-Oriented Architecture promotes loosely-coupled services and that is exactly what Gnip tries to provide: some kind of message middleware that decouples the tight coupling between Web APIs while providing message transformation (coming soon).
If Gnip (or some other service for that matter) succeeds in this by having all the major Web 2.0 companies signed up, they could become the Internet’s Service Bus. Which could be bought by Google so that they can throw in their infrastructure to make it scale and in the meanwhile add some advertisements… ;-) Or of course Amazon by using their Simple Queue Service… Oh, this promises to be an interesting battle, since the company that will own the Internet Service Bus will control pretty much of the Web 2.0 space.
Internet Service Bus: the next revolution.
Open up your mind
A day in the life of a Capgemini software engineer: sitting in the plane two seats away from the former Miss World. Dream or reality? Well it did happen to me last week when I took the JetAirways flight from Mumbai to Hyderabad for a course. I was thinking about ways to approach her, you know just to broaden my network, but I was a man on a mission with no time for chit chat with (beautiful) women, since I was expected at the Indian School of Business in Hyderabad for a course week: RightShore for Software Engineers.
The idea of the Capgemini University course is to let you experience the offshore business where it all happens. How much better can you experience India than in… India? It’s a tough five days course where you get cultural training to better understand how your Indian colleagues are working and why certain things are done in a certain way. It also discusses the root causes for communication failure and why we sometimes don’t seem to understand each other. The other part of the course was geared towards senior software engineers that work in a geographically distributed environment where all issues like RUP distributed delivery, use case estimations in a distributed delivery setting, etc are discussed with plenty of room for networking (50 % Indian participants, 50 % European participants).
This course tries to radically change your mind and let you realize that the sooner you involve the offshore team, the better it will be for the project. Think about it, how much effort gets wasted with doing knowledge transfer and trying to assure that the back office has understood everything what the front office has designed? A very effective approach is to involve the offshore team right from the moment of doing the bid (since eventually they have to build it) so that they are onboard even before the project has kicked off.
Does that mean that we have to be afraid for our jobs in the United States and Europe? Look around you at how many open job positions are. A very important reason to consider offshore nowadays is the fact that we can’t find enough technical IT people in the western countries. We see year after year less people entering the computer science programs at universities, while in India almost everyone that goes into university wants to do something with IT. Capgemini India hires fresh graduates at a rate that we can only dream of in the Netherlands. The lack of sufficient skilled IT professionals in the western countries is a concern to all of us in the industry. We even ask experienced software engineers in our Indian office to fly over to Europe for a couple of months to work at a client location since he or she has a certain skill that is very hard to find in the Netherlands. This means that all of us have to start accepting that this transfer of work skills on a global scale is a necessity if we want to stay competitive. Companies that keep on refusing to join this trend, will face the fact that they stay behind since they won’t find enough skilled IT professionals.
Accept it and open up your mind…
Collaboration. Redefined.
While a previous blog post of mine about my web 2.0 life contained a lot of truth, it still was some kind of parody (I think). However, I start to realize that some of the tools that I talked about like Twitter do have a big influence on the way we communicate with each other to get things done.
I am currently looking into the possibilities of using the Amazon Cloud Computing offer and I was looking around for some like-minded souls in the company. I just twittered (twittering a new verb like googling?) if someone at Capgemini was working on this and it got picked up by Tim Kelly, the Capgemini Second Life guru. He met on Second Life the chief evangelist of Amazon Web Services (AWS) Jeff Barr and brought me in contact with Simone Brunozzi, the European Evangelist for AWS and I got in touch with him through Facebook and LinkedIn.
Another nice example, which is not directly work-related but quite interesting because of the collaborative effort of a crowd to solve a problem. Trough Bombay Expats Yahoo! Group, I got the message from a fellow expat here in Mumbai that she found someone’s credit card in the city center and she wanted to return it. Based on the details she found on the credit card, I did a Google search and found the person’s weblog. The other expats in the community were continuing with the web search and soon we found the email address of the person and were able to contact the “victim”.
So, basically with a set of extra web 2.0 tools like Yahoo! Groups, LinkedIn, Facebook and Twitter, I can tap into a whole crowd of people that can help me in achieving my goal. Often not even intentionally. A couple of very interesting initiatives recently started because someone saw my twitter message or read my blog and approached me. One could call it desperate or inefficient, the fact that I am shouting out something with the hope that someone else picks it up. I like to call it collaboration, but redefined.
RIA becomes synonym for website
During a recent discussion with a colleague about a web application that is being developed, it occurred to me that a customer should not need to explicitly require that web application to be a Rich Internet Application (RIA).
The web application we were discussing is currently constructed as a set of server pages that share a common background image (indeed, rather classical). Depending on the connection speed and how images and pages are cached by the browser, the user will likely experience irregular delays and flickering of parts of the screen. In the case of this particular application, this is hardly acceptable, because this particular customer envisions an intuitive and attractive user interface with "Apple-like quality" (I hear that last one quite often).
It made my colleague and I wonder whether our customer had explicitely requested an RIA or not. But now I believe that a customer should not necessarily need to. The RIA is a technological choice advised to a customer to meet certain (user centered) requirements like the ones mentioned above.
I also believe that, as the hype of the RIA is wearing off, requiring a usable, attractive UI is becoming more and more implicit: "of course our new web application should be easy and fun to use". Peope are getting used to RIAs and expect no less than a smooth and effective experience. They expect no less than a responsive (no delays) and usable application that they can access anywhere, anytime.
High expectations? Well, they might still be today, because these requirements still pose much challenge to the designers and developers of web applications. But that is rapidly changing as the quality of design and development tools are improving quickly (both Adobe and Microsoft are strongly focusing on the quality and productivity of their tools).
Website has become a synonym for RIA and vice versa. Maybe the term "website" will even disappear all together as web applications are already stepping out of your web browser onto your desktop (think Adobe AIR, Mozilla Prism).
The invisible hand, the sequel
My previous post on The invisible hand created several interesting discussions (thanks Andy, Peter, John, Alex and Mark) and I would like to share some of it with the rest of you. Peter (Evans-Greenwood, CTO Capgemini Australia) brought up the interesting theory of swarm intelligence and I’ll quote Wikipedia to bring you quickly up to date:
“Swarm intelligence (SI) is artificial intelligence based on the collective behavior of decentralized, self-organized systems. … SI systems are typically made up of a population of simple agents interacting locally with one another and with their environment. The agents follow very simple rules, and although there is no centralized control structure dictating how individual agents should behave, local interactions between such agents lead to the emergence of complex global behavior. Natural examples of SI include ant colonies, bird flocking, animal herding, bacterial growth, and fish schooling.”
To extend the list of “natural examples”, I would like to add “Mumbai drivers” as well. If I may. Andy (Mulholland, Global CTO Capgemini) replied on Peter’s comment: “I had not thought of swarm theory for Mumbai traffic but now that it is raised it makes perfect sense”. And it does make sense, really!
- “The agents follow very simple rules”: Mumbai drivers honk in all situations to warn others
- “no centralized control structure dictating how individual agents should behave”: very true, haven’t seen any speed camera or police controls
- And the best one: “local interactions between such agents lead to the emergence of complex global behavior”: As John pointed out in his link that he supplied in the comments, it is the selfishness of the individual that drives a knowledge base, or applied to Mumbai traffic: “The Mumbai traffic participants are selfish in the sense that they do not want THEIR car to be damaged, thus resulting that other cars don't get damaged either.” This all leads to a situation where there are not that many accidents as you’d expect. The selfish drive for self preservation, benefits the whole system.
Alex added a link to a blog entry of the Austrian Economists that did an experiment with speed limits on a highway. On a highway where the speed limit was 50 MPH, everyone was driving 70 and the traffic was flowing rather well. As an experiment, four cars drove 50 MPH just next to each other and thus blocking the traffic, it created a huge traffic jam. If you apply this to Mumbai traffic, you can easily see that there is a much higher throughput possible in this seamlessly chaotic situation. Because they are not following the lanes, speed limits or anything else, but just take every millimeter that is possible and honk their way through traffic.
A question that I still have is whether this selfishness or self-preservation attitude from people always creates an optimum? Or better said, in what situations is this behavior desirable? Could you build your commercial software like this? What I think is that you have to distinct two main categories:
- The team or group is more important than the individual: think about commercial software development and sports teams. Of course you need to have expert developers or star players, but in these two cases, the group aspect outweighs the individual aspect. A nice example is a soccer club that has only the best players of the world in the team. When you look then sometimes at their ranking and game play, you see that each individual is brilliant but there are too many egos walking on the field. 11 brilliant soccer players do not make a brilliant soccer team. The same applies to commercial software teams: if you have five superstar developers that can think of the most incredible algorithms, it is no guarantee that your project is finished in time and in budget.
- The notion of “group” is actually just a side effect of similar behaving individuals, e.g. Mumbai traffic. No Mumbai trafficker wakes up and thinks “well let’s create a cozy group of mad-driving cars and rickshaws today”. The same applies to economics: a business man’s primary goal is not to create a perfect running economy, but to maximize its business’ profits. But in order to maximize its profits it has to participate in the market workings of supply and demand and thus aid in reaching an optimum. Not because he wants to, but because of selfishness. A good working economy creates a stable environment and thus a higher chance of profits.
To which category does an open source software project belong to? My first reaction is to say the second, but the more I think about it, I’m rather going for the first category. Because when you look at big successful open source projects, they are all managed by either a commercial company, a governing body, some strong community leaders or other way of centrally coordinated effort. True, you see a mixture with the second category in the sense that they often make use of these individuals that are in it out of selfishness. However selfishness in the broadest sense: pride or honor, improving own skills, community recognition or just because they really need that particular feature. Luckily the open source community is mainly driven by the last group that contribute code that was made because of something that THEY needed.
I did put the commercial software development in the first category, but would it be possible to have a commercial project that is driven by selfishness of the individual?
The invisible hand
Only a few people know that I actually love economics, more specifically macro-economics. I love the theories from economists like Pareto, Keynes, Friedman, Ricardo and of course Adam Smith. The latter one’s theory of the so-called “Invisible hand” is one of my favorites since I am quite liberal. Not as extreme as a good friend of mine who has very interesting ideas about a society where the government has almost no involvement at all, I am still a supporter of little government intervention.
Before you point out to me that societies where there is little government intervention are often far from ideal because it does not take care of the less fortunate members of the society, I acknowledge that in real life this does not work out quite as I would like to see. We do not live in a perfect world, where the market is fully transparent, where everyone is honest and is not only focused on money-making. So, often these economic theories do not seem to work quite well as expected.
Why do I tell you that? Not to change the direction of this blog into something like Freakonomics (must read by the way!), but because it relates a bit to my love for self-organizing chaos. Adam Smith’s “The wealth of nations” really focuses on the idea that free markets only appear to be chaos, but there is an “invisible hand” that guides the production and price setting to an optimum.
I am at the moment for three months in Mumbai to lead the RightShore operations from my practice and while observing the traffic, it appears to be utter chaos. People don’t use their reverse mirrors nor direction indicators, but it still “somehow magically” works. Most likely that there are a set of traffic rules, but nobody seem to follow them. How do they manage to drive without constant bumping? Honking and good faith! When you want to overtake someone from the left, you honk. When you overtake someone from the right, you honk. When you think the person before you is going too slow, you honk. When someone is getting too close, you honk. When you… anyway you get the picture.
So, without the need of an enforcing strong hand, each individual seems to take up the responsibility to warn others, by honking, of possible collisions and other dangerous situations. Isn’t this brilliant? When you take a step back from this economic blabla and look at the software industry, you see this idea of not having one central enforcing entity, but shifting responsibility to the participants coming back in similar or reduced forms. Think about distributed source code management tools like GIT or Mercurial or the open source community. The reason why it does seem to work is because they all have an interest in reaching an optimal situation where everything works out nicely, just as the drivers in Mumbai have an interest in not bumping to other cars. True, you often do have a strong “hand” in open source projects, look at Linus Torvalds at the Linux Kernel project, but there are plenty of open source examples where it is more a community-driven project without too many dominating people.
However, I do wonder to what extent this works? It seems to work for a city of 16 million people in Mumbai, but to what extend can you keep on doing this in (open source) software projects? A huge project as the Linux Kernel, would it be possible without having a leader person? And does a leader person necessarily needs to be of a strongly enforcing type? Could this actually work for a commercial software project as well, or is that doomed to fail? Please share your thoughts.
A day in the life of a Web 2.0 citizen
I usually start the day with firing off that foxy browser to explore the internet. A good starting point to get some vibes is the Capgemini Web 2.0 overview page which gives an one-eye overview of what’s happening in the Capgemini universe. Then I usually consume some RSS feeds that gives me some food for thought. And then the day starts. While reflecting on the latest news and sipping on my cappuccino in that delicious coffee bar around the corner, I moblog an article to my personal weblog or take a picture with my cellphone and Flickr it online. Usually I’m so taken up by my mobile twittering that I forget to notice the name of the gorgeous coffee girl. Too bad, could have facebooked her and flirt with her through status updates. However I noticed that in the Netherlands that they are more into hyving, which made me create an account there as well. It’s quite hard to keep track of all your friends that are feeding you with their interesting lifes.
One of my latest gadgets to enrich my life as a techno-sexual is an iPod that made me realize that touching is so much better than scrolling. After connecting to the local wifi, I check the Youtubed adventures of my friends and total strangers, till my secretary SMSes me to ask why I didn’t RSVP to the company's beach party invitation yet. But SMS is so 2000, I actually prefer to be blackberry’d since the company pays then when I am replying.
So after all the social networking, I often check my second life where I meet up with Tim or our Spanish SL experts. Quite awesome how they managed to build a new virtual Capgemini office. It almost makes me forget to get back to my first life in the real office. Unfortunately not in sunny Span but in rainy Netherlands.
Oh, it’s time to go home. Just need to Cap IT off to our corporate technology blog…
Your mobile phone, serving the internet
Just recovered from my "gosh, I thought I've seen it all" moment when I discovered about the Aptana Jaxer server, Jonathan Mulholland (a Twitter buddy, and read here his excellent blog) pointed me to the fact that Nokia launched the Nokia Mobile Webserver initiative. Djeez, it was one of those stupid things you read over the internet when someone said "wouldn't it be cool if you could run a webserver on your mobile phone?" and now.... it's reality!
That does make me think btw that you better listen to newbies, noobs and the simple-minded people that yell things like mobile webservers and running JavaScript on the server instead of the expensive reports from "certain reputed analysts". It's much cheaper and has a high probability of becoming true apparently.
Anyway, Nokia managed to tweak the Apache httpd server (one of world's most popular webservers) to run on their Symbian operating system. Since it already has some kind of POSIX layer, they could port the httpd server to their mobile phone. Since they already ported Python to Symbian, they reused that effort and now you can run your Python Server Pages on your phone.
But the most interesting part is not the fact that they managed to do this, but more what tremendous opportunities this could bring us. So basically your device becomes an active participant of the internet. Nokia envisions a future where users can browse to your phone and for instance watch your pictures and leave messages. But think also about the following:
- Stream your phone's video feed live to the world. (Could also be used by jealous husbands and wives, and when I think about it, the porn industry could be a major driver of this feature.)
- Extreme live blogging/twittering: I don't think how much more live and extreme this kind of blogging can be? If you would have a temperature sensor (and I don't see why you couldn't), your blog could adapt on the fly to the weather circumstances :-)
- Dating: when you enter a room or club, some wicked Personal Area Network detects all the participants and feel free to browse the profile pages from everyone around you.
But, and yes there are some "but's", think about the following:
- IPv6: if all those millions of phones start hitting the internet, I think we'll run into troubles with the amount of available IPv4 addresses, so we need to switch to IPv6
- Performance: when you're John Doe that wants to show off his cats to the occasional visitor, no problem. If you are some kind of porn star or just... popular, what if hundreds of people start hitting your mobile site? Can't imagine that your phone can handle that.
- Security and privacy: well I don't think I really need to explain you what kind of security and privacy nightmares this can cause?
- Bandwidth and costs: will UMTS be enough? And how much money will these huge data transfers will cost you (in case you want to live stream your video feed ;-) )
But let's not be so negative and let's focus on what kind of added value this could bring to a business! You can leave a message on my phone...
Social networks, RSS, email... aaargh! Information overload!
I have the feeling that I get more and more overloaded with information from my social network memberships, subscribed RSS feeds and email accounts. Sometimes I can’t even catch up anymore and prefer to just delete the whole list of feeds instead of saving them for another time, since it just won’t get any better…
There are a couple of web applications that try to find a solution for it:
- Yahoo! Pipes: Yahoo! offers a solution where you can "aggregate, mainpulate and mashup content from around the web". Honestly, it's one of those cool kick-ass online tools where a genuine "wow" comes out of your mouth. Pipes offers you a solution where you can graphically put feeds together and apply filters to it. You can say that you want to have feeds from CNN that only matches your regular expression or rule and for the result, it has to fetch pictures from flickr.com. Have a look at this movie to get an idea.
- Friendfeed: Friendfeed solves the problem of having to keep track of all your social networks and feeds in order to be updated about your friends' activities. Pretty cool web application that is backed by some top venture capitalists. If we apply Yahoo! Pipes to Friendfeed.... ouch! It brings us already one step closer to what we want...
- NewsGator: NewsGator's approach is not unique, there are more web-based RSS feed readers out there, but I have to say that NewsGator's is pretty well-developed. But imagine that for each post that you can say whether you like it or not (a bit like what Facebook offers on the activity list) and perhaps also the reason and that your RSS feed reader learns from it.
So basically we want something that is a mix of all of the above. Here's what I would want to see: some wicked abracadabra AI engine that perfectly knows what you want and do not want to read. But there are some problems. For instance I am not interested in chickens, but I do like to be updated on initiatives like www.adopteereenkip.nl where you can adopt a chicken (I am about to adopt one) to support a good cause. But how does the rule engine know that I do want to be updated on chicken adoption initiatives and not on some weird mad chicken disease stuff?
Someone that can help me out? I'm pretty sure the chickens would really appreciate it...
*update 6.35 pm @ mumbai: "Influenced" by the comments I finally joined Twitter as well. I could resist for quite some time, but now my resistance has been broken. You can follow me on the account leeprovoost. In the meanwhile let's republish the link to Capgemini's Netvibes page with their Twitter stuff: http://tinyurl.com/34h5oq. Happy Twittering! (and now my social life is really ruined... thanks...)
Pocket Earth
In an earlier post I wrote about context aware services. Being able to put the world in your pocket is an important prerequisite for enabling the personalized context aware services that I fantasized about in that article. And exactly that has become reality: your pocket now fits the world, because the world now fits inside a cell phone.
The world fits inside a Nokia N95
Our planet's entire surface (at least the inhabitable parts) is almost entirely digitally mapped, and in astonishing detail too. It goes far beyond satellite images nowadays. Buildings, roads, streets, parks, restaurants, phone booths, wireless hotspots and even individual hedges are being photographed and geographically mapped. Mashed together with directory services this makes for the killer mobile application. Nokia must be thinking on the same lines, because they have just bought NavTeq.
NavTeq is driving though our streets with special GPS and 360 degree camera equiped cars, taking pictures in all directions every 10 meters or so. They will almost need to do this continuously, because phone booths tend to move around every once in a while (wouldn't you if you were a phone booth?). It means that the digitization of our planet is a continuous process. Imagine the tremendous cost of doing that. The expected profits apparently exceed these costs, because there clearly is a business case. To give you an idea of the value: Nokia paid 5,7 billion euros for Navteq.
The mobile Rich Internet Application (RIA) is the next big thing in the RIA market. An RIA can be quite resource hungry. It needs support for smooth and slick GUI rendering, high quality audio and video streaming and high performance 2D and 3D rendering to name just the obvious ones. The average cell phone certainly isn't powerful enough. We won't accept less than a 3G phone with enough processing power to envy an XBox (well, okay, not that much). Apple's
iPhone sure seems powerful enough (unfortunately it does not support Adobe Flash yet), Nokia's N95 has enough muscle as well and most probably, the mysterious Google Phone too. The latter is much speculated about and was said to be launched in 2007 (by HTC) and would not have a built-in GPS receiver. The world hasn't seen that phone yet, I guess they have decided that it should have that GPS receiver after all.
I thought I've seen it all...
There are these moments in your life when you are in awe of what technology allows us to do. I remember a couple of years ago that a user on a forum was asking how to do some server side stuff in his web browser but without reloading the browser. We “experts” were all rolling our eyes and thinking, gosh yet another newbie that does not understand how web development works. You can imagine when the whole XMLHttpRequest and Ajax stuff became mainstream that we had to rethink the way we were designing our web applications.
In my current project, we have to write complex validation code for validating complex form input. The very annoying thing is that we have to write the server-side Java validation code, but replicate identically the same validation code with client-side JavaScript. This results that sometimes there is a small difference between the server- and client-side validation.. As you can imagine, leading to frustrating debugging sessions. I remember that I said to my colleague “It would be so cool if we had for instance the same JavaScript validation code that we could reuse on both client- and server side. True, we could send our client-side validation to the server with Ajax, but that would require some server roundtrips and alas, most banks are not really eager to use Ajax. So I sadly continued wondering why there are so many issues with getting the same buggy Double check in JavaScript and Java 1.4…
Yesterday, I bought a new Apple computer and I was happily installing and configuring my Eclipse environment and of course the must-have for every web-developer: Aptana! One of the big problems with JavaScript and Ajax programming is that there are barely good development environments. Syntax highlighting can be handled by most IDEs, but when it comes to complex code completion and assistance, nothing can beat Aptana as far as I know. You can either install it standalone or as an Eclipse plugin. So I surfed to the website of Aptana to get my plugin, but suddenly I stumbled on Aptana Jaxer. What caught my I was the following sentence: “Jaxer, The world’s first Ajax server”. My heart stopped beating, my whole (young) life passed by and I was thinking: “gosh, I thought I’ve seen it all…”
Here a short feature list from the website that says it all:
- Write entire applications or presentation layers in Ajax
- Full DOM and JavaScript on the server
- Seamless communications between browser and server
- Access existing pages written in other languages like PHP, Java, or Ruby on Rails
- Share validation code on the browser and server (my favorite!)
- Database, file, and socket access from JavaScript
- Open-source, standards-based, and uses the APIs you already know
Basically, Aptana made it possible that the typical client-side concepts like DOM and JavaScript functions become first-class citizens on the server side. You can easily write a function that can be shared by both client- and server-side and on the server you can manipulate the client-side DOM elements. So basically, you share some kind of common namespace between the server and client. Watch this screen cast for getting an idea.
So where can this take us? I don’t think that this will conquer large financial institutions or other companies with large web applications running on Java. Most of them are still struggling with taking a stand towards plain Ajax. However, I do see a big market at first for these little applications that run on platforms like Facebook or OpenSocial, widgets, mashups, etc. I don’t know the product well enough to judge how everything is arranged with security and scalability. I can imagine that it could give developers some more head aches related to security and hacking, since it became easier to pass malicious data to the server.
It would be interesting if Aptama would rebuild the (in)famous Pet Shop Store with this technology or if they can announce a major website that adopts this technology… Aptana, take the challenge!
c,mm,n: Cars-as-a-Service
I received recently an invitation to attend the first c,mm,n garage in Delft (the Netherlands). C,mm,n (pronounce: common) is a joint project between the three Dutch technical universities to build a car for 2020, but in an open source way. I quote: "c,mm,n is an innovative mobility concept; a new way of developing, manufacturing and using cars. By making the blueprint of the c,mm,n car publicly available under an open-source licence we are able to develop truly sustainable mobility. Just like open-source software, c,mm,n focuses on services around the product. You can use c,mm,n to offer people a lease car, rental car or other mobility services. It is allowed to sell c,mm,n too. Just as long as you make any derived work publicly available again."
You can watch on their website a video (sorry only in Dutch) where one of the project leads explain the philosophy behind the car. He explains that traditionally, car manufacturers take an existing car and improve it in several ways and there you have your new car. Basically the car (manufacturer) dictates the way how we should live our life. The c,mm,n project tries to reverse this and looks at the future and let our life influence the way how we build cars.
So the idea is that the technical drawings of the car are freely available on the Internet and everyone is free to change and improve the car, but as with the software open source world, one should contribute its changes back. What you actually get is that you can't make money anymore from the basics of the car (e.g. chassis), but that you have to earn your money with the services that you offer: rental, leasing, modifications, etc. Similar like the commercial open source companies like SpringSource that give away their code and products and charge for consultancy and support. I can imagine that there will be a booming market for "pimp my ride" kind of companies and if they do the marketing and service offering right, this might be a very lucrative market...
The big difference with traditional cars is that the lifetime of this car is set at three years. So you rent or lease your car for three years and then you bring it back to the dealership. All the external car parts like doors, electronics, etc are made to last three years. Where things like the chassis, engine, etc are designed to last a couple of lifetime cycles. So as a car dealership you don't sell cars anymore, but your customers rent or lease them. In a way they are following the current trend in software offerings where hosted software where you pay per use or per user becomes more and more popular (Software as a Service).
Very interesting concept this Cars-as-a-Service. I wonder to which other industries we can apply this "as-a-Service" as well... What about "Husband-as-a-Service"? Hmm, I think that exists already... ;-)
RIA Engineering skills or the 6-legged sheep
Remember the happy days of the first version of Java, almost 13 years ago (1995)? Java was hot. All of a sudden, you had the power to write attractive little web applications (Java Applets) that would run in any browser! Websites were never as slow at loading as in those days because everybody wanted smoothly
scrolling text applets on their page. It was a huge hype.
The first version of Macromedia Flash was introduced about a year after Java (1996). With Flash you could create flashy animations that loaded a lot faster than Java Applets. Actionscript was introduced in Flash version 3 (1998), allowing the development of interactive animations. In 2004, Macromedia released the first version of Macromedia Flex, a framework for developing Rich Internet Applications that run inside the Flash player. The term Rich Internet Application (RIA) itself was first used in 2002 in a whitepaper from Macromedia.
In 1997, Netscape version 4 was released. What's so special about that? Well, the fact that this version came with a Javascript interpreter, Cascading Style Sheets (CSS) and a Document Object Model (DOM). In other words: Dynamic HTML or DHTML. Although Netscape 4 was very buggy (especially, the CSS part), DHTML became popular very quickly. Since the introduction of DHTML, there always have been browser incompatibility issues because the browser vendors interpreted the W3C standard differently and because Netscape and Microsoft both wanted to become the dominant web browser vendor.
In 1999, Microsoft introduced a special ActiveX component that allowed DHTML developers to retrieve data (XML) from a web server in the background (asynchronously): the XmlHttpRequest object. The other browser vendors soon adopted this idea and W3C standardized the concept. Ajax was born and became
immensely popular in a very short time.
So, where are we standing now? Java Applets still load absurdly slow and you hardly see them anymore. Although, Java (Micro Edition) is the dominant front-end technology on mobile devices. Flash, now owned by Adobe, is installed on 96% of all internet devices and has evolved into a fast and robust platform for developing both rich media and rich internet applications (RIAs). Browser incompatibility is still an issue with Ajax, but it is hidden by a multitude of robust Ajax frameworks. Microsoft introduced yet another cross browser rich internet technology called Silverlight, which is a special plug-in that extends your browser with powerful multimedia capabilities that can be controlled through Ajax.
Rich internet technology has become mature. Vendors of such technology are more and more focusing on the quality of their development tools. It is interesting to see that Microsoft seems to primarily focus on their tools for visual UI design, which led to the Expression Suite. This suite allows designers and developers to cooperate more closely. This is crucial because more often than not, UI designs are just drawings that the developer should match in the real application. It makes far more sense if the designer can produce a skeletal version of the application that can be "wired" to business logic and services by the developer. Adobe has also understood this and is working on similar tools (code named Thermo).
Over the last 13 years, rich internet technology has become proven technology and we (users and business) have become familiar with its possibilities. This technology enables the development of responsive and usable web applications with attractive graphical user interfaces (GUIs) that can rival with the user interfaces of desktop applications. Well designed RIAs are easy to use and such a pleasant experience that (intended) visitors spend more time on the website and become regular users.
Building a rich internet application also requires a rather rich set of skills:
Besides a skilled software engineer, a RIA engineer:
- is a seasoned GUI engineer, implying solid understanding of typical GUI concepts, event driven programming and the MVC pattern,
- has knowledge of and experience with W3C standards such as XML, SOAP, XPath, DOM and XHTML,
- is familiar with the Web Oriented Architecture style popular in the Mashup development community, which means knowledge of concepts like Representational State Transfer (REST) and Javascript Object Notation (JSON),
- has basic understanding of popular server-side frameworks and standards such as J2EE, Spring, Spring MVC, Struts, Cold Fusion, PHP and .NET,
- and has sufficient understanding of user centered design and interaction design to be able to recognize design flaws or violations and communicate and work together with interaction designers.
Did I miss anything? Well anyway, I can confidently conclude that the RIA engineer is a sheep with at least 6 legs.
The COBOLization of Java
When I tell people that I had already my share of Cobol and RPG in my life, they look a bit puzzled since they do not expect a cool twenty-something dude, but rather an old long-bearded pony-tailed engineer. Ok, you might question the coolness of the dude, but the twenty-something is true. I actually entered this week the second part of the twenty-something-ness :-)
I’m not telling you this to generate more birthday wishes or presents (they are welcome of course ;) ), but because I start to hear more and more techies in the blogosphere that are talking about the COBOLization of Java. Bill Snyder’s entry on InfoWorld generated quite some buzz as you can see on the amount of comments.
2007 and 2008 is all about rich internet applications, Flex, Silverlight, Ruby on Rails and other fancy Web 2.0 stuff. Java is… well so 2000. Perhaps we, we as in Java community, should take the step to completely break with the past and bring a completely redesigned language and platform, without taking the garbage and burden from the past with us. Backwards-compatibility is nice, but often limits the possibilities for the future. Microsoft did actually quite a good job with their Visual C++ to Visual C# move. Never thought that I would say it, but C# 3.0 with LINQ is a damn cool environment for a developer!
But then you can wonder whether such a complete redesign and break with the past is necessary? The article quotes Senori’s CEO Ofer Ronen who decided to move to Ruby on Rails because of the pre-built structures for developing an e-commerce site. Well let’s not forget people, Java was not designed with building a fancy e-commerce website in mind. If we put everything a bit in perspective it makes sense that we need nowadays a lot of plumbing to get things done with Java. Ruby on Rails has the advantage that is fully designed to easily build web applications. In a way you can call it a Domain Specific Language. The same that Ruby on Rails is also not suited for every job either.
I had this discussion with a colleague at my customer recently and his idea was that Java will become more and more the COBOL for financial institutions, to build large and robust systems.
So, perhaps in ten or fifteen years people will react the same to the future cool computer science dudes (I’m really trying to polish up the image of us, computer scientists.) when they say that they had their share of Java….
That brings me to another discussion that has caused some heated debates in the blogosphere: which languages should the new computer science students see in university? Java? C#? C++? A recent article in the The Journal of Defense Software Engineering pointed out two interesting things:
- Pitfalls of Java as a first programming language
- A real programmer can write in any language
It’s not limited to Java, you can easily say the same for C#. They both hide a lot of lower level complexity for the developer. While this does speed up the efficiency of developing, it causes that the future developer is merely trained in reusing the right library than actually knowing what he or she is doing. Pointers? Registers? The more you know about the basics, the easier that you can actually get into other languages and language paradigms as well. I remember that in my first year, we were challenged by our professor to solve problems and come up with algorithms in C. I heard that nowadays, the new students from my university start with Visual C#. But not only the complexity of the language, also being exposed to different language concepts is a must. Especially nowadays with the growing trend towards using Domain Specific Languages. We realize more and more that there is no one size fits them all. Sometimes a problem can be better solved with a functional language, sometimes with a object-oriented language, or sometimes just with Assembly. If you have never seen these different concepts, how can you ever make a decision?
Anyway, got to go. Erlang is waiting for me… :-) What language will you learn in 2008? (and please don't reply "French"... ;-) )
Where's the spreadsheet for enterprise mobile?
VisiCalc on the Apple II platform in ’79 is generally regarded as one of the first “killer apps” for the desktop computer. I wasn’t born back then, so I can’t tell you how great it was, but I did experience email as one of the killer apps for the Internet. Now with the mobile revolution (well at least according to Apple and Google), one can wonder where the spreadsheet for mobile is? There doesn’t seem to be “the killer app” for mobile enterprise users.
Fair enough, Blackberry’s email service could be regarded as a major, well actually the only, driver for RIM’s handsets, but I still expect to see some kind of application that will blow away, us enterprise users, from our feet and let us rush to the stores to get such a device.
Now that we’re talking about push email anyway, Apple could compete directly with the Blackberry by positioning its .Mac service as a push email service (don’t know if actually exists already?) in order to drive enterprise adoption. (And I actually think that a lot of home users will appreciate this feature as well!) So can Google, with their GMail service on the Android platform.
I’m using both a Nokia E61 smart phone and a Blackberry 8700 and except for their excellent email handling capabilities, I’m not blown away by any of the other features. Reading PDF documents? Screen is too small and the mobile PDF software screws up your document layout. Surfing on the Internet? Well, Facebook Mobile is quite cool, but still have lots of issues with rich user interface websites (although I have to say that Opera Mini gets better and better). Before you start wondering why I am surfing on Facebook Mobile on the company Blackberry: our global Java Community has a presence over there… ;-)
But all complaints aside, where is the mobile killer app that will drive enterprise adoption? Google Maps with a GPS chip? Integration with SAP or SalesForce? All exist already, but doesn’t seem to create much more than some ripples in the water.
Now, both Apple and Google are counting on the developer community to invent some great apps for their respective platform to drive adoption. So does that mean that they can’t come up with a killer app either…?
Please enlighten me…
Smart phone killed the desktop star?
Rufus Ketting made in 2006 a nice parody on the 1979 Buggles pop hit “video killed the radio star”, named “iPod killed the video star”. With 2008 in the horizon, I make a parody “smart phone killed the desktop star”. Perhaps it’s too early to use the past tense “killed”, so perhaps we should rather use “will kill”.
Whatever tense we use, should we start throwing away our desktop computers and start buying Apple iPhones or other devices instead? I think for now, a certain group of people could perfectly do this. I actually know a lot of people that only occasionally use their computer for a Google search or for reading their emails. They could perfectly do with a smart phone and a flat-fee UMTS subscription. Until a couple of months ago, I always had my 12 inch Apple iBook with me. We were inseparable. Now that I have my Blackberry with UMTS subscription, the love has come to an end and the iBook enjoys a peaceful retirement as a portable DVD player.
So, if the desktop gets killed, what are we going to do with all those desktop developers out there? Luckily, Google has an answer to this problem (no pun intended): Android. Our friends from Mountain View are busy with developing a platform that will power the future cell- and smart phones and they target the big community of already-existing Java developers. I recently started playing with the Android Development kit and I have to say that I was quite amazed that as a Java developer that I could so quickly start writing applications for Google’s Android platform (also Java).
The interesting thing of the Android platform is that it perfectly fits in the growing trend of writing mashup applications, where you develop your software by combining other existing services. An example of this is that you can ask your phone to look up the address of your contact with Google Maps and that your application uses the GPS chip to plot the direction from your current location to your contact’s. Imagine how far you can take this. Let’s say that you know that your friend likes the super-delicious brownies from Starbucks, then your app could request the GPS locations from all the Starbucks franchises in your neighborhood and calculate the shortest path to your friend with a stop in a nearby Starbucks.
So in this new world, we’ll need two kinds of developers: the ones that develop services (or Web APIs) and the ones that create mashup applications that consume them. Perhaps in some future, we’ll see more and more websites that barely offer functionality through a traditional web interface, but just exposes most of their functionality through a service.
One question still to be answered is… on which devices are we –developers- going to write our Android code? Well probably in a far far future that’s not a concern anymore since we’ll have code generators that have replaced us. And of course code generators that can generate other code generators to generate new code. I hear already a new song coming up: “code generator killed the developer star”. It's just a matter of evolution...
SOA Tunnel Vision
Having delivered quite a few trainings on SOA and having observed several SOA-ish projects I notice that SOA solutions can be made very complex in a very short timeframe.
Being a big fan of minimal approaches, it really surprises me that instead for looking for simpler solutions, people tend to make a solution more complex.
The main cause for this is what I would call the golden hammer syndrome. I.e. people use the technology/trick that they know, even if the problem does not fit their particular tool/approach. Instead of looking at the reality, the reality is changed to fit within the “reality” of their tool/approach. And we have achieved SOA – Tunnel Vision.
The only way to deal with this tunnel vision is to induce a deep paradigm shift in the individuals involved.
I believe that nearly 90% of the engineers is not familiar with REST, although nearly all of them are using worldclass solutions leveraging REST ideas. (Mashups , Yahoo, Delicious, Amazon, Paypal, Google etc.).
That’s why in in the SOA training that I’ve co-developed the delegates are exposed to the REST approach of putting together a SOA Solution. Delegates are shown that within it’s strength a REST-full solution can be 20-100 times quicker implemented than a conventional SOAP solution. At the end of that workshop people start grinning and get energy from the idea of doing SOA in a different way.
They have just undergone a paradigm shift ....
The point of this exposure is not to become a REST zealot but to help engineers understand that they should have more tools in their toolbox. There are certainly environments in which a REST approach would cost more effort.
I think the whole goal of proper engineering is to find the simplest solution that fits the given requirements. Only the simple solutions (and therefore maintainable) will last, the complex solutions will founder.
Why don’t the engineers in this world just add more simplicity instead of more complexity to the solutions they design?”:
