• New Job, New Site, ...

    Yep … I got a new job and yep … I got a new website.

  • Welcome to Jekyll!

    You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when a file is updated.

  • According to the Sunday Independent ... 50 years ago ... the outlook was ... mainly dry

    Nuclear power plant offered to us

    Reports are current in political circles that the Government has received an offer from a German industrialist to build a nuclear reactor in Ireland as part of his plan to provide power for industrial development.

    Ballad group singers are engaged

    Folk singer Ann Byrne, of Blackrock, and Paddy Roche, Templeogue, a member of the Ludlow Trio, who have announced their engagement. Both are regular singers at the Abbey Tavern in Howth.

    Teenagers dance on the dunes

    Hundreds of jean-clad teenagers danced at a barbeque in the dunes of Brittas Bay last night while thirty Gardai stood by. But there was no trouble for the organizers of Club Caroline were well prepared. Wardens patrolled the area with megaphones and a squad of the local Order of Malta Ambulance Corps and lifeguards were on hand.

    Derby win: like pennies from Heaven, said Bing

    Flashing down the straight in Irish Sweeps Derby yesterday at Curragh, Lester Piggott urged the chestnut colt Meadow Court into an electric burst of speed to win £55,650.

    Todays Weather

    A ridge of high pressure west of Ireland is moving east, followed by a trough of low pressure. The will be sunny periods in most areas, with outbreaks of drizzle in the west, late this evening. Moderate west winds, becoming south-west: average temperatures. Outlook: Mainly dry.
  • Range anxiety? What range anxiety! (My first road trip with the BADMobile :))

    In case you are wondering ... this is the BADMobile ... (ask me, if you want :)) ...

    My friend Klaus and myself have spend more time and more miles (on motorbike(s)) together than we care to count. And the pattern is that once in a while we need to do something crazy. This time around we decided that in the next 5 years we will visit all of the major road races in the UK & Ireland (at least) once. To refresh your memory, these are ...

    Last week we went to see the Northwest 200. The trip was awesome!!! Road racing is different. One good way to learn more about it, is to watch "Road". The movie tells the story of the Dunlop Dynasty (a family of road racers). Robert Dunlop died on 15. May 2008 racing at the Northwest 200. Two days later his son Michael was racing again and won the 250cc race at the Northwest 200. While we were there we obviously took the chance to pay our respects to Robert and his even more famous brother Joey.

    So ... it was an emotional trip, but also very inspiring and very impressive. The skill, the passion, the commitment is unbelievable.

    But ... that is not what I wanted to talk about!

    What I wanted to talk about is range anxiety, because I now own the Nissan Leaf for 2 month and this was the first time I wanted to go on a road trip. Naturally I was concerned about the range of the car and if I will be able to make it from Dublin to Portrush or if I will get stranded somewhere in the middle of nowhere with no power and no charge point nearby.

    To cut a long story short: All my fears were unfounded, but there are a couple of things that I learned and that you need to think about when you do a road trip with an electric car. Here are my lessons learned ...
    1. First things first: Let's talk about range and the range of the car. The advertised range is 199km. That is not realistic. A more realistic range under optimal conditions is 150km. Charging the car to 100% takes a long time, means on a road trip you will probably use the quick chargers that you find on the way and charge to 80% (30-45 mins). With 80% charge you can get a range of 120km. But again that is not realistic, because to feel comfortable you probably want to have 20km of range left over by the time you get to the next charging point (just to make sure you have enough left over in case you get lost looking for the charging point or in case the charge point is broken and you need to go to the next one). That means that for a road trip you should calculate with a range of 100km between charge points. Wind resistance increases with velocity, means it makes a big difference if you are driving 80km/h, 100km/h or 120km/h, means to get to 100km range you cannot go faster than 100km/h, means you will roughly drive for an hour and then charge for 45 mins and that leads me to the big conclusion of the road trip: Getting there (to Portrush) was actually no problem. There are plenty of charge points on the way and if you realize that you need to get into this rhythm of 60 mins of driving followed by 45 mins of charging you can go as far as you want, but ... it is going to take you twice as long as you think to get there, means for me a road trip has nothing to do with range (anxiety), but with making peace with the fact that it is going to take twice as long to get to where you want to go. In our case it took us 5 hours to get to Portrush. In Portrush I was talking to another Nissan Leaf owner and he mentioned that earlier in May he went from Portrush to Cork and it took him 14 hours. I have to say that I actually enjoyed this rhythm of 60 mins of driving and then a cup of tea and a quick walk. We arrived safe and sound and were very relaxed (not exhausted).
    2. The second take-away from the trip is that the infrastructure in the Republic of Ireland (ROI) and in Northern Ireland (NI) is second to none. There are plenty of charge points in NI and in the ROI. All of them work. All of them are free of charge (using the ESB charge card). All of them are compatible with the Leaf. Very rarely you arrive and need to wait for somebody else to finish charging (and if so most of the time it is less than 15 mins). There are mobile apps (for iPhone and Android) to help you to find the charge points and the navigation system in the Leaf will help you to find the best charging points on the way.
    3. At home I am fine with the public charging points and with my home charging points, means I do not miss the granny cable, but while traveling (especially when you arrive at the B&B at the other side) I would not mind to have the extra option of a granny cable. The original Nissan cable is <believe-it-or-not>EUR 1000</believe-it-or-not>. No comment :(. But I am thinking to get this one.
    4. The best thing about charging the car while being on the road is that you get to talk to a lot of other Leaf drivers/owners and all kinds of people who want to know how this works :).
    Bottom line: Great trip. Great car. Great experience. Don't rush it. Take your time. Enjoy it. I am looking forward to the next road trip (visiting the Ulster GP :)).

  • Functional Programming on iOS and Android - Making the impossible ... possible?!?!

    Beginning of the year we had one of our Microsoft Senior Architects from the GDC (Global Delivery Center) in India with us. Over a couple of pints the obvious happened: I sparked his interest in functional programming and he sparked my interest in F#.

    First I made Mono and Emacs work, but then I started to use Xamarin.

    Not so much, because I needed a better IDE (Emacs rules :)), but because I got interested in the claim that you can use Xamarin to do Android and iOS cross-platform development with #F.

    If you need to develop a mobile application (and these days ... who doesn't :)) your choices are full of compromises. There might be cases, when you can get away with supporting only Android or iOS, but in general you need both. To support both you can ...

    1. Develop two native apps. One in Objective-C and one in Java. This will give you the best user experience. Both apps will be able to take full advantage of the capabilities of the respective device, platform and APIs. BUT ... it is very expensive (two separate teams, two separate skill-sets, programming languages, tool-chains (source code control, ...), ...). This can become a night-mare. Quickly!!! Not even talking about the challenge to keep both versions in sync to ensure that the entire user community gets the same user experience (just imagine you are telling a friend about this cool app (on your iPhone) and he/she installs it (on Android) and it is sh... You will probably not tell anybody else about it (not even the iPhone users), because you are afraid to ruin your reputation).
    2. Use the browser. Safari on iOS and the browser on Android share the same rendering engine: WebKit. Means you can get a pretty good cross-platform experience by implementing a kick-ass web-app. There are a couple of very advanced HTML5, CSS, JavaScript based solutions available that can make you live easier (e.g. Apache Cordova/PhoneGap, FeedHenry, ...). BUT ... when you want access to some more sophisticated APIs (e.g. GPS, Sensors (Accelerators, ...), Bluetooth ... (because as we all know ... everything is better with Bluetooth :))) you can get stuck and you might end up needing to compromise the user experience.
    3. Use a cross-compile platform. Means you write the app once (in a given language) and the iOS and Android app get build from that code base. Two examples are Xamarin (using C# (and F#)) or RoboVM (using Java (and Scala)). 

    I am currently taking a look at Option 3 (using Xamarin and C#). My initial exec summary is ...
    • It works!!!
    • The IDE is stable enough to get work done (but has some bugs)
    • You get a lot of benefit out of using one development tool-chain (one IDE, one source-code management solution, one testing framework) and one programming language (it is much easier (and less expensive) for the team to solve problems, because they share the same skills and knowledge and can help each other)
    • The Model (as in MVC) can be shared between the two platforms. The Viewer/Controller code is still platform-specific. On one hand it will allow you to create the best user experience possible. On the other hand it will increase the cost to develop and maintain the app(s).
    Next step is to make Rachel's F# Minesweeper work on iOS and Android. I am not saying that F# is better than Scala (for me personally it probably isn't), but getting a development environment up and running that would allow me to develop mobile apps using a functional programming language for iOS and Android sounds appealing.
  • Scala on Android - Gradle, Ensime and the Android UI samples

    Besides getting my first companion app done for my Pebble, I also spend some time on X-Mas to start porting the Android UI samples to Scala.

    The samples obviously use gradle. I normally use sbt to build my apps, but this time I decided to stick with gradle, because I wanted to make it easy for people to consume the code (and embracing a new build system might be too big of a step as a first step). It also gave me an opportunity to checkout the gradle-android-scala-plugin.

    I also enhanced the gradle-ensime plugin to make sure it generates a valid .ensime file for Android projects.

    Now I have a working structure in place. If you want to help with the porting effort, please create an issue to let everybody know that you want to port on of the samples, fork the repo and send me a pull-request to get your port into the repo.
  • X-Mas Project 3: Install Source Code Pro (again) - And make Emacs use it (again)

    It is not a secret ... I like Source Code Pro!

    A couple of weeks ago I got myself a new MacBook Air (and resisted the temptation to get the 13-inch and like the 11-inch a lot) and installed Source Code Pro again. Getting it installed using FontBook was no problem, but then I could not remember how make it the default font for Emacs and all the tips and tricks that I was able to find did not work for me.

    At the end the solution was simple: I am using GNU Emacs and to start it I am using the Terminal app, means I just created a new profile, made sure that the Meta-key works, changed the font to Source Code Pro and started Emacs from this window and voila ... I am in business.

    PS: Ctrl-+ and Ctrl-- also works to increase/decrease the font size, in case you want to show source code on a screen during a presentation.

  • X-Mas Project 2: Building a "FlieWaTuet" - Using Mignon :)

    Warning!!! This has nothing to do with Scala or Software Engineering in general. Read at your own risk :).

    Ok, I admit it: This post is a little bit off-topic, but we had too much fun not to talk about it.

    It all started with an afternoon and nothing to do. At the end my dad, Alexandros and myself decided to get my dad's old Mignon box and just build "something". Amazing experience.

    Alexandros did build a canard plane (probably inspired by the Beechcraft Spaceship).

    I started with an "engine" and was just wondering what I can do with it. At the end I had a car with something on top that was turning and we christened the thing to be a "FlieWaTuet".

    For me as a Software Engineer it was a strange experience to assemble something and then see it working and moving. It is very rewarding. I think in my next life I will study mechatronics :).

  • X-Mas Project 1: Pebble Hello World 2.0 - The companion edition (with Android, Scala, Macroid)

    I love Christmas!!!

    My wife turns the house into the home of all homes, I get to see my all (or at least most of) my friends and ... I get to work on special projects :).

    My first special project was to extend the standard Pebble Tutorial a little bit and show how to build a simple companion app that exchanges data with the watch.

    As a first step I added some text to the standard Pebble Tutorial. The second step was to implement a companion app that can change the text.

    This is not really a tutorial. Instead I will share the code and will highlight the changes and extension I made.

    The main value is in showing what can be done and also in the configuration of the build systems.

    To start I suggest you just follow the standard Pebble Tutorial and use CloudPebble to build it.

    You can then take a look at my Pebble code to see how to add the text at the top and the bottom. In my case I also decided I want to use a real geek font. The code is also waiting for an app to send a new text to display, but initially works without the Android app and will just display "World" as a default.

    Note: Right now the tick handler updates the time and the text to display. To save battery the tick handler gets only called when the minute changes, means when you send a new text to the phone you need to wait until the minute elapses before you can see the new text. Changing this to get updated every second (and make the colon flash every second) is an exercise for the reader :).

    You can then clone the Android app. I am assuming you are familiar with developing Scala apps on Android. The app is very simple and it should be very easy to make it work with your Pebble app.

    As a matter of fact you probably only need to go to CloudPebble and need to get the UUID of your Pebble app and need to update the Android code with it. Afterwards you should be able to compile and install the Android app on your phone.

    A couple of things that worthwhile pointing out are:

    • In the build.sbt file I had to add PebbleKit to the ProGuard configuration to make sure ProGuard is not removing the PebbleKit from the class files
    • For the GUI I am using Macroid and to center the widgets I implemented a Tweak that sets the gravity. Not sure, if this is the right or best way to go about it
    That's it. As I said, this is not a tutorial. Please do not expect that all of this will just work. Instead you have to learn how to build a Pebble app and how to build a Scala/Macroid app on Android and you can then use my code to make a simple companion app work.
  • Scala, Android and BLE, because ...

    ... everything is better with bluetooth :).

    Originally I was thinking to do a presentation, but Martin convinced me to turn my talk for the Scala Meetup in Dublin into a hands-on tutorial.

    The main objective was to talk people through a couple of demos that can serve as starting points, so that they can start to do their own development.

    We talked about, how to write, compile and run ...

    The slides are here. Feel free to contact me, if you have any questions.
  • HTC One Mini ... does it make Sense?

    Update 2004-04-02: The first nightlies for M4 got released on CyanogenMod. Testing now ...


    The short answer is: NO!

    At least not in my case (anymore). I just removed all (common) Sense from my phone. HTC Sense that is!

    3 month ago I got myself a new phone and decided to go with the HTC One Mini. It is my kind of phone. It runs Android (means I can write Scala apps for it), it is sturdy, looks good and is not too big.

    But ... Jesus ...

    ... the ROM image it comes with is (b)loaded with "goodness" and call me old, but I had a hard time to figure out how the UI works, means at the end I decided to bite the bullet and do the right thing: Put a Custom ROM image on it (the smallest, meanest and leanest I was able to find).

    Obviously there are lots of articles about how to put a Custom ROM Image on your phone, but as always, the devil is in the detail and that means in my case in the model I am using (M4_UL).

    Ssssoooo ... here comes the bullet list of what I have learned ...

    • The HTC One Mini is an HTC M4 (not an HTC M7 (which is the bigger, "normal" HTC One)).
    • This is important, because most of the stuff (recovery images, ROM images, ...) that you get out there is for the HTC M7
      • Funny enough the guys on CyanogenMod just released an M4 for CM-11, but it is for the M7
      • What??? ... Explanation: On CyanogenMod the work to make a release stable is divided into milestones, means right now they are working to make CM-11 (Android 4.4) stable and for that work they have released milestone 4, but ... you would not be the first to think that ... -SNAPSHOT-M4-m7... works for the M4 (which it is NOT)). Which leads to the question, what to do when you have an M4?
    • First you need to unlock the bootloader (easy).
    • Then you need to root/superuser it (easy).
    • I suggest that you only S-OFF the phone, if you really need it.
    • Then you need to find a good recovery image. The one from ClockworkMod that works for the M4 is kind of old (at least I was not able to find a newer one than and is not always working. The good news is that TWRP just released 2.7 and that works like a charm.
    • Flash your phone with that recovery image (easy).
    • Now you are in business, means now you can boot into recovery mode and you can use adb to put whatever Custom ROM image on the phone that you like, but this is when you might run into the next problem: Where to find one? I was not able to find anything on CyanogenMod and then I tried a couple that I found in forums and some of them did not install (badly packaged) or if they installed on the phone they did not work (no Wifi, no calls, ...).
    • The one that I was able to find that works (Android 4.3 for M4_UL) is the one from One Hybrid
    ... and so far I am happy with it!!!

    PS: As a pleasant side effect, I could also swear that I get 4 hours more out of the fully charged phone. No hard evidence, but it feels like it.
  • Scala on the Pebble - Exploring SDK 2.0 ...

    ... just kidding :).

    Reality is ... triggered by the release of the Pebble SDK 2.0 on Feb., 3rd (iOS only, more on this later) and after more than 20 years of JVM based software development I willingful decided to write some C code again!!!

    And I liked it. Mainly because of CloudPebble. As pointed out here, setting up a software development environment can be a daunting task. Not so with CloudPebble. Long term I will probably install the SDK, but to get something simple done fast and to experiment with the SDK and its capabilities it is a very interesting approach. Not to mention that it works using my ChromeBook.

    As mentioned in the Video, at the current point in time, because the Android SDK is still work in progress, there are a couple of things that you need to do to make this work. Mainly you need to install the Pebble 2.0 App on your phone and you then need to upgrade the firmware on your Watch to 2.0. What worked for me was to download the .abk and the .pbz files to my phone, open the file manager of choice and then installing them by first opening the apk and then the pbz file. With that you should be all set.

    To get started I used a tutorial and modified it a little bit (playing around with fonts). I also hooked up my CloudPebble account to my GitHub account and the final version of the source code is available there.

  • Scala on Android - A start ...

    I don't know what your experience is, but ...

    ... in my case, when I look at a new technology, one of the main (or first) hurdles is, that it takes some time to get the initial development environment up and running.

    This is why I figured it probably makes sense to polish and publish something that I did a couple of month ago: Porting the basic Android tutorial to Scala.

    Enjoy :) ...
  • Scala on a Chromebook? Yes, we can!!!

    A couple of weeks ago I got myself an Acer Chromebook and so far I am very happy with it. I use it as a tablet with a keyboard and carry it around with me a lot, but ...

    ... sometimes I have an hour to kill in a coffee shop and would like to do some software development (in my case and these days mainly Scala) and started to wonder, if and how this is possible.

    The good news is ... you just have to think about it differently and (everything :)) becomes possible, means instead of running the software development environment on the box, you do what the Chromebook can do best and access a software development environment in the cloud (i.e. in my case an Ubuntu box on EC2).

    The SSH shell that I have mentioned can be installed from the Chrome Store and then you just need to create yourself an AWS account, upload you public SSH key, need to launch an Ubuntu instance (m1.medium works), need to install a couple of packages and you are on your way.

    The code I showed is a solution to Josephus Problem.

    Some people said "It can't be done!". I say "Yes, we can!!!".
  • Talking about the value of immutability ... for deployment platforms and innovation

    I am just back from presenting a talk at FutureStack in SFO.

    Very interesting trip. Got very positive feedback on what we are doing. Did meet a lot of people with very interesting ideas (e.g. my friend Klaus (see below)). Lew's keynote on Rubicon was insightful and inspiring. Kate was talking on the art of self-management and Peter talked about how to run hundreds of Postgres databases for Heroku. Checking out these (and all of the the other talks) is recommended.

  • To become or not to become ... a Sunday with Scala and Actors

    It is Sunday, the sun is shining ... in Ireland!!! What do you do? Right: You get your laptop and finally start to get your head around the actor model in Scala.

    In my case I tried to come up with a simulation for the Dining Philosophers Problem (DPP). There are implementations available, but I consolidated them and renamed the states and transitions to make it more obvious what is going on and used plantUML to come up with State Transition Diagrams (STDs) that show what is going on.

    The model detects potential deadlocks and asks the philosopher to put down all forks, before trying again.

    The epiphany of the day was that you need to use become() to model the states :).
  • FlightFest @ Gilt ... Location, Location, Location ...

    Psssttt ... don't tell anybody, but ... at Gilt it is not always about work and writing great code.

    Sometimes we like to party. Especially when something like FlightFest comes along and the office is located right down by the Liffey overlooking the river and the Samuel Beckett Bridge.

    Sometimes it is too good not to do it.

    What a great day. For the kids. For the girls and the boys. The small ones and the big ones.

    The fly-bys were impressive. The highlights were ...

    • Micheal O'Leary hitting it out of the park (again)

    (PS: In case you can't read it. He painted "U never beat D Irish" on the plane :))
    • The Hunter and the Sabre

    • And the fly-by of "Christina's office"

  • Gilt CIO talks ... about innovation.

    From an interview with Steve. Too good not to turn it into a blog post ...

    "When people talk about innovation they are often talking about the solution to some problem. But the real source of innovation is figuring out what the right problem is to solve. Take Gilt for example: Gilt took the invite only friends & family sample sale invite that existed for coveted brands in cities like New York and moved that model online.  This allowed consumers all over the US to have access to designer apparel and accessories for a short period of time, similar to a two day offline sample sale, and it allowed the brands to have another outlet to sell end of season merchandise.  Gilt was perfectly positioned to meet both the brand’s needs and the customer’s needs. The identification of the problem is the hardest part. The solution, once you’ve identified the problem, tends to be pretty easy. If you give any set of engineers a problem, they’ll figure out a solution with confidence. But really, picking which problems to go after in a world of limited resources is where the magic of innovation happens. I think often times people focus on a solution or cool technology that’s really innovative, but it’s only innovative if it solves a substantial problem."

    True, true, true, ... let's continue to find and pick the right problems!!!
  • Roland

    The other day a colleague of mine pointed me to the new website/book from Jim Carrey "How Roland rolls" and while looking at it I started to think about my name: What does it mean? What is the origin? What are other well-known usages?

    Here is what I found out ...

    Roland was a knight who fought for Charles the Great (also called the father of Europe). His life is the source of legends and his last fight at the Battle of Roncesvalles in 778 was turned into the Song of Roland. In Germany Roland is also famous for the statue on the market place in Bremen. The name of Roland's sword is Durendal.

    Roland is the name of a japanese maker of music equipment. The company was founded in 1972 and has 3000 employees. A lot of very famous artists use Roland equipment and you can see a lot of Roland keyboards on stage during live concerts. The rumour is that the company was named after the Song of Roland,  apparently the name was just chosen because it was easy to pronounce and stands out easily on trade-shows.

    Roland is the name of a company that produces printing machines. It belongs to the MAN group. My father used to work for Mabeg. Mabeg was producing "Bogenanleger" (Sheet-Feeder) and "Querschneider" for Roland printing machines in Offenbach. I do not know why the founders (Faber & Schleicher) called their first printing machine Roland. It is said, because it is easy to pronounce.

    Roland Garros was an early French aviator and a fighter pilot during World War I. Stade Roland Garros is a tennis stadium in Paris, France, which is named after him. The French Open are played there.

    Here are a couple more people that I know that are called Roland. Roland Emmerich (Director), Roland Berger (Consulting), Roland Cox (the valiant in Jumper, played by Samuel L. Jackson), Roland Schnir (a friend from mine from the IONA days), Roland Loew (a friend from school) and now last, but not least Roland the wave who’s afraid that, one day, when he hits the beach, his life will be over. But when he gets deep, he’s struck by the notion that he’s not just a wave — he’s the whole big, wide ocean!

    I like the last one :).
  • Getting GTD done - Thoughts and Tools

    We all have a lot to do. Effective time/task management is essential. I’ve been using GTD (Getting Things Done) for a while now (a long while :)) and for me it comes down to the question, “How do you pick the next, best, most valuable thing to work on?”—basically answering the question of how to make the best use of the time you have.

    Picking something from your list of urgent things to do is kind of easy, but how can you make sure you are not missing the opportunity/chance to work on something important, if you get the chance to do so?

    Easy! Just do Inbox-Zero and use GTD (Getting Things Done), read the 7 Habbits of highly effective people and work through the stuff in 43folders and ... problem solved, right?

    The aim of this blog post is to share some of my thoughts on how to become effective or even better maybe only become more effective than you are today and what tools to use and how to use them.

    First let's be clear: It all starts with yourself. You need to be clear and serious about what you want to get out of life and what is important to you. The stuff above will help you to get organized, but it will not make you happy (at least this is true for myself).

    What has helped me is to think about golf balls. You know? The story about the professor that teaches philosophy and is pouring sand and beer into a bucket? Means every 6 to 12 month I am making sure to set aside half a day with a friend or on my own and think about the golf balls that need to go into the bucket. Sometimes I am adding one (easy), but then I am also making sure that I am removing one (hard). I try not to have more than 5 golf balls in the bucket.

    One other good way to look at it is the "flight-level" approach that is suggested by David Allen to put structure into GTD.

    And here comes the first tip or trick: Originally I had all of that in one place (e.g. your GTD tool of choice). For me personally that was bad in 2 ways: First, I was looking at it way too often and second, the list-view way of looking at my purpose, vision, goals just did not resonate with me.

    A couple of years ago I started to maintain my high(er) level believes (e.g. 50k, 40k, 30k) in a very expressive and colourful mindmap. To maintain the mindmap I am using FreeMind. And then I am printing it and put it somewhere, where I can see it (at home). This works very well for me. I look at it a lot and most of the time it makes me smile.

    Means I am using my GTD tool only for the lower "flight-levels" and the runway.

    So let's talk a little bit about my GTD tool. I have tried a lot (not naming names), but like OmniFocus most/best. The only big problem with OmniFocus is that it does not support Android. If one of these days I find a tool that is as good as OmniFocus and supports Android, I will switch to it.

    Using OmniFocus or any other GTD tool comes with it's own set of challenges. Most of the time the tools feature a tutorial and suggest a way to use it. In the case of OmniFocus and for me this did not really work well. It took me a while to figure out how to make OmniFocus work for me.

    For me it comes down to one very important question: Assuming that you are done doing something, how do you pick the next task? And this is where the rubber hits the road and this is where the tutorials start to fail, because this is really something that you have to figure out for yourself. The tutorial might suggest that you need to structure it along the lines of projects or locations (at home, in the office) or if you have your laptop or a phone. For me none of this matters.

    I am picking my next task based on urgency and importance. Sounds familiar? So far, so good. As always urgency is easy. Every task got a due date and you just sort the tasks by due date and you will be able to find out what you need get done in the next couple of days. In OmniFocus I am using the Due perspective and that works fine.

    But I also created a second perspective for myself that I call the Do perspective. And that perspective helps me to find tasks that I can do that are not necessarily urgent. I thought about this a lot and for me there are two dimensions/questions that I use to pick something from that list:

    • Do I need somebody to make progress on this task or can I do it on my own?
    • How long will this take?
    So let's say, later in the day and I suddenly have 10m, 30m, 60m or more than 60m to do something and I am done with my urgent list. I then go to my Do list/perspective which is sorted by how long a task will take and find the tasks fit into the time that I have. 10m might be a call, 30m might be to followup with somebody on an important project. In the best case I am picking a big/long task which needs a lot of people, because in general these are difficult ones. In the worst case, either because I do not have a lot of time or because nobody is around/awake, I am picking a short task that I can do on my own. But it is very important to favour the longest possible task and if possible one that requires other people, because to find a slot for a short task that you can do on your own is easy.

    To make this work I give every task a duration. I am only using 3 durations: 10m, 30m and 60m (or more). For tasks that I am delegating I am using 100h, because this task has no duration for me. The thing with the 100h is important, so that I can see the tasks that have no duration, which in my case is an indication that something went wrong. If I would use no duration as a valid value, I would not be able to find the tasks that are not configured correctly.

    Finally I am using contexts to express, if I need somebody for a task or not. I have two sub-groups: "Need help from ..." and "Waiting for ...". In "Need help from ..." I have a context call "Nobody" and a long, ever-growing list of people and groups of people that I need to get something done. Means every time I am processing a task in my inbox I decide quickly, if I want/can do this alone/on my own and if so assign it to the "Need help from ... > Nobody" context. Otherwise I pick the person or group I need to make progress with this task. If it is not me who owns the task I am assigning it a person in the "Waiting for ..." sub-group. In that sub-group I only have people, no groups, because when I am delegating something, I am delegating it to a person, not to a group of people. All of the contexts on "Waiting for ..." are configured to be in status "On Hold" and I have a perspective to show me all tasks that I have delegated. Needless to say, when I am delegating a task I set it up in a way so that I do not have to poll for progress, but agree a way of working together so that progress reports and updates are pushed to me.

    Here is how all of this comes together:

    • Most of the time I use the "quick entry" keyboard shortcut or the "Send to OmniFocus" clipping feature to put something into my Inbox. Especially while processing email. More on this later.
    • Once a day I am going through my inbox and give the task a project, a context, a due date and a duration. I do this for every task. This needs to be quick. To make this quick I am using a couple of "short-cuts"/simplifications (features of OmniTi and GTD that I am not using at all or in a different way). This means for instance that I am not thinking about "does this task need a due date or not". I always give it a due date. If it is not urgent the due date might be in 3 month from now. But this way I have squared it away and have clearly expressed that it is not urgent and that is also important.
    • Another short-cut is that I only have a very small amount of projects. Most of the time I am only using two Single-Action projects. One for my personal tasks and one for my business tasks. This makes finding the right project for a task very fast. I am not using OmniFocus for Project Planning or Project Management (for that I am using OmniPlan). I am mainly using OmniFocus for task management.
    • After that I take a look at my Due perspective and my Do perspective and pick the best task for the first time slot that I have.
    One of my urgent, reoccurring tasks is to clean my EMail-Inbox. I normally do this twice a day. Once in the morning and once in the evening. And I normally do it before I process my GTD-Inbox. But just to give you an idea, I normally have 100 emails in my EMail-Inbox and I process it in 10-15 mins and cleaning up my GTD-Inbox normally takes less than 5 mins. I am very strict not do anything while I am processing.

    So last, but not least lets talk about email. Again how you are doing your inbox processing or your Inbox-Zero is very much a question of personal taste. My system has 3 labels or folders: NeedsAction, Keep and Archive. The one thing that is important for me is that moving emails to these folders/labels has a keyboard short-cut associated with it. I am using and it took me a while to figure out how to make this happen, but with Mac OS 10.8 it is possible to assign keys to menu items, means in my case I have Ctrl-J, Ctrl-K, Ctrl-L assigned to "Message > Move to > NeedsAction", "Message > Move to > Keep", "Message > Move to > Archive". With that I am flying through my inbox very fast. NeedsAction includes everything that takes longer than a minute to do. This includes reading a long email or even responding to an email. Sometimes I start to work on an email, but after a minute I start to feel that this will take 10m or maybe even 30m. At that point I stop working on that email and just put it into NeedsAction. In a second pass I am going through the NeedsAction folder and either do it or turn it into a GTD task (including the tasks I want to delegate). I do it this way to make sure that I do not keep tasks in my email. If I am not strict on this, then I start to maintain 2 lists, which makes picking the next best task hard(er).

    Ssssoooo ... that's about it!!! This is how I get things done with GTD. As I said most of it is a question of personal style. My style is maybe more task/action oriented than other people. Maybe other people prefer to think about what needs to get done more in the context of projects, but what have described here works for me. But this might be the most important take away from this post: Create a task to really think about how you are getting things done and what information you need to make good decisions on what task to tackle next. Spending an hour on it and implementing it afterwards, might be a good investment in your future. 

    Last but not least, I would love to hear from you how you use/organise your projects and contexts in OmniFocus or any other tool you are using.

    I am now going to take a look at my Due and Do perspective to pick something that I can do in the next 30 mins, before I have to go to my next meeting.

  • Charting some KPIs ... how hard can it be?

    In the last couple of weeks I was working on an initiative to make all the Gilt Tech KPIs available in one place. There are lots of dashboard solutions available, but nothing really did what we wanted it to do or it was clumsy to use. At the end we decided to build a small Scala Play app to get what we want.

    As part of that exercise we had to find a way to visualise the history of the KPI values (timestamp, value pairs) and I started to play around with charting frameworks and figured it makes sense to write up what I have found out. The list of solutions is kind of arbitrary and is by all-means not aiming to be a complete list of available charting frameworks, but gives you a glimpse of what is out there.

    The source code is available on my Github account. Feel free to clone the repo and play around with it yourself. There are 4 tagged versions available ...

    • v0.1 - Featuring charting based on sfreechart
    • v0.2 - Featuring charting based on highchart
    • v0.3 - Featuring charting based on D3
    • v0.4 - Featuring charting based on chartjs
    After you have cloned the repo you can checkout the version you are interested in and start the server as described in the README. Let's go through them one by one.

    I started with a very simple server based charting solution called SFreeChart. It is Scala wrapper around JFreeChart. I was able to get that up and running very fast, but realised very quickly that it would not give me what I want, because I do not want to manage the files on the server side and the chart is not interactive.

     KPI charted with SFreeChart

    Note: While I was looking into how to manage the files on the server side I found Scala automatic resource management, which is a very nice way to make sure that you always manage/close your resources (e.g. file descriptors, database connections, ...). Recommended. Take a look at it.

    At Gilt we are using Gatling to do our load and performance testing. The Gatling charts are very nice and are based on Highcharts, a charting solution from Highsoft. Highcharts is free for non-commercial use. For commercial use, you have to get a license.

    Highcharts is awesome! To get into it you can use the online documentation or you can read the book. The API online documentation is very well done. It has lots of examples and links to jsFiddle and lets you experiment with the framework. The book is very well structured and is a must read, if you want to get serious about Highcharts.

    KPI charted with HighChart

    The one thing that made me keep on looking was the license fee for commercial use.

    Next I looked at D3 (Data-Driven Documents). D3 is not really a charting framework. It is much bigger, much more powerful. It allows you to visualise data in any way imaginable. It is unbelievable what you can do with D3!!! But ... the flexibility comes at a price. For me the best way to look at it is the way Git is structured: If Highcharts is the porcelain of charting then D3 is the pluming. D3 is raw. There is nothing you cannot do, but you have to do it (lots of pixel pushing).

    KPI charted with D3

    At the end I was looking for a client-side, license-free, easy-to-use charting framework and stumbled of the new kid on the blog: Chart.js. Chart.js is new and I was able to make it work in half an hour. For now it seems to fit the bill.

    KPI charted with Chart.js

    As I said this is by no means an all-inclusive review of all available charting solutions. All discussed solutions and approaches have their merits. It comes down to your requirements to decide what is the right one for you.
  • About broken windows and software gardening ... - Thoughts from The Pragmatic Programmer

    These days I am writing more source code again (mostly Scala) and decided to (re)read a couple of books to refresh some thoughts and ideas and believes that I always had when it comes to writing source code.

    One of the books I was (re)reading was Clean Code and there are lots of good ideas in it, e.g. after reading the book 15 years ago I got into the habit of refactoring, whenever I feel the urge to put a comment in the code, which is an indication that the code is not clear/self-documenting enough. The only comments I am writing these days are comments on why the code is doing what it is doing, not what it is doing (that should be apparent from the code itself).

    Anyway ...

    While I was reading Clean Code one of the Gilt engineers in Dublin recommended to also take a look at the Pragmatic Programmer and I just finished it two weeks ago. The book is more compact than Clean Code. If you have the time, read both. If not, just read the Pragmatic Programmer.

    Two thoughts/pictures resonated with me ...

    Broken Windows is about fighting Software Entropy and puts a nice picture/story around the concept that you should always check-in the code a little bit cleaner than you found it. Be clean and if you find a broken window (that somebody else broke), fix it! That behavior can be omnipresent in your life. I live in Ireland and do a lot of hill-walking and the rule is whatever you carry up the hill, you will also carry down, but you can take that a step further and pick up cans and bottles that you find on the hill (my habit to pick up litter wherever I find it drives my wife nuts) and leave the hill cleaner than you found it.

    Software Gardening puts our ambitions to construct software into perspective. If you construct something (e.g. a bridge) it is kind of static. The idea is that software engineering is more like gardening and less like construction. The software system has a life on its own. It grows. Initially you have an idea how the garden should look like and put the flowers and the bushes and the trees into place, but then over time you need to make sure you also spend some time on pruning and refactoring to keep the garden in shape, because it has a life on its own.

    Here is a picture of me looking through a window into my garden.

    Hi Ugo, thanks for the pointer ...

  • Sometimes small things make a big difference ... using Source Code Pro with Emacs

    <outing alarm>I love my emacs.</outing alarm>

    Sometimes small things can make a big difference. Like a dot. You can put it at the end of the sentence or in a number (1.001 vs. 100.1 - can make a "small" difference) or you put it into the zero to make it easily distinguishable from capital O.

    Now you might say, who cares, but if you read a lot of source code (like I do) Source Code Pro is a real pleasure for your eyes. Give it a try. Highly recommended.

    PS: Source Code Pro works with all kinds of IDEs, not only Emacs.

  • Teaching Scala @ TCD ... back to the roots

    20 years ago I used to teach object-oriented programming (based on Eiffel) at my old university in Germany.

    This week I got the chance to experience a deja-vu, because earlier this year I did run into Glenn Strong who is teaching Functional Programming in TCD in Dublin and we started to develop the idea that it would be useful to add a Scala module to his Haskell based lecture.

    The main idea was that the module could complement the lecture by exposing the students to a second functional programming language and at the same time highlight why at the current point in time Scala is the programming language of choice when large corporations decide to adopt a more functional programming paradigm (Gilt being one of them).

    In that context the module focused mainly on how well Scala co-exists with Java. The two real-world scenarios that got implemented in the lab exercises was to rewrite a piece of Java in Scala and to integrate Scala with existing Java source code. Feel free to clone the repo and play with it yourself. My stuff is in the roland.tritsch folder.
  • A starting point for ... Apache Felix, OSGi, Scala, Sbt

    It is not a secret ...

    I like OSGi and Scala ... and therefore it was only a question of time until I started to wonder, if there is anything that would prevent me from using OSGi from/with Scala. The short answer and the good news is ... nothing.

    I just checked in my port of the original Apache Felix Tutorial to Scala. As mentioned in the README I do not want to claim that this boilerplate code, but it is a working development environment that you can use as a starting point for your own experiments.
  • Machine Learning at Gilt - "Maven-izing" a/the Apache Mahout tutorial

    If you work for Gilt Tech than you WILL (sooner or later ... somehow) get involved in our Machine Learning and Recommendation efforts. Our requirements are extremely complex and challenging. We have over 5 million members (fast growing) and a product catalog which features products that are selling out between 10 secs and 3 days, means we need to make recommendations for products that have (almost) no history to members that might not be with us for a long time (yet). In that context we are constantly investing in making our personalized EMails and also the content of the WebSite more relevant to the member who is looking at it.

    If you do/get this right, it is Mass-Customization (the art of cost-effectivly build instances of one (store)) at its best ...

    “If I have 3 million customers on the Web, I should have 3 million stores on the Web.” – Jeff Bezos, CEO of

    The difference between Amazon and Gilt is that Amazon got a "lot" of time to build these stores (hours, days, ...) . In our case we almost need to build these stores on the fly (seconds, minutes, ...). This requires new thinking, new approaches, new algorithms, ... it requires innovation. Got ideas? Let's talk!

    Anyway ...

    In that context I started to play with Apache Mahout and found this good (old) tutorial (still top of the list when you Google "Apache Mahout Tutorial") from Grant and decided to "maven-ize" it. Just install git and run ...

    > git clone git://

    ... and then install maven and follow the instructions in the README. Enjoy!

  • Dublin Innovation Festival - Talking about Innovation, Gilt and Ireland ... and Evolution and Darwinism

    A couple of weeks ago I had the chance to talk about three things I care about: Innovation, Gilt and Ireland. The occasion was the Dublin Chamber of Commerce Smart Series Event on Innovation (that was the day after Dundrum Shopping Center and half of Dublin got flooded). The objective was to share a couple of thoughts on what innovation is (or is not), what Gilt is doing to foster innovation and what Ireland has to offer to companies like Gilt.

    To start ... Innovation is probably on all our minds. If you get it right as an individual or as a company or as a country, you create a differentiator for yourself. Everybody wants to be innovative. The main point of the talk was to point out the similarities between innovation and evolution.

    There are lots of definitions available, but one way to think about innovation is in terms of the hard and the brain. The hard tells us that innovation is this wonderful thing that happens in the shower or in my case on the bike on the way up to Sally Gap, when you have this moment of brilliance for the next best, bigger business idea that will actually change the world. And then we look at individuals like Steve Jobs, who are obviously either showering a lot or who know the way up to Sally Gap like the back of their hands, because it seems they innovate everyday and we start to wonder what is wrong with us.

    The short answer is actually: nothing. Nothing, because in my opinion it does not work this way. Even in the case of the iPod you could argue that the real innovation was the Sony Walkman and the iPod was a refinement on the original idea.

    The more rational definition behind innovation is that innovation is not a thing or an event that "happens". It is the result of a process. I am personally a big fan of evolution and Darwinism. There is only so much you can plan and/or foresee. For the rest you have to try (a lot) and see what works.

    That sounds easy, but it isn't, because it is counterintuitive. You have to embrace mutation and selection. You first have to create a "creative" environment that produces a lot of (hopefully) good, new ideas and then you have to filter them and needs to happen early, because being innovative does not mean to be just creative. It means to be successful and that means it is not about creating a lot of good, new ideas, it is also about finding the ones that make a difference for your business and for your customers and if your are lucky for your industry.

    Not to a small extend it is this “bi-polar” nature of innovation that makes it difficult for us to implement innovation. Just think about it: On one hand you ask people to mutate (means to come up with a lot of good, new ideas) and to be passionate about these ideas and then you need to have strong selection in place to kill most of them. If you do it wrong it will frustrate people, because they might get the impression that nobody is listening and innovation will just stop to happen.

    In a lot cases we fail to get good innovation because we either mutate too much and do not select enough or the other way around. Good innovative environments show both characteristics: A lot of mutation and strong selection. Innovation is the evolution of ideas. It is Darwinism of ideas. It is the survival of the fittest idea.

    To create such an environment and to maybe avoid the frustration mentioned above, you should reward people equally for coming up with an idea and also for giving up on an idea. Failure must become an option and maybe even something that you should or could celebrate.

    Let's talk about Gilt. Gilt is innovative. Let me talk about two examples that will illustrate how innovation based on strong selective pressure (means a well-defined niche that you need to adapt to) and/or strong mutation (means a good idea) can look like.

    The first example I want to talk about is inventory management. Normal retail business models allow you to do inventory management based on thresholds, means as soon as your inventory goes beyond a certain threshold you reorder. When you reorder has something to do with your lead times and also with the quality of your inventory management, means you actually do not care, if there is a little bit more or little bit less in stock, as long as you never run out of stock.

    The Gilt business model requires a totally different approach. Because in most cases we are selling excess stock, 80% of all products we have ever sold we have sold only once, means we never really can reorder and that means we are in the business of selling down to the very last unit. Always!!! And we need to do that while we maintain highest possible availability and scalability. To deliver on these business requirements we had to question conventional wisdom and build a very innovative inventory management runtime platform, based on highly available and highly scalable NoSQL databases that actually relax some of the transactional ACID properties, but still allows us to sell down to the very last unit. And we succeeded. That’s an example for innovation out of necessity to adapt to a niche.

    The second example for an innovation at Gilt is the 360 degree "look-around" Jetsetter iPad app. The application allows you to take a 360 degree view of a room and explore literally every ankle of it. This is an example for a strong mutation.

    Gilt is still a very young company, means we are still learning how to institutionalize innovation in the company, but so far I believe that the 3 pillars of innovation in Gilt are people, process and culture. You need people that are creative and intelligent. You need a process that is open and transparent. And you need a culture that equally celebrates success and failure.

    In that context we are experimenting with "Unstructured Time" where we bring people together without an agenda. We also believe that a lot of good ideas will not come from us, but from outside the company and in that context we are currently building a public API that we will expose to partners and other interested parties, so that they can innovate independently from us. Earlier this year we did a hackathon and had the entire SW development organization on the hunt for the next better idea and also prove it (within 24 hours). Our color search feature (which allows you to take a picture of a color and search for similar products) and the public API were actually incubated in the hackthon. We are also doing a lot of A/B testing to measure the "goodness" of our ideas. This allows us to rationalize the conversation about the value of certain ideas.

    But there is always more to do. Right now, we are thinking about a "follow-the-sun" hackathon were global teams will implement something over a period of three days, because we are suspicious that some good ideas, will get conceived, when people from different cultural backgrounds work together, means it is not only about creativity and intelligence, but also about heterogeneity.

    Let me wrap up, by exploring that thought more. It is my believe that culturally diverse, culturally heterogeneous environments are more likely to be innovative than homogeneous environments. If you also believe in the value of heterogeneity than there is good news, because the Irish software engineering population is among the most heterogeneous and diverse in Europe, maybe even in the world, means Ireland allows you to build teams that will look at problems and possible solutions in different/unique ways. They all went to different schools and had different experiences before they came to Ireland. This creates an environment for innovation to happen.

    Ireland is the only English speaking country in the Eurozone. This makes it easy for talent to relocate to Ireland and to work here. Building an innovation hub will probably to a certain extend rely on our ability to take advantage of the talent in the rest of Europe and to use the heterogeneity and diversity that comes with it as a driver to build creative, innovative teams here in Ireland.

    Gilt is very excited to be in Ireland. We are looking to use our presence here to build a stronger, more scalable, even more innovative Gilt Technologie Organisation.
  • (Small) change to my social networking ...

    First of all ... apologies!!! In the last 2 weeks my (private) tweeds (almost) completely died away. I was just madly busy with work :(.

    Going forward, I will (continue to) send my "diary" updates to @rolandtritsch, but will send my more work related tweeds (e.g. Blogging about ..., Reading about ..., Looking at ...) to @innolocity. @innolocity is a public feed. Just register here to follow.
  • Cloud Computing - A practical guide for the common user

    These days (and especially after the Amazon EC2 outage :)) everybody is talking about cloud computing. It seems you cannot be sexy, if you do not "live" in the cloud. But most of the more "common" users (and for the sake of the discussion, I am including myself in that group) probably think that cloud computing and using "the cloud" is something that enterprises use to (potentially) safe cost and also to (potentially) gain flexibility.

    The first observation is that there is a fair amount of confusion about what cloud computing is. The reason is that everybody is latching on to the buzz and is using the word cloud to make the product or the service at hand look more trendy.

    To bring order to the chaos you could probably say that there are three categories of cloud computing solutions:
    • Data Clouds - Give access to a large amount of disk space and allow the disk space to be shared between a (potentially) large number of users (e.g. DropBox)
    • Computing Clouds - Give access to large amount of computing (CPU) and hardware power in general (including main memory, disk space and in most cases a/the operating system) to run whatever application you want to run (e.g. Amazon EC2)
    • Services/Application Clouds - Give access to ready-to-run/ready-to-use services/application to solve a specific problem (e.g. Google Mail (running a mail server for you), GitHub (running a source code repository for you), (running a CRM for you))
    So question becomes, why is this important or relevant to a/the common (means non-enterprise) user? For me personally I get two benefits out of it: I use "cloud computing" as a (you could call it) "poor-mans backup solution" and also as an "information sharing/syncing solution". Specifically I am using ...
    • Google Mail/Calendar - to "host/store" all my email folders, contacts and my personal calendar
    • DropBox - to store all my files (including picture and music libraries)
    • GitHub - to store all my source code
    Syncing the data is kind of automatic and there is always an offline version of the data available, which gives me very good protection against disk failures (but on top of that I am also running a TimeMachine backup (better safe than sorry :))), means in case of a disk failure, I can install an IMAP email client, a DropBox client and Git on a new piece of hardware and I am up and running again in no time.

    The second value is information sharing. By now I have 3 devices (laptop, tablet, phone) and need to share/sync data between the devices and my wife got a laptop and a phone too and I also need to share/sync information with her (especially my source code :)). Having the data/information available in "the cloud" makes that syncing/sharing exercise straight forward (will publish a blog post on how to share/sync music using DropBox in due course).

    Buttom line: "Cloud computing" is not only for enterprises :).
  • Adventure 2.0 - Building the Gilt Software Development Center in Dublin

    A couple of weeks ago I got a call from the Gilt Groupe in NYC and they asked, if I would be interested in joining Gilt Groupe to build a software development center in Dublin. I went to NY and met some of the brightest engineers in the industry and was totally blown away by the enthusiasm and the commitment to build and run the best e-commerce shopping experience on the web.

    And here I am today sitting in a room with the Irish Finance Minister Michael Noonan announcing that Gilt is establishing its International HQ and a software development center in Dublin. And I can't tell you how exited I am about being part of that adventure.

    Gilt is the number one flash sales site in the US. Within 3 years they went from 0 to more than USD 400M in revenue. Flash sales is outlet shopping over the internet and allows large designer brands to get the best possible deal on their excess stock. And it is frantic. Gilt has close to 5M members and sends 3M emails every day (within 15 mins) to notify its members about upcoming sales events. The next day at noon(est) the sale goes live and it is first-come first-served on all kinds of goods from a wide variety of designer brands. The discounts are from 20 to (sometimes) over 70 percent.

    That presents a "small" technical challenge, because at noon within seconds the traffic on the website goes from decent to 5000 pages/sec. At peak time the site processes over USD 1M in revenue within 30 mins (every day). And it serves 99.7% of all pages, fully dynamic and personalized, within 100 ms at all times. And it cannot go down, meaning scalability, performance and availability are at the top of the requirements list. Fortunately Gilt employs only the brightest and the best.

    Let me know, if you are interest to join us. I am hiring.
  • Maven, Flex/Air and Android - Trinity or Bermuda Triangle

    Partially for professional reasons, partially out of plain, naked, old-fashioned curiosity (and also triggered by the Adobe announcement that Adobe Air now runs on Android) I am currently looking to find out how to use Maven to build a Flex/Air application for the Android phone.

    And ... it is not this easy. I am now working on this for a couple of weeks (elapse time that is - CPU time probably more 16 hours).

    There is documentation available how to develop Flex/Air apps for Android using Flash Builder 4 (and other Adobe tools like Adobe Flash Professional CS5), but as soon as you want to use your own IDE (in my case AquaEmacs and Maven), things get difficult.

    The components that you need to make work together and that have dependencies are ...
    • The Maven release - I started with 2.2.1, but found out that I need to use flex-mojo 4.0-SNAPSHOT and this requires 3.0.1
    • The flex-mojo release - I started with 3.7.1, but need to use Air 2.5, which is only packaged with Flex SDK 4.5, which requires flex-mojo 4.0-SNAPSHOT (have not tried, if it also works with 4.0-beta-3)
    • The Flex SDK release - I started with 4.1, but found out that this release is not packaged to support Air 2.5, means I need to use Flex SDK 4.5
    • The Air SDK release - I started with 1.5, but need to use 2.5, because this is the one that runs on Android
    ... means the winning configuration is ...
    • Maven 3.0.1
    • Flex-mojo 4.0-SNAPSHOT
    • Flex SDK 4.5.0 (build 17689) (this includes Air SDK 2.5)
    The only thing you need to install is Maven 3.0.1 (the rest will be downloaded as part of the build process).

    Now the hard work starts and it is mainly hard work, because if you do something wrong the build process will just display a stack trace that points to a NullPointer exception, but that is maybe the price for doing leading (bleeding) edge stuff.

    The next step is to get a project that works. You can get this by checking out the Maven/Flex 4.1/Air 1.5 sample from ...

    svn co SimpleAir

    ... and edit the pom.xml to look like this ...

    <?xml version="1.0" encoding="UTF-8"?>

    Copyright 2008 Marvin Herman Froeder Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language
    governing permissions and limitations under the License.

    <project xmlns="" xmlns:xsi="" xsi:schemaLocation="">






    <!-- Air SDK dependencies -->

    Please also edit .../air/pom.xml and replace %{flexmojos.version} with ${flexmojos.version}.

    Now comes the big trick ... please edit .../air/src/main/resources/descriptor.xml and to look like this ...

    <?xml version="1.0" encoding="utf-8" standalone="no"?>

    Copyright 2008 Marvin Herman Froeder
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at


    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

    <application xmlns="">

    <!-- Adobe AIR Application Descriptor File Template.

    Specifies parameters for identifying, installing, and launching AIR applications.
    See for complete documentation.

    xmlns - The Adobe AIR namespace:
    The last segment of the namespace specifies the version
    of the AIR runtime required for this application to run.

    minimumPatchLevel - The minimum patch level of the AIR runtime required to run
    the application. Optional.

    <!-- The application identifier string, unique to this application. Required. -->

    <!-- Used as the filename for the application. Required. -->

    <!-- The name that is displayed in the AIR application installer. Optional. -->

    <!-- An application version designator (such as "v1", "2.5", or "Alpha 1"). Required. -->
    <!-- <version>v1</version> -->

    <!-- Description, displayed in the AIR application installer. Optional. -->
    <!-- <description></description> -->

    <!-- Copyright information. Optional -->
    <!-- <copyright></copyright> -->

    <!-- Settings for the application's initial window. Required. -->
    <!-- The main SWF or HTML file of the application. Required. -->
    <!-- Note: In Flex Builder, the SWF reference is set automatically. -->

    <!-- The title of the main window. Optional. -->
    <!-- <title></title> -->

    <!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
    <!-- <systemChrome></systemChrome> -->

    <!-- Whether the window is transparent. Only applicable when systemChrome is false. Optional. Default false. -->
    <!-- <transparent></transparent> -->

    <!-- Whether the window is initially visible. Optional. Default false. -->
    <!-- <visible></visible> -->

    <!-- Whether the user can minimize the window. Optional. Default true. -->
    <!-- <minimizable></minimizable> -->

    <!-- Whether the user can maximize the window. Optional. Default true. -->
    <!-- <maximizable></maximizable> -->

    <!-- Whether the user can resize the window. Optional. Default true. -->
    <!-- <resizable></resizable> -->

    <!-- The window's initial width. Optional. -->
    <!-- <width></width> -->

    <!-- The window's initial height. Optional. -->
    <!-- <height></height> -->

    <!-- The window's initial x position. Optional. -->
    <!-- <x></x> -->

    <!-- The window's initial y position. Optional. -->
    <!-- <y></y> -->

    <!-- The window's minimum size, specified as a width/height pair, such as "400 200". Optional. -->
    <!-- <minSize></minSize> -->

    <!-- The window's initial maximum size, specified as a width/height pair, such as "1600 1200". Optional. -->
    <!-- <maxSize></maxSize> -->

    <!-- The subpath of the standard default installation location to use. Optional. -->
    <!-- <installFolder></installFolder> -->

    <!-- The subpath of the Windows Start/Programs menu to use. Optional. -->
    <!-- <programMenuFolder></programMenuFolder> -->

    <!-- The icon the system uses for the application. For at least one resolution,
    specify the path to a PNG file included in the AIR package. Optional. -->
    <!-- <icon>
    </icon> -->

    <!-- Whether the application handles the update when a user double-clicks an update version
    of the AIR file (true), or the default AIR application installer handles the update (false).
    Optional. Default false. -->
    <!-- <customUpdateUI></customUpdateUI> -->

    <!-- Whether the application can be launched when the user clicks a link in a web browser.
    Optional. Default false. -->
    <!-- <allowBrowserInvocation></allowBrowserInvocation> -->

    <!-- Listing of file types for which the application can register. Optional. -->
    <!-- <fileTypes> -->

    <!-- Defines one file type. Optional. -->
    <!-- <fileType> -->

    <!-- The name that the system displays for the registered file type. Required. -->
    <!-- <name></name> -->

    <!-- The extension to register. Required. -->
    <!-- <extension></extension> -->

    <!-- The description of the file type. Optional. -->
    <!-- <description></description> -->

    <!-- The MIME type. Optional. -->
    <!-- <contentType></contentType> -->

    <!-- The icon to display for the file type. Optional. -->
    <!-- <icon>
    </icon> -->

    <!-- </fileType> -->
    <!-- </fileTypes> -->

    ... and you are (almost) done.

    Last put not least, you need to make sure Maven is correctly configured to find the right components and the right plugins. My ${HOME}/.m2/settings.xml looks like this ...

    <?xml version="1.0" encoding="UTF-8"?>
    <name>Maven Default Repo</name>
    <name>Maven Search Repo</name>


    Finally change directory to the base directory of the checkout and run ...

    > mvn clean install

    After 5 mins of downloads you should be done building your first Maven, Flex 4.5, Air 2.5 app.

    The next step is to build and install an Android apk package, but I am still working to make this work. Stay tuned.

  • AquaEmacs and JDEE and Method Completion - Cannot find JDK's tools jar file (or equivalent). Type M-x describe-function [RET] jde-get-jdk-dir for more

    Hhhmmm ... nerd alert: If you do not like AquaEmacs, JDEE and Method Completion ... don't read this :).

    Otherwise ... good news: Not sure, if you have stumbled over this, but if you try to make your method completion work you might get an error message along the lines of ...

    Cannot find JDK's tools jar file (or equivalent). Type M-x describe-function [RET] jde-get-jdk-dir for more info.

    ... when you hit C-c C-v . to complete a method name. The problem is that the beanshell cannot find tools.jar (or more specifically classes.jar (on MacOS)).

    In my case my jde-get-jdk-dir returns ...


    ... but if you look the error message up in ...

    ~/Library/Application Support/Aquamacs Emacs/jdee-

    ... you will see that on the darwin platform (MacOS) it tries to find the classes.jar file (which contains the tools stuff on darwin) in Classes/classes.jar, but the correct location is ../Classes/classes.jar, means to make it work you have to change jde-get-tools-jar() in jde.el to ...

    (defun jde-get-tools-jar ()
    "Gets the correct tools.jar or equivalent. Signals an
    error if it cannot find the jar."
    (let ((tools
    (if (eq system-type 'darwin)
    (if (file-exists-p tools)
    (error (concat "Cannot find JDK's tools jar file (or equivalent)."
    "Type M-x describe-function [RET] jde-get-jdk-dir for more info.")))))

    ... and then byte-compile it (just go to the Emacs-Lisp menu and select "Byte-compile this File"). Last but not least, you need to restart AquaEmacs and you are done.

    OK. I admit it ... this is nerdy :).
  • Cinema Screening in Aid of Haiti - Watching "The Commitments" (for a good cause)

    Sometimes it is possible to combine something that is fun with something that is useful.

    I am happy to present such an opportunity, since my colleague Susan O'Hara is organizing a charity event in the Sugar Club on Lower Leeson Street to watch "The Commitments" on Wednesday, 15 September 2010 at 7pm.

    The cost is EUR 15,- pp. The feeling to have some fun and do something good is priceless.

    For all inquires, please feel free to contact Susan directly. Hope to see you there :).
  • Autonomy, Mastery, Purpose - ... or ... how to unleash creativity.

    This is going to be a short blog post. A Facebook post by Brian Kelly made me revisit the stuff that Dan Pink did and is doing.

    The main idea behind Drive (RSA, TED) is that Autonomy, Mastery and Purpose unleash the creative power of individuals and teams, not material/monetary incentives. Opensource and Wikipedia and ... are obviously the classic/legendary examples for this FACT (and yes, it is a fact :)).

    Check it out. It is an Idea Worth Spreading :).
  • Managing complexity with OSGi - In bundles and between bundles

    Right now the Brandvis SelectPortal system is based on Microsoft .NET and we constantly improve it and add features. While we do this we also constantly refactor the system to eliminate complexity to make it easier to maintain/extend.

    Triggered by this work and triggered by a talk on reuse of OSGi bundles that I attended a couple of years ago, I started to think about complexity again. The main conclusion of that thought process is that there is probably an optimal (means minimal) complexity for any given system.

    To get to that optimal level of complexity you constantly refactor the system (because there is no chance in hell that you will get it right the first time around by thinking about it and then implementing it) and change the granularity/size of your reusable software artifacts (classes, bundles, services).

    Getting the granularity/size (and the responsibilities) of a reusable software artifact right, is probably the holy-grail of software engineering and there is no easy answer, because if you cut it too small and build the system from a lot of very simple, small software artifacts the complexity and dependencies and relationships between the artifacts get out of hand. Going the other way you can try to reduce the complexity of the system, by building it from larger software artifacts, but then these artifacts itself will become more complex.

    That means that in any case you need to build your system on a software platform that allows you to iterate on getting the granularity of the software artifacts right. I believe OSGi is such a platform.
  • International Conference on Mass Customization and Personalization in Central Europe (MCP-CE 2010)

    Good news :). My talk on ...

    About the importance of templates and platforms for "managed customization" in the garment industry

    The garment industry is not only looking for a solution to address the increasing demand for customized product solutions for end-customers. As with other industries the solution/approach must take a more hollistic view to also cater for a wider variety of legal (certification) and manufacturing (small batches, short leadtime) requirements ("managed customization").

    The proposed paper will suggest a software-based approach and will discuss the experience with respect to the relevance of templates and platforms for the given solution.

    ... was accepted. The conference will happen on Sep., 22nd-24th 2010 in Novi Sad, Serbia.

    CU there :).
  • Bierdeckel Economics vs. Armchair Economics - ... and what it got to do with Greece and Ireland

    As most of you know, I am married to a greek woman and life in Ireland. Therefore the current economic crisis is omnipresent in my life.

    A couple of weeks ago Chris Horn posted an interesting article about certain economical key indicators and what they mean for Ireland. I also saw a good article in the NYT about why and how the US and Ireland and Greece are different (from a financial crises/debt point of view).

    Now I can't resist anymore: I have to write up my own "Bierdeckel" assessment of where we are (in Germany we say, that if you can't explain it by writing it up on the back of a beermat its not any good. The beermat thing became famous 5 years ago when Friedrich Merz suggested that you should be able to do your Tax Return on the back of a beermat).

    The main purpose of the exercise is to come to my own conclusions on, how deep the sh... is we are in and to summarize it in a way that will allow us to grab the essence of the problem on a page. Here we go ...

    To start I have to say that I do not share the obsession with the "Budget Deficit as percentage of GDP" as being the biggest problem of all. I agree it is a good early warning indicator that there is (maybe) something about to go wrong, but a budget deficit of more than 3% (the Maastrich-Criteria) is no reason to panic. Just think about it: Because the impact and significants of borrowing a certain amount of money (or increasing your debt) clearly depends on your ability to pay it back (your income), it obviously does not make sense to express budget deficits as absolut numbers, because a budget deficit of EUR 1000M might be a problem for a small country (with less (tax) income), but not problem for a bigger country. Therefore expressing the budget deficit as percentage of GDP (Gross Domestic Product) make sense (Warning: currently some people try to confuse the situation by expressing key indicators as percentages of GNP (Gross National Product). That does not make sense and is dangerous, because the numbers might look better, but the problem is not smaller).

    My point is now, that a budget deficit of >3% (e.g. 12% for Greece, Ireland, ...) is not a problem. Just imagine you have a debt free country and in (one) given year you need to borrow some money to get things back to normal and to make some investments and then you pay it back over a period of 10 years. I don't think that this is a problem.

    The problem is, what happens if you keep on doing this. Then (over the years) you will accumulate dept and this is a key indicator that is much more interesting. Again it probably does not make sense to look at absolute numbers and it is probably much more telling to look at debt as percentage of GDP. Here are a couple of examples (2009) ...
    • Zimbabwe - 303%
    • Japan - 192%
    • Italy - 115%
    • Greece - 108%
    • France - 79%
    • Germany - 77%
    • UK - 68%
    • Ireland - 63%
    • USA - 53%
    • China - 18%
    • Equatorial Guinea - 2%
    From that list you can clearly see that Japan, Italy and Greece are in trouble.

    The reason why this is a problem is interest. Obviously if you borrow money you need to pay it back, but you also need to pay interest on it (sorry, I am obviously teaching cranny how to suck eggs here, but when I see what some politicians do, I start to wonder). And you need to pay this interest from your income (the taxes your citizens pay). If you now accumulate to much debt and/or your credit rating goes down, your interest payments go up and that can become a real problem, because at the end they might eat up a huge amount of your income, leaving you with very little to spend on infrastructure (and other investment) projects. Therefore the next better metric is to look at interest payments as percentage of GDP. Unfortunately I was not able to find any current data, but here are some examples from 2004 (estimated) , which will give us some indication ...
    • France - 2.8%
    • Germany - 3.3%
    • Greece - 5.1% (questionable, this was probably higher)
    • Ireland - 0%
    • Italy - 5.4%
    • UK - 1.8%
    • USA - 2.0%
    Update: Just found better more current/accurate data, which confirms the trend. Here we go (estimations for 2011) ...
    • Germany - 2.9%
    • Ireland - 4.0%
    • Greece - 6.1%
    • France - 3.0%
    • Italy - 5.1%
    • USA - 3.2%
    In the case of Greece it means that in 2009 they had to spend more than 10% of the annual budget to service debt. This is a huge iron ball around the leg to carry around.

    Ireland is different. Ireland got a fighting chance, because Ireland has much less accumulated debt, but the time to act is now. Ireland can spend some money this year, but needs to go back to a budget deficit below 3% within 2 years. And the money spend this year must create sustainable growth.
  • This blog has moved

    This blog is now located at
    You will be automatically redirected in 30 seconds, or you may click here.

    For feed subscribers, please update your feed subscriptions to
  • Greek Vacation - Food for thought

    It is happening again :). I am in Greece ... on vacation. My wife has this unbelievable ability to find wonderful places for us to explore and experience the best of Greece. The (non-complete) list of breaks encompasses ...
    Right now I am in the middle of nowhere in a place called Epohes and again ... I am loving it. These trips are and the nature around me, put me into a very good, peaceful, thoughful frame of mind. Will send pictures later this week.

    Also assuming that the (deep) thinking will result in one (or two) blog entries :).
  • Link of the Month - The best Zoom feature ever

    The frontend for many mass-customization, product-configurators is based on Adobe Flash/Flex, but as we all know, a fool with a tool is still a ... and therefore there are lots of examples out there where the design and implementation of the UI leaves "room for improvement".

    At the same there are also examples of very clever and thought-through UI design/implementation. One example in this category is the website for the movie "Creation". I really like the way they implemented the Zoom feature (and the moving bug :)).

    Check it out.

  • Mass-customization delivered - Back to the roots ...

    20 years ago I started my career as a Technical Project Manager/Lead Architect for EDS and was working on Bill-of-Material solutions for the Automotive Industry (e.g. Opel).

    During my self-declared summer-sabbatical, I was musing over what I want to do next and felt that (if possible) I would like to work again in a business domain and (if possible) maybe (again) in manufacturing.

    I am happy to report that it worked out just fine!

    A couple of month ago I was approached by Brandvis Ltd and they were looking for a Chief Architect with manufacturing background to help them with the implementation of their next-generation mass-customization platform. For the time being the platform is targeted at the garment industry (or to be precise at high-visible, high-performance, technical workwear or Personal Protective Equipment (PPE)). The Brandvis Software Solution allows you to customize these garments and (if necessary) certify the garments (in real-time) against the relevant standards.

    The software that is behind the solution needs to be tightly integrated with underlying Bill-of-Material information and also with the Supply-Chain that is driving the manufacturing process. What we (Brandvis) have right now is a good start, but lots remains to be done. I am really looking forward to the adventure of building this.

    Ultimately/Potentially the Brandvis Solution might evolve into a general-purpose solution to deliver on the promises of the holy-grail of manufacturing: the implementation of a general-purpose mass-customization solution.

    Mass-customization is a very interesting and exciting concept and you can expect that I will start to talk about it more on this blog.
  • Effective Android - Using Apache CXF to access SOAP services

    A year ago I developed a small set of demos to show how to access SOAP services from the iPhone. To do this I used a very interesting feature of Apache CXF: The ability to generate a complete JavaScript client-side SOAP-stack on the fly.

    I just finished an update/upgrade of this demo to show that it also works with the Android Phone. I also ported it to maven, means installing, building and running the demo is much easier now. The source code and the maven build environment is available on GitHub.

    Enjoy :).
  • Social Networking - Updating your status: all or nothing?

    Yesterday I was stumbling over a Facebook status update from Oisin Hurley ...

    Oisin Hurley is starting to get a bit irritated with people that unselectively duplicate their twitter stream to their Facebook status. They're different interactions, people.

    This is an interesting observation and creates a bigger question: where do we go with this social-networking, micro-blogging, status-update thingy?

    Initially it was easy: there was just/only twitter and this was the place to do micro-blogging and status-updates, but by now all social-networking sites (Facebook, Linked-In, XING, Plaxo, Bebo, ...) have a similar feature. On top of that all major IM platforms (AIM, MSN, Skype, ...) by now also feature a status-update feature, means as a user you are between a rock and a hard place: you either update them all at once (and "over-communicate") or you update them separately (and spend a lot of time on it).

    In my case my social networks are not segmented by type/kind or friend, means it is not that all my personal friends are on Facebook and my business friends are on Twitter. The segmentation is more on the tools side. Some of my friends use Facebook (only), some use Twitter (only) and some use both. Looking at it from this point of view I want to send my micro-blog entries/status updates to both or even all of of my social-networking sites (this is what Barack Obama is doing :)).

    Another way to look at it is maybe a segmentation by content type, means there are probably different kind of messages: more private/personal mood-messages/updates (Roland is happy. Just started a rocket with Alexandros.) , more professional micro-blog entries (Roland is working to make Lightsabre run on Android), more factual statements (e.g. a location) (Roland is in Dublin), ... and so on. Question is ... do these content types somehow map themselves to different sites/tools? I am not really sure about this, because currently people do not pick their social networking sites/tools on purpose or by brand (e.g. Facebook is the social-network for friends and Twitter is the social-network for news, professional live and marketing), means one content type might be interesting for half the people on my Facebook network and half the people on my Twitter network.

    That kind of leads me to a (suggested) conclusion: the solution is not to send certain updates only to one site or the other. The solution is to create groups of people in every network and have tools which allow you to send certain messages to these groups on your networks.

    Any other thoughts? Suggestions?

  • Effective Mac - Using TimeMachine Part II or Why Restore was greyed out?

    It happened again!!! Another HD crash. A year ago I lost my original 160GB drive and replaced it with a 250GB drive. Now this one failed only 12 month later. I am not sure what is happening here, but I do not feel that I "mishandle" my MacBook in a way that would explain this rate of failure. Let me know, what your experience is. Are MacBooks DiskEaters?

    Anyway ... in any case I had a chance to see, if my new backup strategy is better than my old one. You might remember (or not :)) that last year I found out that you have to use TimeMachine the "right way", if you want to have a pleasant restore experience.

    This time around I booted from the Installation CD, went to Utilities and selected "Restore System from Backup ...". Imagine my surprise when I was confronted with a selection of snapshots until 2 month ago (and I was sure that the last backup was from Sep., 03rd), but I figured "Hey, better *something* from mid of May than nothing and maybe I can restore more files using the TimeMachine application after the initial restore" and of we go ...

    6 hours later my system is restored and I start the TimeMachine application and surprise (again :)) I can see all me backups until Sep., 03rd, but all backups between mid of May and Sep., 03rd are greyed out (including the Restore button). Weird and frustrating. What the hell did I do to make all of these backups "un-restoreable"?

    After an hour of investigation I found the problem: Mid of may I renamed the disk in the MacBook from "Macintosh HD" to "Roland's HD". Trivial, simple change, nothing to think about, nothing to worry about and TimeMachine continues to back up as normal, but will create a new backup set with the new volume name.

    What is not really immediately obvious is that you can restore from various backup sets, when you run "Restore System from Backup ...". After you have selected the disk to restore from, there is a drop-down box at the top of the screen, that will allow you to select a backup set (in case you have more than one on the disk) and the next screen will then display all snapshots in that set, means the solution to my problem was to select the "Roland's HD" set and voila ... suddenly the snapshots between mid of May and Sep., 03rd are displayed.

    After another 6 hours I was in pretty good shape and I now like TimeMachine even more than before.

    BTW, ... if you are in Dublin and need help with your Mac I recommend the guys from the MacShop at Merrion Square. Good, competent, fast. This is how it should be.
  • ACCU 2009 - Slides are available

    A couple of weeks ago I attended ACCU 2009 to deliver a talk on "RESTful Services and Distributed OSGi - Friends or Foes" and "AJAX for Mobile Devices - Using Apache Projects to get the job done". The conference was very well organized (thanks Giovanni) and took place in the beautiful city of Oxford. The format (keynote presentations and smaller breakout sessions) allowed for a good mix of thought-provoking presentations and good discussions. The audience was made up from very-experienced software-engineers and no-BS project-mangers.

    My most favorite presentation/keynote was delivered by Linda Rising (The Benefits of Abstraction in Patterns). She talked about the potential of patterns going beyond the ability to put structure into the domain of software engineering.

    I am looking forward to learn about the agenda for next year.
  • Street Performance World Championship - a non-technical blog post

    Sorry - this is a non-technical blog post. If you are not interested in having a good time, stop reading now. Otherwise ...

    I am on the LUAS on the way home from the Street Performance World Championship in Dublin.

    All of the performances are good/funny, but my personal favorite are Alakazam and Mr. Toons.

    Go and check it out. It is worth-while the time.

  • Smart Energy - let's bring Smart Meters, Smart Grid, Micro Grid and the software behind it together

    A year ago I had a couple of pints with Dan Salt (Chief Software Architect at GE Energy) and we discussed the current state of affairs with respect to IT and Software Architectures/Solutions in the Energy/Utility sector. As a result I started to develop an interest in Smart Meter (just watch the first 5 min), Smart Grid, Micro Grid and Grid 2.0 concepts/solutions.

    Here is a summary of the problems as I see them ...
    • we need to become more intelligent about how to consume energy
    • we need to become more intelligent about how to produce energy
    • and we need to become more intelligent about how to distribute/store energy
    The main focus of this blog entry is on the first bullet point, but I also quickly want to talk about the second and third bullet. Becoming more intelligent about producing, distributing and storing energy and that means first of all becoming more intelligent about producing, distributing and storing renewable energy (wind, water, solar, ...). Micro Grids might be an interesting approach to consider in this area, but this means that the IT infrastructure must be able to deal with lots small independent energy "providers" (maybe even down to the household level). There are ideas how to implement something like this, but nothing ready for prime time yet. Storing energy to deal with the peaks is another dimension of the problem that needs to be consider, but a combination of old and new (e.g. V2G - Vehicle to Grid) approaches might be suitable to provide some relief here.

    Let's come back to the main topic: How to become more intelligent about consuming (less) energy (in the first place).

    Three years ago I was driving in a cab from Zuerich Airport to a customer meeting. The cab was a Toyota Prius. It was my first time in a Prius. In general I work in a cab (email, phone, SMS, whatever, ...), but this time I was totally fascinated by a/the display in the middle of the dashboard. The display showed how the Prius was producing and consuming energy with its fuel-/electro- engines and -dynamos (in (soft-/near-) real-time). Brilliant!!! You get into a traffic jam and the natural play-/compete-with-your-car instinct kicks in and you try to move the car through the traffic jam, just by using the electro-engine (just by being gentle on the accelerator). And even without a traffic jam you are tempted to constantly compete with the car to make optimal usage of the available energy. The question is not anymore how fast you get from A to B. The question becomes "can I get from A to B using less than a gallon (less than 4 liters) of fuel". The display creates a totally new sense of awareness about what is going on and with that it starts to change behavior. The guys behind the Prius are geniuses. Adding the display makes the difference between a good and a great car, because with the display the Prius is not only a good car it is also changing societies, by changing awareness levels and behaviors.

    What can we learn from this? Easy ... it is not good enough to optimize the way you consume energy, you also need to provide direct feedback to the consumer on how he/she is doing and must give the consumer tools/ways to influence the amount of energy that gets consumed. Basically you need to empower the consumer!!! You need to share the responsibility between those who produce the energy (to produce energy with the lowest environmental impact possible at the lowest possible cost) and those who consume the energy (to consume as less as possible).

    The bad news is that in general right now households/consumers of energy (gas, oil, electricity, ...) are not aware of what, when, how (much) they consume. They get a bill (every month or every quarter) and have no insight into why they consumed this amount of energy and what to do/change to maybe reduce the energy consumption. The (immediate) feedback is missing. The display is missing.

    But there is also good news. We can fix this. Originally Smart Meters concepts and technologies got introduced to allow the utility companies to read your meter without sending somebody to your house (a clear benefit for them; not so much for you :)). In the meantime smart meters have evolved. They can and will fix the "remote reading" problem, but they also allow you (the consumer) to get immediate feedback on your energy consumption.

    But it might be a couple of years until smart meters get installed in (all of) the households (the only country in Europe, which is almost done with this is Italy). What do you do in the meantime? One option is to use a wireless energy monitor. The good news is these devices are available, do not cost a lot and are easy to install. The bad news is they are very limited with respect to their capabilities and connectivity.

    What I am looking for is a smart meter or an energy monitor that is connected to my (W)LAN and is able to dump/collect the data to a hard-disk of my choice (laptop or special purpose appliance). I then want to be able to display the data in real-time on a display of my choice (TV, computer screen, mobile phone, ...).

    To my knowledge such a device/appliance does not exist today.

    Now things get even more tricky. How can I find out if my energy consumption is good or good enough (read near the optimum)? And how can I analyze/break down my energy consumption to identify potential culprits?

    At the end we could upload the (location-aware) data to a data-warehouse and run analytics on it that would allow us to calculate the average per person per household in a certain area and provide feedback to the best/worst five energy consumers in the area. If you consume much more energy than you neighbors (per person) you might want to find out what the hell is going on (Google is working on something like this).

    Bottom line: To change the behavior we need to visualize the problem (i.e. how much energy (electricity, gas, oil, ... you consume). It will take 5-10 years to bring smart meters to the majority of households in the developed world. In the meantime energy monitors can/should be used to give immediate feedback to you (the consumer), but currently these devices are very limited in terms of what they can monitor (most of them can only monitor electricity), capability (storing historic data) and connectivity (make the data available to a/the community for analysis).

    Hhhhhhmmmmm ... any ideas??? Otherwise it seems I need to get my soldering gun out.
  • Reading books - Steve Jobs, Raising Boys and The Complete Robot

    A month ago I decided to use some of my time during the summer and work my way through the pile of books that I always wanted to read and never really got to. The first four weeks proofed to be interesting, very interesting.

    I started with "ICon: The Greatest Second Act in the History of Business". It is obviously a biography about Steve Jobs, but it is also a good book on the history of Apple, the Silicon Valley, Next, Disney and Pixar. It is an unauthorized biography and is (sometimes very) critical of Steve Jobs and how he got to where he is today.

    "Raising boys" was the next one and is a must read for Mums and Dads. Some of the stuff is common sense, but some chapters give a good insight into what the hell is going on sometimes and why.

    Currently I am reading "Isaac Asimov's - The Complete Robot" a collection of short stories about robots and how they will (potentially) become part of our society. One story talks about a boy who prefers his robot-dog over a real one. Just wondering how many children prefer their gameboy over a (real) dog. Good food for thought.
  • TEDx Dublin - Reviewing a very nice friday evening

    Last friday (means already almost a week ago) I had the chance to attend the first TEDx event in Dublin at the Science Gallery. To make a long story short ... it was a GREAT event. Great people, great presentations, great location. If you ever get the chance to attend a TEDx event or maybe even to attend a TED conference ... DO IT!!!

    Just in case you have never heard about TED I suggest you check out the website. There are hundreds of thought-provoking videos and presentations available. TED stands for Technology, Entertainment and Design. TED conferences are held every two years and provide a platform for Ideas Worth Spreading. And my god, some of these ideas are worth spreading indeed.

    Here are a couple of presentations I found interesting ...
    ... and there are lots more.

    Back to the event in Dublin ... we had about 200 people in the room (packed) and the event was very well organized and moderated by Aaron Quigley.

    The presenters talked about ...
    ... and all of the presentations featured live demos of the research results (very impressive). There are good blog posts and pictures about the event available.

    My personal favorite was Mark's presentation on AR. Can't wait for the Mac version of BuildAR to become available.
  • FUSEforge Lightsaber/Lightsabre - Research on Asynchronous Distributed OSGi (for Jedi's :))

    The Distributed OSGi spec (RFC 119) is coming along nicely, means now might be a good time to raise the head and start to think about what might come next. A couple of month ago David, Roman and myself got together and concluded to set up a research project on the alternatives available to potentially extend the Distributed OSGi spec with some asynchronous messaging concepts/capabilities.

    The research is still ongoing, but the intermediate results (including a first demo!!!) are now available on FUSEforge (Project Lightsabre).

    The demo will also be presented at OSGi DevCon Europe. Maybe (another) reason to attend. Enjoy and stay tuned.
  • Skills, Innovation and the future of Ireland - Bermuda Triangle or Trinity

    Ireland (like any other country in the world right now) needs to reinvent itself. The Celtic Tiger (1.0) is over. Question is: What's next? Do we want a Celtic Tiger 2.0? If so, how should it look like? And how do we make it happen?

    Chris Horn has published a couple of interesting blog entries and articles on the topic.

    For me the key is skills and innovation. Skill comes in two flavors: expertise and experience. The Celtic Tiger 1.0 was based on expertise. At the time Ireland was building a very well educated workforce (Trinity College, UCD, University of Limerick, ... ) and was also enjoying (or creating) other (monetary) benefits (like low corporate taxes, low wages, lots of EU aids, ...).

    These times are clearly over and Ireland has to find a new (the next) niche to compete in the global economy. My hope and my belief is that Ireland can reinvent itself around a different set of skills, namely the experience the workforce has gained in the last 10 years. Right now is the (a good) time to reinvent Ireland as a place, where small startups can flourish and succeed: A European (Software) Business Incubator.

    Lets make it happen.
  • Effective Android - Getting Started Guide for the Android Dev Phone 1

    This week I spend a day to get my new Android Phone up and running.

    At the end I figured it might make sense to write up a cookbook on what to do when you finally get your hands on the box and unwrap your new toy. Here we go ...

    The (ultimate :)) Android Getting Started Guide (for Mac Users :))

    First things first: This guide assumes that you got yourself an Android Dev Phone 1. It will not work for the T-Mobile G1.

    Obviously the first thing you want to do is to open the box, put the battery into the phone and charge it (for at least 3 hours). The phone comes with an US power-supply and an USB-cable, means in Europe you either need to have an adapter or you need to charge the phone with the USB-cable (I charged it with the cable).

    The phone comes with the Android 1.0 firmware pre-installed, but the current version is 1.5 and is much better (yes, believe me - it is better). Therefore while charging the phone you might want to download a couple of files:

    • the Android SDK 1.5 - you need this for the tools
    • the Android 1.5 firmware (download and - this is what you want to install on the phone (make sure to configure your browser (e.g. Safari) NOT to unzip the files after download - you need the zip files).
    After the phone was charged I put my SIM-card into the phone and followed the instructions on the Start Here! Setup Guide that comes with the phone and went through the setup process. As part of this process you have to login to your Google Account (no comment :)). That also means that you need to have a GPRS connection and that means that your SIM card needs to have a data plan and that your APN must be configured to work with the phone (if this sounds like a little bit of a hassle - it is!!!).

    After everything is up and running you might want to replace the very small 1GB microSD-Card with something bigger (you need to do this sooner or later anyway). I recommend at least an 8GB card. Just follow the instructions in the Setup Guide (and do not forget to unmount before you take the card out of the slot).

    The next step is to install the SDK. Just unzip the file to a/the location of you choice (in my case /opt) and add the .../tools directory to your path (e.g. in the ~/.bashrc file).

    Plug the phone into one of the USB-ports, start a shell and type ...

    ~\> adb devices
    List of devices attached
    HT93MLZ00125 device

    ... to verify that you can see the phone. You then need to follow the instructions from the HTC-website to upgrade the firmware to 1.5. A couple of observations ...

    • the firmware updater is always looking for a file called in the root of the SD-card, means while copying/pushing the file to the device you need to rename it to
    • to switch on logging you have to type ALT-l(og) not ALT-i (hard to read or I need new glasses :))
    • "5. Use the adb sync command to copy the contents of the radio image package to the archive on the device's SD card:$ adb push .zip /sdcard/" ... should probably read ... "5. Use the adb sync command to copy the contents of the recovery image package to the archive on the device's SD card:$ adb push .zip /sdcard/" (looks like an honest copy-and-paste bug :))
    Afterwards you probably want to find a WLAN-Hotspot to speed up the rest of the configuration/setup process. But be aware ... my WLAN-Router was using channel 13 and initially the phone is configured to use only 11 channels, means my phone did not find my hotspot. To fix this you need to go to Settings > Wireless Controls > Wi-Fi Settings and press the Menu button, select Advance > Regulatory domain and tell the phone to use (all) 14 channels (took me *only* an hour to find this one :)).

    The next step is to sync/upload you contacts to your Google Account and sync the contacts and the calendar. The sync is only working, if you have an iPod or an iPhone. Otherwise your best option is to upload your contacts.

    Configuring the email client to work with your POP3 and/or IMAP mail accounts is straight forward.

    Last but not least you want to install a couple more programs. Here is my hit-list ...
    • Twitteroid - a must have (obviously :))
    • Pixelpipe - very good (offline) (micro-) blogging client
    • Chess - the only game you need
    • GPS Status 2 - cool GUI
    • Hi AIM - one way to do IM
    • Skype (Beta) - was not able to make it work (yet)
    • NewsRob - RSS client to read your Goggle Reader Account
    • Par 3 Golf - ok, the "other" game you need
    • Glympse - to keep people in the loop on your whereabouts
    To put some structure into the application space I created folders on my home screen and moved the apps into the appropriate folders (e.g Games, Tools, ...). BTW ... if you want to change the name of a folder you have to open it and put your finger on the title bar until the change-the-name dialog opens.

    Finally you want to sync you iTunes Playlists and Podcasts with the phone. First you need to install software and then you need to mount the SD-card to the laptop. You can do this by pulling down the status/notification bar on the home screen and push the "USB connected" notification.

    All of this took me (on and off) 8 hours. Next step is to set up a/the development environment. Sounds like another 8 hours of good fun lie ahead of me :).
  • Effective Andriod - a new category

    Last year I introduced categories like "Link of the Month" and "Effective Mac" to my bloging". Heads up ... there is a new category coming: Effective Android will talk about my adventures with my new Android phone.

  • Need a new phone - iPhone vs. Blackberry vs. Android

    Last year I went hill-walking with Andrew and Adrian in Kerry. By now everybody knows the story: I drowned my iPhone in Adrian's backpack. The backpack was 100% water-proof, means it did not let any water out and at the end of a 4 1/2 hour (irish) survival tour with heavy, "horizontal" rain the iPhone did not pass the "can-your-iPhone-also-work-under-water" test.

    I decided to look at it as an opportunity. An opportunity to also "test" one of the last mobile devices I never had before: A Blackberry (Curve).

    Unfortunately I have to admit it never really worked for me. The Blackberry is a good mobile email reader, but that's it. The iPhone is a mobile computing platform, that will also allow you to read your email, if you wish to do so. In the last 12 month I really missed my beloved iPhone :(.

    Fortunately two weeks ago live-changing events opened up the opportunity for me to look at getting a new phone for myself. The first step was to look at my requirements:

    • Needs to be a mobile computing platform (not just a phone and an email reader).
    • Needs to allow me to write applications for it. If possible in JAVA. If possible using an OSGi container.
    • Needs to work in multiple countries (e.g. Germany, Ireland, Greece, ...) without killing me on the voice- and data-roaming charges. Means, if possible it should not be SIM-locked.
    • Needs to be affordable (both in terms of buying it and using it)
    The list of options turned out to be kind of small. I first looked at the iPhone, but was not to happy with the plans and the prices that I can get for the iPhone (if you look for an iPhone without a SIM-lock it gets even worse). And the iPhone has no JVM (and will probably never have/get one).

    I then looked at the Blackberry (Bold and Storm), but was not able to convince myself that these devices are the right platform for my software engineering ambitions in the next couple of weeks.

    At the end I stumbled over an interesting alternative. The Android Platform! Exactly what I was looking for from a technical point of view (e.g. ability to run JAVA), but how about the rest of my requirements? It turns out that there is an Android Dev Phone that you can order (USD 399,- + VAT, one per developer), when you register yourself as an Android Developer (and the phone is SIM- and hardware-unlocked :)). Happy days!!!

    My new toy will arrive in the next couple of days. Stay tuned. Will send out an update as soon as I am able to deploy the first bundles :).
  • Effective Mac - Make the Mac listen ...

    This morning I was using my new JawBone Bluetooth headset to make a Skype call. The quality was bad and therefore I decided to switch to my headset. The result was better, but still not what I was looking for. At the end I took the time to really understand, where the sound is coming from and to my big surprise I found out that the line-in jack is not working with normal headsets.

    On the Mac you need a mic (or a headset) with "power" (e.g. a USB mic or a pre-amp mic).

    Conclusion: I have stored away my headset and will use the built-in speaker/built-in mic to make calls. In case I need privacy I will just plug in my iPhone earbuds. That sounds like a/the winning configuration. But that also means that I do not have a solution for environments with a lot of background noise. Maybe I need to go back and need to find out why the quality with the JawBone was bad in the first place.
  • Orchestrating the orchestration - EIP vs. BPEL vs. BPML

    Occasionally (and in any case not often enough) I am having diner or lunch (or any another excuse) to meet my dear friend Klaus Grieger. He is a Principal Architect with CIMT AG. Klaus is what I would call a "deep thinker". Discussions with him are in between interesting, challenging, invigorating and exhausting :).

    The topic of the Christmas Lunch (we had the choice between "The best Worscht in Town" (Worscht is Hessian Slang for sausage) and "Positive Eating" and we did the right thing) was his observation that there is good news and bad news when it comes to the topic of (services) orchestration: the (from my point of view) good news is that more and more companies start to use orchestration concepts to introduce a cleaner separation of concern to their (service-oriented) architectures. The bad news is that a lot of customers seem to be confused what orchestration is (e.g. "orchestration is BEPL") and how to use/implement it.

    Before we start we should probably introduce a couple of standards, abbreviations and concepts:

    *EIP - Enterprise Integration Patterns - A set of design patterns to design, build and deploy messaging solutions for distributed systems. Based on the book by Gregor Hophe and Bobby Woolf.
    *DSL - Domain Specific Language - A DSL is a programming language dedicated to a specific problem domain. There are solutions available to describe EIPs with DSLs.
    *(WS-)BPEL - Business Process Execution Language - A language to describe the orchestration of (web-)services.
    *BPML - Business Process Modeling Language - A superset of BPEL. More suitable to describe workflows.
    *BPMN - Business Process Management Notation - BPEL does not define a/the way to describe the business processes in a graphical way. This is addressed by BPMN. You can generate BPEL from BPMN.

    There are also a couple of good discussions available on orchestration vs. cheography.

    My suggestion is to structure the discussion by introducing different levels of orchestration:

    *Component-Level/Microflow Orchestration - within a service
    *Services-Level/Business-Process Orchestration - between services, but no interactions with humans and no long-running processes/transactions
    *Workflows - between services, including interactions with humans (e.g. approvals, etc.)

    The big question is, if BPEL is the silver bullet for all of these and the answer for me is clearly no. Using BPEL to do component-level orchestration is clearly overkill. EIPs (using a java-based DSL) are much better suited to get this job done. BPEL has also its limitations when it comes to the description of workflows. Using BPML to implement/describe your workflows might be a better choice.

    But BPEL is clearly the language of choice when it comes to the orchestration of services in a SOA. At the same time, even this decision should not be taken lightly. One of the cited main advantages of using BPEL (and the tools that need to come with it) is the ability to design, change and maintain business processes in a graphical way (including the claim that this can be done by your business domain experts). My question is: do you really need this? How often do your business processes or more specifically the orchestration of the processes change? Once a week? Once a month? Once a year? If it is the later, you might want to reconsider the decision to introduce BPEL (and all of the overhead that comes with it) to your project/company, since it might be easier to just write two pages of JAVA code and you are done.   

    Executive Summary: I can recommend to have lunch in the Cha Cha. Good fresh food. Not to heavy. On the topic of orchestration I recommend a practical approach: start buttom up. Use DSL-based EIP as much as possible, before you use BEPL-based services-orchestration and/or BPML-based workflows.
  • Commercial Open Source for Apache Projects - Survival of the fittest

    Just found another company offering commercial support for Apache ServiceMix and Apache ActiveMQ (like we do :)). For me this is good news. It shows that more and more people use Apache integration projects in mission-critical deployment scenarios. And that these deployments generate enough value for customers to warrant an "insurance" against worst-case scenarios. 

    For me it was never the goal to be the only company to offer consulting, training and support for Apache integration projects. My goal was (and will always be) to provide the "best" (read most valuable) consulting, training and support offerings you can get for these projects.

    Luckily Progress shares this ambition. This year we will increase the revenue we generate with FUSE (and the budget that comes with it) by roughly 200%. 

    Statements like this ...

    "With the recent announcement of Progress Software acquiring Iona Technologies, Freedom OSS believes that professional support for Servicemix ESB and Active MQ will be dropped from IONA/Fuse."

    ... can safely be considered FUD.
  • Effective Mac - Sleeping on the plane

    About a year ago, I "borrowed" the battery from Christina's MacBook to extend my "life", while I am on the plane. The Mac (being the Mac) has a nice feature, which will hibernate the machine when the battery gets low. This allows you to change the battery without rebooting.

    I was looking for a way to hibernate the machine on demand. This is also useful if you want to conserve battery power (e.g. while one a plane). The sleep mode is a drain on the battery, because the RAM needs to be kept alive/refreshed. This is especially a problem, if you have a lot of RAM.

    Found the following applescript. Seems useful.
  • Effective Mac - Using OpenOffice, NeoOffice and/or iWorks08

    Finally! OpenOffice is now available for the Mac. In the last two month I used OpenOffice 3.0, NeoOffice 2.2.5 and iWorks08 in parallel (with a special focus on the presentation functionality).

    The result is surprising (and maybe not :)). If you use the "native" formats (e.g. ODF, .key/.page) everything works fine. Obviously things get more interesting, if you want to use these tools to read and write MS-Office files (.ppt/.doc/.xls) or even MS-Office 2007 files (.pptx, etc.).

    In this case it is my experience that you (still) have to limit yourself to a (non-obvious) subset of the functionality to make sure you can import/export your files to/from MS-Office. Especially for Powerpoint 2007 files I currently have to use all three tools and see, which tool will give me the best result, when I import .pptx files. In some cases entire slides show up blank. In other cases they are "reformated" in a way that makes them unreadable.

    Buttom line: It seems that for the time being, neither OpenOffice nor NeoOffice is a solution on its own, when it comes to importing/exporting to/from MS-Office. But that may change in the future.

  • Conference Update - Apache Con, Java Days and ACCU

    It seems over Christmas a lot of people did what I did: Clean up the Todos, catch up on EMail and get ready for 2009. As a side effect my colleagues and I (the Open Source Center of Competence in Progress) got notifications from various conference committees that our speaking proposals got accepted.

    * Andreas and Adrian will talk/present at ApacheCon 2009 in Amsterdam (NL)
    * David will talk/present at the Italian JavaDays 2009 in Rome (IT)
    * And myself will talk/present at ACCU 2009 in Oxford (UK)

    Don't miss the chance to drop us a line or just corner us to catch up on the state of affairs with respect to Open Source, Integration, Mobile Computing, Live, Universe and everything else.
  • Link of the Month - TwitterFeed

    In the last two month I have put some work into my online presence (website, blog, twitter, linked-in, ...). Obviously I try to minimize the maintenance effort for me, but maximize the user experience for the "customers" of my online presence (I am talking about you, dear reader :)). 

    One great tool in this regard is TwitterFeed. It allows you to create "feeds", which will "listen" on RSS feeds and will then turn them into tweets. An obvious use case is to create a "listener" on your own block and make sure your followers learn when you publish a new blog entry.

    A more sophisticated, integrated (and wwwwaaaayyyyy cooler) use case is to use NetNewsWire to read your RSS feeds/news/articles and use the integration with to bookmark what you read. You then go to TwitterFeed and create a listener on the RSS feed on your account and voila: everytime  you are reading something and bookmark it with a tweet gets generated. Very elegant. I like it.

    I also added a "My" widget to my blog (on the right hand side), which means that my reading list will also get updated automatically.

    Check it out. Let me know, if there are more better ways to integrate your online presence.

  • Apache CXF vs. Axis 2 - The current state of affairs or The missing book

    (Blogging from the plane again. This time on my way to the Progress
    Sales Kickoff in Miami.)

    The other day I stumbled over a good presentation
    from Falko Riemenschneider. The high-level summary is ...

    * Axis 2 is not as easy to use as CXF, but is more ubiquitous in the
    marketplace (and got better documentation, including a book in german)
    * CXF is a very well developed piece of software, but needs more
    people using it (and needs more/better documentation, including a book
    in any language, but preferably in english)

    I need to think about this book thing. Anybody interested to write a
    book about CXF in English?

    <Couldn't keep my mouth shut>
    I am volunteering myself to translate it into German.
    </Couldn't keep my mouth shut>

  • FUSE on the german autobahn - listing to a CAOS podcast

    For private reasons I had/have to spend some time in Germany these days. The house of my parents is about 45 mins away from the office, means I get to listen to some podcasts while I am doing 160 miles/hour on the german autobahn. One of my favorite podcasts is the CAOS Theory podcast from the 451 Group.

    Yesterday I was listening to one that discussed the current state of affairs with respect to the Open Source Middleware space. One of the conclusions was that FUSE will probably benefit from the Progress acquisition, because Progress made a clear commitment to Open Source and will increase the investment in FUSE.

    Just for the record: These conclusions are correct.
  • FUSE Quickstart - a sneak preview

    Yes, we are busy to add new content to FUSEsource :). First we published a/the first set of FUSE TV videos and next we are going to publish a set of "FUSE Quickstart" screen casts. Take a look at the sneak preview and/or wait for the high-res versions to become available on FUSEsource later on this month.

    Tip/Hint: The best way to get the sneak preview is to subscribe to the podcast and download all videos into iTunes :).
  • Open Source Marketing - and what it got to do with the Michelin brothers

    Open Core Licensing and the business model behind it is not (really) new. When you look at it from a history/marketing point of view there are lots of examples, where money is/was made with a "handle-blade" model.

    From a marketing point of view the most famous example is probably Gillette. They give away the handles and make a lot of money with the blades. This works because they have a very strong brand and because they "own" the interface between the handle and the blade.

    Open Core Licensing uses some aspects of this idea. It gives way the core (handle) and wants to make money with add-ons (blades), but there are also a couple of very significant differences.

    First, the handle in the Open Core Licensing model has a value on its own. You can use it to shave yourself. It is working. Out of the box. No blade needed.

    Second, Open Source customers would probably never accept a handle, with a proprietary  "PlugIn-API", which would force you to buy your blades from "a/the" company that owns that interface.

    Means the blade-handle picture is going to get us only so far.

    But there are other pictures we might want to take a look at that do not need a "proprietary" interface. In 1850 two brothers were running a rubber factory in Clermont-Ferrand. They were called Eduard and Andre Michelin. The business was not going well, because producing rubber was getting commoditized, resulting in lots of competition and low margins. But then they had a good idea and a brilliant idea. First they realized that making rubber is not good enough anymore, but that they knew a lot about rubber and they figured that they could become their own customers and build something out of rubber. But what? This is where genius struck the first time: They realized that cars and bicycles would benefit from rubber tyres. The beauty of it is that you sell a blade (tyre) on a handle (car) that will wear-off when you use it. And this is were genius struck a second time. Eduard and Andre concluded that they have to find a way to make people drive and what better reason there is for driving than food or even better good food. As result they decided to put together and publish a guide on (good) restaurants and give away this guide for free (at least initially). What a brilliant idea!

    Again Open Core Licensing uses some aspects of this idea, but not all of them. The main point is that Michelin did not own the interface, means they expected that sooner or later more people will be able to copy-cat their idea and produce tyres. As a result they focuses much more on making the car a success and making people drive, betting on the fact that they had an (first-mover) advantage in the resulting tyre market, because they were the first ones in the market and that they could make more money being "a" player in large market, rather than being "the" (only) player in a small market. To map this to Open Core Licensing we maybe have to think up-side down, means the integration market is the car and we have valuable add-ons (tyres) for this market, that people occasionally buy. How about creating a guide/solution for good integration, that will make people integrate systems? And give it away for free and benefit from the resulting (larger) integration market?

    Again this picture is only going to get us so far, but it can at the same time give interesting insights into the dynamics of open source business models.
  • Open Core Licensing - moving from "bait-and-switch" to "suggest-and-complement"

    The Open Core Licensing discussion is really refreshing! Lots of good ideas and lots of good energy. Obviously the "earlier" versions of the model were more oriented towards a "bait-and-switch" approach (get a good stack for free, but then if you want to do real/serious enterprise computing, you have to to buy the real thing :)). Right now the models have evolved into more mature "suggest-and-complement" models (aka. Open Core Licensing). And I am using the word "mature", because talking about it (the desire the make money with open source) like this, should be the norm and not the exception.

    Yes, I am working for Progress (the software company, not the vacuum cleaners :)) and we have an Open Core Licensing Strategy (looking into the "Open Source is not a Business Model" report it is debatable, if Progress (formerly known as IONA) may also fall into the open-closed category) and I am proud of it.

    The important part for me is freedom (of choice for customers) and value (for customers). We are suggesting to use our integration-core, -platform, -stack (whatever you want to call it) to do JAVA-based integration and if you are happy with it, we are happy too. We then offer consulting, training and support for it (by the way, our distribution is called FUSE), but the choice is always yours. It is complete and has a value on its own. There are no "hidden features", that will cripple the distribution to create an "artificial" up-sell opportunity.

    There you have it. Great value for money.

    But wait there is more: We already have or will integrate this core with lots of interesting add-ons, which will complement the core and will make the resulting platform even more valuable (e.g. Mainframe integration, C++ integration, .Net integration, data integration, ...). And yes, we are looking for ways to get our fair share of the generated end-customer value. But that should be a win-win. The secret is in the add-ons. They must bring a significant, additional, unique value to the table, that would otherwise be hard to get (e.g. implementing it yourself :)). If the add-ons are structured like this, everybody will be happy to pay money for it/them (given you need them :)).

    And there you have it again. Even more value for money.

    But the biggest value of all is for me that with this model customers stay in control. It is a pay-as-you-go model, means nobody is forced to spend large sums of money upfront to get something done. And this creates good, value-oriented, customer-vendor relationships. 

    I like it. 
  • AMQP for dummies - A guide for managers

    (I start to like this "plane blogging" thing :))

    Adrian blogged about Microsoft embracing AMQP.

    Just from a technical point of view this is good news (assuming it will help the adoption of the Advanced Message Queueing Protocol (AMQP)), because AMQP is a very cool (and extremely well thought through) standard.

    Given that there might be a renewed interest in the standard, let me just try to explain (again) what it is good for: The main benefit of AMQP (besides a couple of very cool features in the standard itself) is that it will (finally and for the first time) allow messaging stacks to interoperate. Today we have lots of good payload formats/protocols (e.g. XML) and even better standard APIs (e.g. JMS), but no standard wire-level protocol to allow one messaging stack talk to another. That means that currently all of your messaging endpoints need to have the same message stack. This creates a huge, hidden vendor lock-in. Yes, your JMS API allows your to replace a JMS provider with another one, but then you need to do it for all endpoints at the same time, because the wire-level protocol is different (and proprietary) for each and every message broker implementation.

    Means right now you can only build homogenous messaging infrastructures. AMQP would allow you to build heterogenous messaging infrastructures, break the vendor lock-in and enjoy the power of choice. AMQP is the HTTP of messaging. I see AMQP as an enabler for

  • Social Networking - rediscovered! or Do we need the Open Social API?

    (Blogging from a plane en-route from DUB to BOS using the email interface of :))

    The other day I updated my website with the details of my new employer and decided to give a second live to my account by using one of the widgets to include my reading list on my blog. I also had to decide, which of my social networks I reference on my site.

    Currently I am using ...

    • Social-Networking: Linked-In, Facebook, Xing, Plaxo
    • Micro-Blogging: Twitter, Facebook, Plaxo
    • Bookmarks:, Facebook
    • IM: AOL, Skype

    ... and there are probably a couple that I forgot/missed. For social-networking I decided to make Facebook, Xing and Plaxo point to my Linked-In presence, for micro-blogging I decided to make Facebook and Plaxo point to my Twitter account, for Bookmarks I will use (because it is nicely integrated with NetNewsWire) and for IM I will use Skype.

    The exercise made me thing about social networking. The power of social networking is to bring people together, but right now there is not one social network, there are probably hundred big ones (including mega-networks like youtube) and thousands of small ones. Each social network documents another shade of your personality/interests: What do you do? What do you like? What do you watch? What do you read? What do you publish (e.g. blogs and pictures)?

    Initially I felt that having multiple implementations for the same shade of social networking was actually counter-productive, because it fragments the communities and increases the maintenance overhead (updating multiple sites with the same information).

    In the meantime I changed my mind. I am a big fan of evolution and darwinism (mutation and selection, survival of the fittest). Therefore I believe for the time being having multiple implementations is actually beneficial, because this way innovative implementations have a chance to put a variation on a shade (e.g. using Facebook to create a private/personal presence and Linked-In to create a professional presence/identity).

    But how do we deal with the fragmentation of the communities/networks and what do we do about maintaining these, at least partially, overlapping networks? Can we eat the cake and have it too?

    Yes, we can. This is where the Open Social API can (and hopefully will) add value. This API will allow us to build meta-social-networks. With this API we will be able to update and maintain all of our social networks with one API and will also be able to learn more about our social networks (e.g. who is on all of my social networks). It is my expectation that this API will create new, innovative social-networking applications, which will turn the diversity of the networks into value.

    A bookmark to a very nice Google Tech Talk about the Open Social API is on my page. Check it out.

  • Link of the Month - FUSE TV

    Great new content. Check out

    4 weeks ago we huddled in our "new" HQ in Bedford for Managment Meetings (and other fun :)). Debbie had the great idea to take advantage of our presence there and record a first set of FUSE TV sessions. Great fun! Check out the result.

    And yes mea culpa, "aaaeeeehhhhhhmmmm" is not a german word. No Oscar for me (this time :)).
  • Link of the Month - FUSE is moving on ...

    ... to As part of the Progress acquisition we decided to change the host/domain name of the FUSE community website from to

    I like the new name better, because what we do here is not about a company (be it IONA or Progress). It is about a project. In our case FUSE.

    The renaming will also allow us to role out more interesting stuff in the near future on a new, consistent family of good host/domain names. Stay tuned :). 
  • The iPhone screen - Is it a problem or a solution?

    Lot's of interesting exciting stuff is going to happen with FUSE over the next couple of month. 

    Especially on the tooling side. The other day I was riding in the car with Oisin Hurley (Head of Tool Development for FUSE) and we discussed the value of having NOT a lot of screen real-estate, because it really makes you think about what the problem is the user wants/needs to solve and how you can guide the user through that process.

    There is a good video-cast available from Apple, which talks about the principles of good UI design for the iPhone. I believe these principles are good principles regardless how much screen real-estate you have. To that extend designing UIs for limited screen real-estate is more a solution than a problem. It creates the right attitude :).

    Other opinions? Thoughts?
  • Complex Event Processing - An exiting (new) frontier

    Through the merger (:)) with Progress, I got exposed to the new exciting field of (Real-Time) Complex Event Processing (CEP). There are a couple of obvious use cases in finance (e.g. algorithmic stock trading) and manufacturing (e.g.  detecting possible problems in the assembly line, which might effect your just-in-time service-level-agreements).

    Complex Event Processing or Intelligent Event Correlation is not what excites me. That was/is also possible using large data-warehouses and suitable data-mining solutions, but then you learn about it after the fact. It is not so much Complex Event Processing, it is more Complex Event Analysis. 

    What excites me is the real-time aspect. The possibility to re-act to a set of correlated events as they happen.

    The longer I think about it the more use-cases I see. Last month a large (if not the largest) utility provider world-wide visited us in Dublin for a 4-day SOA workshop. Among other things, they are looking for a solution to detect failures in the power grid before they happen or narrow down the location of the failure (faulty transformer) after it happens (e.g. to get a repair team onsite faster).

    Last night I found a talk on Google Talks describing a solution for Device-free Passive Localization for Wireless Environments. Another interesting use-case.

    CEP is everywhere. I am dying to find out, what the value of a solution for this kind of problems is.
  • Effective Mac - Using Time Maschine

    On Saturday at 08:00am it happend to me. I move/dragged an email into a folder on my Mac and the machine froze. Diagnosis: Catastrophic harddisk failure. 

    But hey ... look at the bright side: I got to replace my 160GB disk with a bigger 250GB disk and got to test, if my Time Machine backup really works.

    And there is where the problem starts. In an ill-conceived effort to minimize the disk space and the time I need for my backup, I excluded all directories besides my "User" directory. This will allow you to recover single files (and/or mails, photos, etc.), but will make it very hard to recover a machine, since Time Machine (when you run the app) cannot restore all data from a given date.

    The better/only way to do it, is to backup everything (including all apps, system folders, libraries) and just exclude a folder (e.g. the download folder), which has recoverable (fast changing, big, volatile) data in it (e.g. my iTunes Library). Basically reverse my backup strategy. This will create Time Machine backups, which include a snapshot of the entire system (including the operating system).

    These backups can then be used with the migration assistant to restore the machine with the last backup or even better you boot from the install DVD and use the restore from Time Machine utility to restore to a backup of your choice.

    I can tell you, restoring a system file by file is tedious :).

  • Effective Mac - Open Source Mac

    Was looking for an opensource search engine for the Mac and found this interesting website. I am already using half of the apps, but will take a look at the other half too :).
  • Effective Mac - Growl back to work

    Stumbled over James's blog entry about useful software for the Mac and added Growl to my list of software that you need have/use to be effective, but was not able to make it work with X-Chat (AquaChat). Confronted with the option to figure out what is wrong or to try something new, I took the easy way out: I tried Colloquy. This worked out of the box. I know need to find out how to make my Twitter tweeds show up in Growl.
  • Open Source Business Models - Open-Core Licensing

    OH NO, please!!! YABOOSBM!!! Yet another blog entry on open-source business models :).

    Ok, let's make it as short and as sweet as possible :).

    This morning I was reading Matt Aslett's comment on Andrew Lampitt's blog entry on "Open-Core" licensing (which actually contains a link to a good presentation by MySQL chief Marten Mickos).

    What I like about the approach is that it tries to take the emotion out of the discussion. We obviously all know in our head that open-source is about free speech and not free beer, but the heart then still reacts (at least sometimes) disappointed, when companies show that they are not pursuing an open-source strategy for purely philosophical and/or altruistic reasons. In that context some of the hybrid models (e.g. selling closed-source features on top of a open-source core) got a bad reputation and got dismissed as "bait-and-switch" models.

    The value of open-source is NOT in the absence of a desire to make money with it. This is actually healthy and will make sure the approach/model with survive in the long-run.

    For me an interesting value of open-source is that it redefines the customer-vendor relationship. It creates a very open, honest pay-as-you-go relationship. Customers are not forced to give large sums of money to a vendor up-front and trust the vendor that it will do the right things with this money. Open-source is the ultimate customer empowerment tool (within limits as discussed by Matt Asay).

    A very interesting side effect of this is that it allows the CFO to shift money from his capital expense budget to his operational expense budget, which in general makes his business more manageable.

    These are good reasons for open-source. And yes, to keep it alive, we have to find ways to make money with it and share the ROI over the entire delivery/value-chain.

    Shortening the list of open-source business models in Marten's presentation, I right now see the following main models in the market:
    • Open-Core Model - have an open-source core and sell closed-source features on top of it (e.g. SugarCRM)
    • Dual Licensing Model- one product/project that gets licensed with a viral, GPL-style license and a commercial closed-source license (e.g. MySQL)
    • Services Models - where you get to download a productized version of an open-source project and pay a fee for the support you get on it
    All of these (and variations/combinations of these) are good valid models, which can deliver a lot of value to customers.

    It remains to be seen, which one will proof to be the most innovative one.
  • Open Source Innovation - Fact or Fiction

    Is Open Source Innovation an oxymoron? Is Open-source fostering innovation or killing it?

    There are two school of thoughts out there: First, there are lots of people, who say that open-source is not fostering innovation or even killing it, because it is just about the reimplementation of already solved problems and that it actually kills innovation, because it keeps people from implementing solutions that can not be protected from being reimplemented as an open-source solution. Second there are at least as many people, who say that open-source is actually creating/fostering innovation, because a company can not hide behind a bad implementation and will always be forced to look for ways to make its solution better, faster and more affordable.

    Let's first contemplate on the nature of innovation. As previously discussed there is a difference between innovation and creativity: You can ask people to be creative, but you can't really ask them to be innovative, because innovation is something that get's established after the fact, means it get's established by the traction you get with your ideas in a give business context and the impact they have on the business and the market.

    I personally believe that you cannot orchestrate or manage or create innovation. It just happens. It happens in a more darwinistic way: Through diversity/competition/mutation and selection. What you can do is to create an environment, which cherishes diversity/creativity and competition. This will increase the likelyhood that some of your ideas turn into real innovation. In that context you probably want to set up a number of small units to shoot at the same target and want to make them compete for the best implementation. This is why open-source is innovative and/or creates innovation. It is not the a/the project that is innovative. It is the competition between the projects that creates the innovation. One good discussion on this can be found in "Innovation Happens Elsewhere, by Ron Goldman and Richard P. Gabriel".

    One other way to put more structure into the discussion is to segment innovation into ...
    • Business Model Innovation - a new creative way to make money with something (might be closed-source or open-source)
    • Solution Innovation - a new creative way to solve a given (old or new) problem
    • Implementation Innovation - a new creative way to implement a given solution
    Open-source is clearly a good fit to drive implementation innovation. If you do not like a given implementation, you can always take the source code and make it better or even reimplement a given solution (e.g. a customer relationship management solution) or a given standard (e.g. JBI) with a new implementation.

    Question is, if open-source and/or open-source concepts are also suitable to drive solution- and/or business-model-innovation? This leads to the next bigger question: In the past the value of a company was determined by the solutions they own. This is why pharmaceutical companies try to protect their products with patents and other means. I am not sure that will stay this way going forward. Instead we might see a world in which your solutions matter less, but your ability to detect problems and develop solutions will determine the value of your company to a much larger extend.

    In such a world, open-source concepts might actually be very suitable to foster innovation on the solution level.
  • Solid State Disks - Level 5 cache

    Last month I had the pleasure to spend 2 hours in the car with Klaus Grieger. Klaus and myself know each other from ObjectDesign and Versant. Right now he is a partner with CIMT AG in Germany. As always talking to him was invigorating. He is one of the most innovative people I know.

    The topic of the drive was the future of Solid State Disks (SSDs). His thought was/is that with the arrival of in-expensive, fast SSDs we can potentially rethink the way we structure memory and storage in general. Right now, we "load" executables from a "disk" into "main memory". What if, we turn the disk into a level 5 CPU cache, means programs never get loaded and/or started. They get installed into "memory" and will stay there all the time. Instructions get fetched into lower-level CPU caches on as needed basis. This would/could probably work for instructions, but not for data. Means for data you would still needs a disk with a file-system.

    Hhhhmmmmmm, ... can somebody help me to think this through?
  • Embedded Software Engineering - Can we avoid another software crisis

    The term "software crisis" was coined 1968 by F.L. Bauer during the first NATO Software Engineering Conference in Garmisch, Germany and was used by Dijkstra in his very famous lecture on "The humble programmer":

    [The major cause of the software crisis is] that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem.

    Edsger Dijkstra, The Humble Programmer

    Right now there are lots of people who are saying two things: First, embedded devices and embedded software will change and transform our way of life in a similar or even stronger way than the arrival of the internet and second, the resulting software engineering challenges are huge.

    There are a lot of drivers/trends behind this, but two of the more critical ones are the arrival of multi-core processor architectures for embedded devices and the resulting increase in processing power that comes with it (see quote above :)). And secondly the increasing demand to make embedded devices talk to each other (e.g. make Electronic Control Units (ECUs) on the car talk to each other and then make cars talk to each other).

    The lack of abstraction that we have in embedded software engineering makes more than 50% of all embedded software projects being later, over budget or not deliver on expectations.

    This sounds and looks like a first class software (engineering) crisis. What do we do?

    Killing the problem with people (e.g. throw more people at the problem) is a very popular approach, especially with the emergence of cheap off-shore development centers in India and other places, but creates a huge liability, because over time it does not scale very well and the management and maintenance burden has the potential to become an even bigger problem.

    More thoughtful approaches first segment the embedded market from a requirements point of view and then look for much more systematic approaches to address the requirements in the given segment. One way to segment the market would be along the lines of the real-time requirements. Working assumption would be that there is a hard real-time market, a soft real-time market and an embedded market (no real-time requirements, but the software must run on devices with limited CPU and memory capabilities).

    The segment with the strongest growth is the last one. Addressing the software engineering issues in this segment will give us the biggest bang for the buck.

    One way to go about it is to use existing approaches that have (kind of) worked for the first two (real-time) segments and also use them in the embedded space, e.g. using integrated tool-chains to generate a lot of the source code (also known as Model-Driven Software-Development (MDSD)). This gives you good initial results in terms of productivity, but has the potential to create hard to maintain, monolithic, tightly-coupled monster systems.

    The most promising approach right now is to introduce the idea of Software Product Lines (SPLs) to the domain of embedded software engineering and combine it with MDSD. This will give you the productivity gains you are looking for, but will also allow you to enforce a/the necessary level of reuse to ensure the long-term maintainability of the system.

    In that context abstractions become pivotal. Without abstractions there is no way to create good boundaries for reuse. The first level of abstraction is the operating system and here is good news, because more and more embedded systems are based on standard operating systems (e.g. embedded Linux). But the layer above that is still under construction. What is needed is a platform that will allow you to build business-level software components and integrate them on the device and/or even reuse them over device boundaries.

    Interesting efforts in this context are ...
    • OSGi - a component deployment platform for embedded devices for components and services implemented in JAVA
    • The Virtual Function Bus (VFB) in AUTOSAR - a common software infrastructure for automotive systems of all vehicle domains based on standardized interfaces
    • Various embedded software engineering platforms for mobile devices like LiMo, Moblin and Android
    Complementary to these efforts you need a way to distribute/access these components over process or even hardware boundaries. The IONA Professional Services Organization has implemented a solution called Artix/E, that provides a transport-independent, high-performance, component platform for the embedded market.

    Can we avoid the embedded software crisis? Yes, we can! Check it out.
  • Randy Pausch - about elephants, walls, rooms and TVs

    Last week Randy Pausch died. With all the hype around his cancer and "the last lecture", it was/is kind of hard to see who he was or what he was. Yesterday I tried to find out a little bit more and watched his presentation on time management. Good presentation, but not something that we haven't heard before. In the end I have to agree with him: He is a smart professor, but there are lots of smart professors out there. What made him unique was not what he did, but why he did it and how he did it. From what I saw of him, he had a passionate ambition to make learning fun. His students were his customers and he felt an obligation to deliver value to them. He found his purpose and lived it. And this makes him a role model.

    Here are my personal take-aways ...
    • if there is an elephant in the room ... then talk about it!
    • "experience is what you get, when you don't get what you want"
    • walls are there to show you how much you really want something
    • if your children want to paint their room ... let them do it!
    • switch off the godd.... television
    In this blog I am not talking about how he dealt with his cancer, because I believe that this is not something he wants to be remembered for.
  • RESTful Services - Dana Gardner, Adrian Trenaman, Roland Tritsch - wrapping it up

    The Webinar went very well. I think we had over 50 poeple that showed up. The archived webinar and the source code will be available on

    Check it out.
  • Effective Mac - call me slow

    You can call me slow, but it took me only a year to find the RSS reader that everybody else is using. David Greco finally pointed me to NetNewsWire. This seems to be it :).
  • Link of the month - Google Twitter (GTwit)

    Micro-blogging (Twitter, Pounce, Facebook, ...) just go a little bit easier. Check out GTwit. It is a light-weight Google App, that allows you to access your Twitter account from any browser you might have access to. It is based on the Twitter API. It stores all tweets that you send/receive in a private "Google-Cloud" and allows you to search on them by whatever you like (word, person, tag).

    Check it out.
  • The iPhone - and what you can learn from thinking about it

    On Sunday I went to the driving range and while Alexandros was working on my early retirement plan (aka. he making lots of money with golf and I am managing his career), I was reading an article on Businessweek about the new iPhone 3G contracts. The article made me think again.

    It made me think about two presentations that I saw recently: One by Michael Crossey from Aepona at the Mobile Monday in Belfast and the other one by Peter Moeckel from T-Labs (the R&D think-tank of Deutsche Telekom) at the OSGi community event in Berlin. Both are saying the same thing: Mobile Phone Operators are struggling to maintain their value proposition in the food/value chain. More and more applications are totally provider-independent and just use the network as a bit-pipe. Even worse, customers actually have either no or a bad perception of the underlying network operator.

    Lets take a look at the current situation. I have a mobile phone and I am willing to spend EUR 100,-/month for that luxury (e.g. like I am willing to pay a certain amount of money for the luxury to have a dish washer). Right now and in general, there are three parties I am spending this money with:
    • the device/platform provider
    • the network operator
    • (and to a much lesser extend) 3rd party application/service/content providers
    Going to a Vodafone, O2 or T-Mobile shop is actually the wrong way around and is just a desperate attempt by the mobile phone operators to make sure that existing customers stay with them. People do not buy a "contract". They buy a and/or feel loyalty for a device (e.g. the iPhone) or a platform (e.g. Palm OS, Windows Mobile). Means normally you should go to an Apple-, Nokia- or HTC-Store. Most customers have an emotional relationship with the hardware and/or the operating system that runs on it, but not with the network operator (or at least not a positive one).

    When the network operators realized that people do not buy contracts, but hardware, they approached the device manufactures and said "Hey Mr. Device-Manufacturer, give me 1M of your phones, make me a good price and I sell it for you". They then give away the device for a fraction of the prize to make people sign up for their contracts. The result is, that people buy devices and pay for these devices through contracts. Means today most of the money flows through the network operator, but a certain fraction of this money (my EUR 100,-/month) ends up in the pockets of the device manufacturer. Interesting enough, right now I am spending close to nothing on 3rd party (value-add) applications/services.

    In the next 5 years all of this is going to change. The Mobile Phone Operators will get a lot of pressure from customers, politicians and competing technologies (e.g. WiMax) to drop their prices for voice and data services. At the same time the Mobile Phone Operators have created an acceptance in the market to spend a certain amount of money on/with the mobile phone (e.g. in my case EUR 100,-/month). In the end some customers will just to be happy to save money, but others will be willing to spend the saved money on something else.

    The companies who have a good answer for the question, what this something else is, will win. Means the future of the mobile market is not in the network and/or the device. Instead the future is in mobile applications, services, solutions and content. And to enable such a market you need to provide a platform to connect the customers/consumers/users with the application/solution/content-providers. And this is what Apple is doing right now. They (and a lot of other poeple) realized that the future is in applications and content. Means they will create some applications themselves and will also provide a platform (aka. AppStore) to allow others to sell applications and content (against a fee).

    Today I am spending a 100% of my monthly budget, buy paying my mobile phone bill. My prediction is that in 5 years from now this will drop to below 50% and that I will spend the remaining +50% on monthly subscriptions for applications, services and content. Becoming a platform- and/or application/content-provider in such a world will make you a winner.
  • Mobile Payment - what is needed

    in the last 4 weeks, i was talking to sailesh panchal (Enterprise Architect - Payments at Lloyds TSB) and hermann sauer (EDS - Integration Engineering Lead EMEA North/Central) about the future of mobile payment.

    there is clearly a need and a benefit to find a solution, but implementations are not available yet (leaving aside lots of POCs that are out there).

    one obvious driver is the need to find a replacement for cheque payments. cheque payments are expensive and slow, means neither banks nor customers/retailers like them, but they are still a popular means of settling bills in the UK, Ireland and other countries. in the UK the national payments council has just released the national payments plan, which states that one the ambitions is to find a suitable replacement for cheque payments by 2013. a first step into that direction is the Faster Payment Service that got launched in May 2008.

    today (in Ireland) i am using cheques to pay my utility bills and my dentist. in germany i haven't used cheques in a long time. in general i am getting an invoice (e.g. from my doctor) and just pay by electronic funds transfer (EFT). in some cases (e.g. utility bills) i allow direct debit on my account and last but not least for some i have a standing order (e.g. rent). for everything else i am using cash and/or a credit card. i know that this is maybe a simplistic way to look at it, but it allows us to focus on the real nature of a cheque. what can a cheque do, that i cannot do otherwise?
    • a cheque allows me to give money to somebody with no bank account, means i can write a cheque and the person can go the next bank and can get cash for it
    • the payment can be anonymous, means even if the person has a bank account the decision might be not to use any means of EFT
    a good summary what a cheque is all about can be found here. the question for me is, what problem mobile payment solutions will solve. currently i cannot see, how they can possibly address the two capabilities that i described above and everything else makes them just another way to transfer money besides EFT and plastic cards.

    where is the value in mobile payment? what problems will mobile payments solutions solve? replacing cheques (probably no)? competing with ETF and plastic (probably yes, but then the question is what makes mobile payment solutions superior to EFT and plastic)?

    Blogged with the Flock Browser
  • Effective Mac - the beginning of a journey

    yesterday i finally finished my upgrade to Mac OS X 10.5 (Leopard).

    overall it went well. i did an erase and install (as a 20 year windows user i feel much more comfortable with clean installs. maybe next time if will try it the mac-way :)) and also used the exercise to clean up my disk and the way i work. the biggest problem was that leopard does not come with iLife, means you need to find your old tiger CDs and reinstall iLife from there (or buy (!?!?) iLife 08, no comment).

    using a mac is like using any other tool. just using it is not going to give you the maximum ROI. using it effectively is going to make the difference.

    therefore i decided to start a little series of blogs and i am going to call it "Effective Mac".

    this is the first one and i just want to give a summary of tools that i am using on my mac. please feel free to comment and add to this list.
    • mail - looked at a couple of options, but for the time being will stick with using YAI to deal with exchange invitations and will probably checkout MailTags.
    • calendar and contacts - have not looked around and will stick with iCal and AdressBook.
    • todos - did look at the functionality in iCal and did not really like it. did a little bit of research and finally settled for iGTD (get things done).
    • browser - currently using safari and occasionally firefox (especially, if i am in london heathrow airport. the safari browser cannot get me onto the bingo wifi network there). also looked at Flock to get a grip on my social networking (xing, linked-in, pulse, facebook - it is madness).
    • RSS reader - looked at safari (and a couple of other browsers) and the wonderful TimesReader (looks very good. almost like a newspaper), but settled for the new RSS reader in
    • communication - using iChat (AIM), Skype, Aqua X-Chat (IRC) and Twitterific (James also pointed me to GTwit, but i still need to makeup mind, if and how i am going to use it). tried to find a universal "chat" client. stumbled over Fire, but it does not support SSL enabled IRC server (and keeps on crashing on me).
    • programming - still like my emacs :). using Aqua-Emacs, but have also started to use Dashcode for my web developement.
    • brainstorming - using Freemind for my mindmaps and OmniOutliner for structured bullet list type brainstorming.
    let me know, what you think about the toolset. anything missing? anything that could/should be replaced by a better tool?
  • Software Engineering Radio - talking about OSGi, Rest, Opensource, ...

    In the last four weeks a lot of people asked me about this "show" I am listening to on my way to work. It is called Software Engineering Radio and talks about trends and technologies in Software Engineering (OSGi, Rest, Opensource, ...). I was told that one of the next issues will be an interview with Peter Kriens on the current state of affairs with respect to OSGi.

    Check it out. 
  • 2008 OSGi Community Event - talking about trains

    Two weeks ago I attended the OSGi Community Event in Berlin.

    One of the presentations was from Deutsche Bahn about their new Mobile Integration Platform (MIP). It was not only in this presentation that I felt that OSGi has become the ICE of deployment platforms. A 300 km/h high-speed trend/train with a lot of momentum. Think about it: Do you want to be on the train or in front of it.

    There were lots of good and interesting presentations. Here are a couple of highlights ...
    • Deutsche Bahn: Mobile Integration Platform - using OSGi to bridge the gap between the lifecyle of a vehicle (e.g. train) and software (e.g. an application). Vehicles have a much longer lifecycle than software. A huge challenge with a lot of opportunity, but only the tip of the iceberg. After you have tapped into the vehicle and can really access it (anytime, anywhere) I would predict a new dimension of integration challenges that will arise on the backend side to make all the relevant information available to the train and also to process the information that comes from the train. Interesting. Very interesting.
    • Deutsche Telekom/T-Labs: "We catalyze technology-based innovations" - very good presentation on the role of OSGi as an enabler for innovation. As previously discussed, currently (Mobile) Telekom Operators look for ways to maintain or even increase their relevance in the value-chain. If they do nothing they might turn into (more or less) value-less bit-pipes. OSGi is the kind/type of technology that will allow them to innovate faster and to roll-out these innovations to the customers, much faster than previously possible.
    • Sprint: Titan - the next generation mobile service platform ("Browser with AJAX is JUST NOT ENOUGH"). Earlier this year Sprint released its new mobile software development platform called Titan.  This platform is a show-case, how Java technologies can come together to create a portable mobile software engineering platform that can bring applications to a wide variety of devices. OSGi is clearly a key enabler to make this happen.
    BTW, this does not mean that the presentations I am not mentioning were not interesting. It means that I had to step out of the room for a meeting or a call and missed that specific presentation :).

    Last but not least, we (IONA :)) showed a demo of the current status of the Distributed OSGi Reference Implementation. Overall a very energizing, educational, interesting event. I recommend you put it into your calendar for next year :).
  • RESTful Services - Dana Gardner, Adrian Trenaman, Roland Tritsch

    Everybody is talking about REST. We do too :).

    Join us on July, 15th for this existing Webinar on REST and RESTful Services. Will include a live demo of a RESTful iPhone integration.

    CU there.
  • Innovation on Innovation - How to make elephants dance

    Yesterday I went out and had a pint with Sailesh Panchal. He is an Enterprise Architect with the payments division of Lloyds TSB in London. Part of his responsibility is to foster innovation in Lloyds.

    Obviously innovation needs to be directed towards a measurable goal/target/impact for the customer and/or the company. To judge, if an/the idea was just a good idea or a real innovation, you must be able to show some measurable ROI in a defined timeframe. Depending on the "size" of the innovation and the size of the organizations these timeframes can be easily 6 month or more. That's a long way down the road.

    Question is: What kind of signposts can you create to judge ideas earlier?

    We are looking for innovative ideas to foster, measure and rank (by value and relevance) innovative ideas in large enterprises. Sailesh is currently contemplating about implementing a system/culture, where the value of ideas gets rated by the number of citations that are made, means if you and your idea gets cited a lot the likelyhood that it is a good idea is high(er).

    Just wondering ... is implemented with Jive. We have a ranking for the number of posts a given individual creates. But there are markups that you can use to reference other docs and threads. Just wondering, if it would be possible to have a ranking for the docs and threads that get referenced the most?

    Just wondering ... 
  • FUSE Master Class Series - Hidden Gem

    A couple of weeks ago, I published the first 3 videos of the FUSE Master Class Series on the wiki. Sooner or later we might link to it from the top page, but for the time being they are hidden gems :). The videos are also available from my homepage.
  • The sensoric revolution - iPhone/Chumby integration

    The embedded/mobile software market is growing faster than the rest of the industry. From my point of view this just the tip of the iceberg, because we are at the beginning of the sensoric revolution.

    Historically all data got created in the "middle" and we used integration technologies to distribute the data. Web 1.0 turned out to become the preferred mechanism to get this done and we changed the content/data in the middle through the web (e.g. online banking). With Web 2.0 something new is happening, because the data/content does not get created anymore in the middle. It gets created at the edges of the web and flows into the "middle" (e.g. mobile phones with cameras).

    The next wave is going to be the sensoric revolution, where lots of data/content will become available, but it is not going to be produced by human beings anymore. Instead devices like homes, cars, phones, toasters will produce data/content. Because they can. Because by now all of these devices contain a million (not quite) sensors to measure, what the h... is going on around them. A car is driving over a bridge and the sensors in the car detect that there is wheel-spin and that the temperature is below zero. The car will then make this data/content available and other cars going into this direction can be warned that this bridge is probably slippery. The VP Engineering at IONA Technologies is on his mountain bike going downhill and flips over. The accelerometer in his iPhone detects the stunt (and waits for one minute, if there is anymore movement :)) and notifies a selected group of people (not me) to check on him.

    The sensoric revolution is coming. How do we integrate with these sensoric devices?

    Check out this cool iPhone/Chumby integration.

  • Mobile Monday in Belfast - WebServices to foster innovation

    Monday evening I spent in Belfast at the Mobile Monday, presenting on "How to access WebServices from the iPhone" (pictures are available upon request :)).

    Good event. We had 30 people in the room. Good format. Four short presentations with good networking before and after the talks.

    My favorite presentation was Michael Crossey from Aepona, talking about "Exploiting Telco Asserts through Telecom WebServices"

    One interesting point that he raised is that Mobile Telecom Operators are currently challenged (or even threatend) by "Over the top" applications (applications that use the network as a bit-pipe), which will over time marginalize the value of the operators in the value chain.

    Therefore the operators have to find new innovative ways to stay relevant. And they also know, that time is of essence. And they know, that if you are in a business for a while, you develop a certain amount of a tunnel-vision. Therefore they need help. The suggested approach is to expose network capabilities as WebServices (maybe comparable to the Amazon Elastic Computing Cloud - EC2) and let other people innovate based on this set of capabilities.

    WebServices as a way to make asserts digestible for a large group of people to foster innovation. Here is a new business value for WebServices.

  • Link of the month - TwitterFone

    Just updated the Link of the Month. It now points to TwitterFone (by Dial2Do). Cool stuff. Traffic in Dublin is a nightmare. Means I am walking a lot. This is the way to Twitter, while you walk (or drive).

    Very innovative.
  • Complexity explained simple - Ciaran McHale talks about security

    Just finished a/the review of a great presentation on security and security concepts published by Ciaran McHale on

    His claim is that 80% of the the perceived complexity of any given subject is not in the concept, but in the way it is explained to people. His quest is to fix this. Therefore he has started to publish a series of very well written presentations to introduce technical concepts in the most simple way possible.

    He also plays with the idea to use opensource engineering principles to develop courseware.

    Very innovative.

    Check it out.


  • Quantum Leap

    Today we went to a local art (flee) market. We were looking for some paintings for our new house.  At the end we could not agree on anything, but I was in the right mindset to find something that will focus the mind, when I am at my desk.

    I like innovation and I like to innovate. Sometimes this requires to take a leap of faith to produce a quantum leap. Just bought Quantum Leap from Anne Nielsen
  • Mobile Monday

    Got invited to talk at the Mobile Monday Series in Belfast.
    Looks interesting/promising. Will publish a post lateron
    next week.

  • The Colossus of Rhodes

    now. lets get things started. lets talk about innovation.

    for a well-known reason (at least) once a year i am in greece. this year we also went to rhodos to see the colossus

    question is: was this innovation? i mean, is it innovative to come up with the idea to build something like the colossus?

    what is the nature of innovation? how is it for instance different from creativity?

    there are obviously lots of websites that offer a definition of creativity and innovation. there are also attempts to define the difference between creativity and innovation

    fortunately i had one of my most trusted advisors with me and the conclusion of the discussion is, that creativity is about ideas and innovation is about results. Creativity is the at the core of innovation, but not every creative idea is also actually innovative, because innovation always serves a purpose. Innovation is directed towards a goal. It strives to improve a situation in a given context.

    "Creativity is thinking up new things. Innovation is doing new things." Theodore Levitt (Havard Buisness School)

    i think the colussus was a creative idea, but have him hold up the fire to find the harbour was innovative.

    next: is the iphone creative or innovative?
  • Apache-CXF generates client-side SOAP stack for the iPhone

    Yep. It was inevitable. Sooner or later we need to talk about the iPhone.

    And there is a lot to talk about ...

    • the innovative hardware
    • the business model behind it
    • the market this device might be able to create
    • and a lot of other disruptive changes that come with it
    But today I just want to talk about a neat feature that I discovered in Apache-CXF.

    In January I was looking for ways to make the mobile device a first-class citizen in a distributed SOA. Right now, there are probably three platforms types that you can consider when it comes to mobile devices and the integration of mobile devices with (SOA) backend systems:
    • Native - means you are using a platform SDK (e.g. .Net, Symbian, iPhone SDK) and write applications directly for a given platform.
    • JAVA - means you are using the JAVA ME platform. Potentially/Hopefully in combination with an OSGi container.
    • Browser - means you are using a browser and implement your application as (AJAX-based) WebApplications (XHTML, CSS, JavaScript (with XmlHttpRequest objects).
    Right now, you can develop applications for the iPhone using option 1 and 3. Option 2 is not an option, because there is no JVM for the iPhone (but SUN recently announce that this will change later in the year :)).

    Option 3 got a lot of merits, but leaves you with the daunting task to write all of the JavaScript marshaling code yourself :(.

    And here is where the miracle happens: The next version of Apache-CXF (2.1) has a feature that allows you to generate JavaScript client-side code for WebServices. Either from an WSDL file or from annotated JAVA source code or dynamically at runtime.

    It makes writing WebApplications for the iPhone so much easier.

    I have ported some of the CXF demos to the iPhone. The podcast, the presentation and the source code is available on and on

    Check it out. Feedback welcome.
  • Sorry :) ...

    I was not really happy with the generated blog. Had to redo it. Apologies to the thousands of people, who have already subscribed to the RSS feed :(. You have to do it again :(. But this time you get an ATOM feed :).
  • Hello world :)

    Wow. Finally!!! Twelve month ago, I decided that living 42 years without a Mac was long enough. This is not surprising, because as we all know, according to Douglas Adams it takes 42 (of whatever unit) to discover the sense of live.
    Anyway, ...
    Triggered by this event I also decided to renovate my website and voila, .... (only :)) twelve month later: Here we are. A/The brand new website. Cool.
    As Johnny Corba likes to say: But wait there is more!!!
    It is not only a brand new website, there is also a brand new blog that comes with it. And it talks about innolocity. What the hell is innolocity? Innolocity is the velocity (or speed) of innovation. Something that we need to get right. For our organizations and maybe in general for our lives. If you innovate to fast or at the wrong time, you will waste energy and you will not get a good return on investment, because you move on too fast to early and you will more often than less jump on the wrong bandwagon.  If you do not innovate fast enough and hold on to what you know and love for to long, you will miss chances. Chances to learn, chances to be part of something or lead something.
    Innovate as fast as possible, but not to fast.
    Ok, I admit it upfront: This blog will also allow me to talk about a lot of other cool stuff: Gadgets, Trends, Ideas, Thoughts and Events.
    Just to get it going: Here is a list of things, we can/should talk about in the foreseeable future ...
    1.  How disruptive/innovative is the iPhone?
    2.  Is opensource fostering or killing innovation?
    3.  Should you visit the Science Gallery in Dublin?
    So far, so good. It seems I am done with my first blog entry on my brand new website.

subscribe via RSS