Main

March 19, 2010

Hippo CMS 7.4 preview: version compare

This is work in progress - but I got so excited when I saw it working that I couldn't resist turning it into a quick Friday afternoon demo video. This functionality will be released in Hippo CMS 7.4 which is scheduled for June, so I'm afraid I'm going to have to ask you for a bit of patience - but at least you'll have something to look out for :)

Suppose Joe is our author and he's working on a new article that he wants to push live. He requests publication, and sends the article off to his editor, Jane, for review.

Screen%20shot%202010-03-19%20at%205.11.31%20PM.png

I'm logging in as Jane now, and I can see the request that she got. Jane is fine with the article, so she pushes it live.

A couple of days later, Joe the author comes in again, and he changes some of that content he wrote before. And he requests publication again.

Jane logs in, sees the requests and wonders: What's new?

Hold it here - I need to explain some background. Of course we have versioning and history and all that. Every CMS does. But how easy is it to get to that comparison view? How many clicks do you have to perform to compare the current version of the document with the one that's online right now? And what kind of a view does it give you? How often do you do this? And if it would be *super* easy, wouldn't you just want to see that comparison view all the time? All in all, you're working with a team of editors in the same content pool and you need that contextual information about what's going on in the system, and who did what, where.

So that's what we did. We made it uber-super easy!

Screen%20shot%202010-03-19%20at%205.13.49%20PM.png

Click it - and there you go! That's what's new. Hippo CMS shows you the comparison view right there when you view the article. That is, when something has changed. It simply shows you the difference between the current version of the document and the one live on the website. How useful is that? If you need more information - you can of course dive into the version history, but this simple comparison view is probably all you need.

Again - we hope to be releasing this with Hippo CMS 7.4 in June, so hold tight.

In the meantime, let me know what you think - feedback is very much appreciated.

March 11, 2010

What's wrong with portals?

This post clearly describes the problem that I see with all current portal implementations: they treat content as “just another application running inside a portlet”. When we stick to this paradigm, it will kill Portal. Content behaves very different from legacy apps, and simply offering a contextually disconnected content management portlet is not enough. Content deals with semantics and relationships: users expect a portal to be smart enough to render content that is related to the apps they see right there on their screen, and they expect content to be reused across different sections in a portal, wherever that makes sense. Not to mention user-generated content.

Wikis gave users the possibility to quickly create and collaborate on content, but they don't come with the visual application integration that Portals offer. And they lacked the degree of control of a decent content management system. Integrating Portal and CMS is more than just adding a 'content portlet'. Adding an in-context application to a Wiki page would be more in line with how users think. They navigate your online consumer portal, find a page that answers their question and then they want to act on it directly. The FAQ page on “How to request a new password” should render the “New password” portlet in-line with the article. This is just an example - but this is clearly the direction Wikis are heading as they're maturing towards something that resembles an integration of Portal and CMS, and they're leaving traditional Portals way behind.

Portal vendors need to move towards the Content Driven Portal. At least, this is direction we've chosen to go with Hippo Portal. Users want URLs that make sense, that say something about the information that can be found on a page. They want to pop the URL of a portal page into an email and send it to someone else and it should just work - within the appropriate security constraints of course. What applications are shown on the portal page should follow the context, not the other way around. People got used to this concept during the Wiki revolution, and they'll never want to go back.

December 31, 2009

2010: the year the E-Reader will become the content managers’ favorite productivity tool

Flipping through my usability notes, I noticed one of our Hippo CMS users mentioned the following about proof-reading:

“There is no printing facility for content in Hippo CMS so everything has to be done on screen. Even if we could print, we can only see a single field, not the whole article, so it's a bit pointless trying to proofread this way. This leads to long periods of time staring at a screen. It's also very difficult to spot typos on screen, leading to potential loss of quality in copy.”

Exactly. Often enough, also I spot typing errors only after having printed out my text (like this blog post), and walking through it again while commuting on the train. The letters start to dance before my eyes when I’m behind a monitor for too long. Sometimes it helps a lot to just put your text aside, do something else for a while, and then return to it on a quiet moment to walk through what you’ve written. So, why not implement a printing functionality in Hippo CMS, to allow authors to take their text with them? Everybody got so used to printing out Word documents anyway, that it baffles me that this idea had never appeared to me before.

So I put the print function on our roadmap.

But somehow, it feels wrong. What happened to the paperless office? It’s almost 2010 (it’s the 31st of December, 11:45 in the morning, as I write this), Kopenhagen happened only a few weeks ago, I’ve been driving the most economical car on earth for years, and I use the printer as little as possible. I don’t want to have a tree cut down for me to be able to proof-read my blog post!

Enter the e-reader. 2009 was the year of the e-reader. A number of those devices already boost a keyboard and the possibility to add annotations to texts, to store them and synchronize them with your PC. And every modern writer nowadays carries an e-reader to read their books anyway, right?

So here’s the thought: let’s make a tool that allows you, after a long day of writing, to take all the texts you’ve worked on with you on your e-reader. You grab your reader again when you sit on the train, where you walk through all passages for typos and make annotations. The following day, you import all those changes back into Hippo, or maybe you’ve already sent them to the content repository over wireless email.

I don’t know whether the latest generation of e-readers are already open enough to share annotations with a content management system. Maybe we’ll have to wait for that to happen in 2010. But at least I found a very good excuse to rush downtown and treat myself with another gadget to go try it out!


 

October 26, 2009

ApacheCon US 09 Evening Meet-ups - Free for all

Monday 2nd, Tuesday 3rd and Thursday 5th of November
Oakland, CA
Content Tech, Hadoop, Lucene, NoSql, OSGi/Felix, SocialAndWidgets, Subversion, Tomcat, Traffic Server Podling, WebCrawlers, WebServices

Join us for a third year of Apache Meetups! Users, committers, managers and developers will come together on the evenings of Monday 2nd, Tuesday 3rd, Thursday 5th of November .

Registration is free of charge, and everyone is invited. Register on the meetup wiki pages:

Monday 2nd (BarCamp Apache during the day)

  • 20:00 - 22:00 NoSqlMeetup Room 1&2
  • 20:00 - 22:00 Tomcat Room 6

Tuesday 3rd (BarCamp Apache during the day)

  • 20:00 - 22:00 Lucene Room 1&2
  • 20:00 - 22:00 OSGi/Felix Room 3
  • 20:00 - 22:00 Traffic Server Podling Room 4

Thursday 5th

  • 20:00 - 22:00 Content Tech 1&2
  • 20:00 - 22:00 Web Services 3
  • 20:00 - 22:00 SocialAndWidgetsMeetup
  • 20:00 - 22:00 Web Crawlers Room 5
  • 20:00 - 22:00 Hadoop Room 6
  • 20:00 - 22:00 Subversion Room 7

If you're interested in any of these popular open source projects, come join us for an evening of presentations and discussion with the creators and committers working on the projects themselves.

Hosted by and located at the ApacheCon, these five special community meetings are taking taking place on the days before the ApacheCon conference in Amsterdam. Entrance is FREE for everyone, so sign up quick!

Location
Marriott Oakland City Center
1001 Broadway | Oakland, CA 94607 | +1 510 451-4000

What is a Meetup?

A MeetUp has a number of key attributes:
  • Focused on a single Apache project
  • Organized by the members of the project community itself
  • Open agenda, anyone can propose a talk, covering a wide range of subjects related to the core project
  • An opportunity for users, interested people and committers to get together

MeetUps generally happen during the evening, and, most importantly, are supposed to be fun (as well as useful).

ApacheCon is the official conference of the Apache Software Foundation (ASF), drawing ASF Members, innovators, developers, vendors, and users to experience the future of Open Source development. Drawing internationally-renowned thought-leaders, contributors, influencers, and organizations in the Open Source community, ApacheCon offers insight into the culture and community that develops and shepherds industry-leading Open Source projects, including Apache HTTP Server - the world's most popular Web server software for ten years running.

About ApacheCon US 2009

These special Apache Meetups are organized as free side events next to their bigger sister conference, the ApacheCon US 2009.

ApacheCon is the official user conference, trainings, and expo of the Apache Software Foundation (ASF). Celebrating its landmark 10th Anniversary, ApacheCon US takes place November 2 - 6 at the Marriott Oakland City Center, California.

The global conference series gives attendees a 360-degree view into the highly lauded community that develops and shepherds industry-leading Open Source projects, including Apache HTTP Server - the world's most popular Web server software. ApacheCon offers participants the opportunity to deepen their understanding of Open Source methodologies and further advance their participation with like-minded peers in a relaxed, community-focused environment. More than 500 users, developers, and thought leaders are expected to attend.

With engaging keynote addresses, technical presentations, informal networking, Birds-of-a-Feather discussions, and entertaining social events, ApacheCon US 2009 gives participants the opportunity to choose from more than 60 sessions at the beginner, intermediate, and expert level. From mission-critical implementations to groundbreaking technologies, incubating projects, and collaborative development, ApacheCon presenters and faculty are passionate about some of the hottest issues at the heart of the industry.

Register today at http://www.us.apachecon.com/c/acus2009/about.

October 22, 2009

Hippo Forge Friday: October 30

Get your hands dirty with Hippo, the open source Java CMS and Portal framework that everybody talks about. Join us for this free Hippo Forge Friday plugfest! We've scheduled an afternoon of free flow Hippo coding on Friday, October 30 in our offices in Amsterdam and San Francisco.


Build a CMS plugin, a portlet, a repository addon, an HST component, or something else that you think is cool enough to turn into an open source Hippo Forge project. The core Hippo developers will be there to help build the Hippo component you always dreamed of! A Google Analytics plugin, an image resizer, a Jira portlet, a Lightbox HST Component, you name it. You can sign up here.


Whether you're an experienced Hippo hacker or a complete newbie, come join us for some proper coding fun, beers and food. If you don't know where to start - we'll help you get on track :)



We'll spend half a day on pure hacking galore, a big BBQ, beers, and of course: geeky prizes! Bring your laptop and we'll take care of the rest.



What: First international Hippo Forge Friday

When: October 30th from 14.00 until 21.00

Where:
Hippo Office Amsterdam: Oosteinde 11, 1017 WT Amsterdam
Hippo Office San Francisco: 185 H Street, Suite B, Petaluma, CA 94952

Why: A fast paced, hands-on introduction to Hippo. Get to know Hippo by writing plug-ins, HST components, portlets, and all things Hippo-like. Gain eternal fame by winning one of our prestigious prizes!

Who: All Java developers and web enthousiasts.

Registration: Make sure you sign up early by filling in the Forge Friday sign up form.

More info: Read Tjeerd's blogpost about the last Forge Friday and keep an eye on the Wiki page.

August 14, 2009

Work in progress: HST Configuration Editor

As one of our architectural principles, we designed Hippo CMS to be a headless Java CMS that any developer can use to build his or her website with, using their preferred web framework technology. But when we started working on version 7, we wanted to add something to facilitate the need for more control over the web framework from within the CMS itself.

This lead to the creation of the Hippo Site Toolkit 2. We wrote a bunch of libraries, for which we borrowed some brainpower from our Apache Portals guys, that offer us a lightweight templating framework. The result is a toolkit that can be used in a wide variety of web technologies. But there's more. Our initial requirements for the HST were:

  • Support JSP templates out of the box
  • Implement a component framework that allows reuse of functionality
  • Make components sharable on the Hippo Forge
  • Allow a user of the CMS to design the entire URL space
  • Enforce proper seperation of logic and presentation, by borrowing some concepts from the Portlet 2.0 spec (especially the action/render phase)
  • Let the CMS user define which component, template and selection of content to render on which particular URL
  • Make all website menus editable from within the CMS
  • Take care of connection pooling, caching, and all that
  • Don't tie in content with presentation - so content can always be reused in a different medium
  • And, to wrap it up: HST components should run inside a portal as Portlet 2.0 compliant portlets with no extra coding

Already quite ambitious, we wanted to be sure that we would be able to extend the HST so it would also offer us an abstraction layer towards:

  • Freemarker and Velocity templating
  • JSF, Wicket and SpringMVC
  • (J)Ruby
  • REST
  • CMIS
  • .. and what not :)

I need to thank Ard, Woonsan and Ate for their hard work on the HST. But in this post, I wanted to focus a bit on Arthur's recent work, who has been working on the HST Configuration Editor. This is the user interface for the HST inside the CMS, which is being developed as a plugin within the HST project (see http://www.onehippo.org/site-toolkit).

In this video Arthur is telling me about his latest work on the HST Configuration Editor (as of July 2009). There are lots of sneak peak juicy screens to enjoy. Watch in full screen HD for best results!



Arthur does a quick walk through of the different parts of the HST Configuration Editor and demonstrates what is possible with the demosuite right out of the box. The demosuite is available as a download from http://www.onehippo.org/site-toolkit/home.

August 4, 2009

An improved template editor

For our upcoming release, we're working on the document type editor (or template editor as some prefer it). Here's a sneak preview.

The two major changes to the document type editor are:


  • Compound document types: reusable snippets that you can design using the document type editor, and then add to other document types. When the compound is changed, all document types that use the compound will reflect these changes as well. This allows you to develop very complex document types, with all kinds of hierarchical structures in your content.

  • Layouts: both document types and compound document types now support a number of layout possibilities. Layouts like horizontal or vertical orientation, multiple columns with different sizes, etc, are now configurable for every template. This is a very powerful tool when used together with compound types!


Frank explains in only 1 minute and 36 seconds how you can now use compound documents, as well as the layout mechanism. Watch in full screen for best results!


This is a preview of functionality that is being developed for our next big release. You can take a look at the latest code if you want to play around with it.

Available from pre-release tag 2.07.00: http://svn.onehippo.org/repos/hippo/hippo-ecm/tags/Tag-HREPTWO-v2_07_00/.


Enjoy!

Arje

July 16, 2009

Bragging rights

I'm not too fond of open source license discussions and I tend to stay away from them as much as I can, but Seth Gottlieb's recent blogpost struck a nerve with me.

Hippo brings its products to the market under an open source license. We don't do this out of necessity, as the open source projects we use would allow us to distribute our software under a 'closed' license. Open source as a movement is very dear to us and we contribute on a regular basis to numerous projects, but our end products are open source for another reason.

Our products are distributed under open source license *because* (not despite) we are a commercial company. We believe that an attractive OS license encourages a level of adoption and collaboration that would be difficult or impossible to accomplish with a closed source product. It helps us create a larger ecosystem around our software than would otherwise be possible.

Distribution under an open source license changes the traditional user-vendor relationship in many ways. Most importantly it allows companies to implement and use the software without dealing directly with the original creator and thereby does away with vendor lock-in in an elegant way. Because of this liberal system of distribution, it is of essential importance that end-users have other ways to establish the origin of the code. Proper disclosure of origin is important for legal reasons, as unlabeled code could potentially be unlicensed, as well as for commercial reasons, as support or maintenance may be needed beyond what the distributor can provide. But even more importantly, disclosure helps ensure that any user can get in touch with the original developers to check for updates and participate in the community.

In the end, more than providing an ego boost to the developers, retaining a proper notice is an essential ingredient for a thriving eco-system. It is for these reasons that the Apache license, while being one of the most liberal, is so keen on giving credit to the original developers: retention of the original notices in any distribution is pretty much the only condition to be met for redistribution **.

So when three years ago a little startup from New Jersey started using the products we were working on at Hippo (Apache Jetspeed, Hippo CMS), we welcomed the expansion of our community. I've always felt that adoption of our software by other vendors was a testament to our success and in many ways a big compliment. Excited about the opportunity to get them on board, I visited their offices two years ago, and shared Hippo's plans for the future.

Now, three years down the road, while they do ask a lot of questions on the mailing lists, I am not aware of any contributions that they return. So, when I learned from CMSWire that "Good Samaritans that they are, Bluenog plans to contribute back the enhancements it made to various open source projects during the development phase of Bluenog ICE 4.5.", I was skeptical.

As anyone can tell from what is publicly available, their product very much remains a collection of open source tools, of which older versions of Apache Jetspeed and Hippo CMS form the backbone. Both are already provided as an integrated whole by Hippo, so what exactly is new here? If they have great contributions to make, why did we not see them yet? And as Bluenog's source code is not publicly available, there is currently no way of returning those contributions to the other users of Hippo CMS, Apache Jetspeed or any of the other open source projects they shrink wrap.

Already a bit wary of this self proclamation of good open source citizenship, I was shocked to see that they did not take their obligations under the Apache license too seriously. Distributing our product without retaining the required notices does not only go against the spirit of the open source community, it also hampers our efforts to build the larger community of which Bluenog and its customers are a part.

It's too easy to brush aside a breach of the Apache License as the weeping of another sad open source developer complaining about others stealing his code. Let's not forget that in the end respecting licenses is an essential part of the open source ecosystem. Opinions and discussions aside, Bluenog has simply been in breach with our license for years. Shrugging that off as a minor mistake is like a failing bank telling you: "what are you complaining about? It's only money".

Don't get me wrong: I think it is a great development that companies care to be good citizens of the open source community, but like any commercial open source vendor they should earn their bragging rights and above all stay within legal boundaries.

** disclaimer: apart from being CTO of Hippo, I'm also a member of the Apache Software Foundation. The statements I make about the Apache license are my entirely own, and are not related to my role at the Foundation, nor are they statements of the Foundation itself.

March 16, 2009

Apache Meetups: next week!

Wicket, Maven, Lucene, Jackrabbit and Portals Evening Meetups

Join us for a third year of Apache Meetups! Users, committers, managers and developers will come together on the evenings of Monday 23rd and Tuesday 24th of March.

Registration is free of charge, and everyone is invited.

Monday 23rd (BarCamp during the day)

Tuesday 24th

If you're interested in any of these highly anticipated open source projects, come join us for an evening of presentations and discussion with the creators and committers working on the projects themselves.

Hosted by and located at the ApacheCon, these five special community meetings are taking taking place on the days before the ApacheCon conference in Amsterdam.

Entrance is FREE for everyone, so sign up quick!

Location

Mövenpick Hotel Amsterdam City Centre Piet Heinkade 11, Amsterdam

Sign up

SIGN UP HERE: Sign up form

What is a Meetup?

A MeetUp has a number of key attributes:
  • Focused on a single Apache project
  • Organized by the members of the project community itself
  • Open agenda, anyone can propose a talk, covering a wide range of subjects related to the core project
  • An opportunity for users, interested people and committers to get together
MeetUps generally happen during the evening, and, most importantly, are supposed to be fun (as well as useful).

ApacheCon is the official conference of the Apache Software Foundation (ASF), drawing ASF Members, innovators, developers, vendors, and users to experience the future of Open Source development. Drawing internationally-renowned thought-leaders, contributors, influencers, and organizations in the Open Source community, ApacheCon offers insight into the culture and community that develops and shepherds industry-leading Open Source projects, including Apache HTTP Server—the world’s most popular Web server software for ten years running.

February 17, 2009

Wicket use case testing with Selenium

Our very own mr AJAX, Arthur, blogs about how we perform automated Selenium tests on Wicket components for Hippo CMS 7.

Although he credits me for the video, I was merely playing the annoying voice-over and shaky-cam-operator role :-). Arthur does all the talking. So here's credit back, 'Thuur.

In his blog, he explains how we had to tweak the Wicket markup ids to get Selenium to work.

"Use case testing" is my term for what Arthur (and with him probably the rest of the world) calls "integration testing". This is where we bring together two very important stakeholders into our development project: on one hand, the developers want to know whether integration doesn't break functionality, and on the other hand, users and testers want to know whether the new version of the system has at least the same level of functionality and stability as the last time they tested it. That's why, at the end of each development Sprint, we have a round of user testing. During that phase we record the use cases that the testers perform and add that to our set of automated Selenium tests.

Go ahead and enjoy Arthur's blog and the demonstration video (and my shaky camera moves).

selenium.jpg

February 3, 2009

Introduction to imagesets

An image is not just *one* image to us. It can come in a wide variety of representations. The image that the user uploads, can be (automatically) scaled to different sizes, translated into different languages, or have different versions for different target audiences. All of these different instances are called 'variants' in Hippo speak. In the content repository, there's one single node that represents all of these variants. This is what we call the 'handle'. The handle is also what the user sees when he or she selects the image in the CMS. The thumbnail that is displayed next to the image's filename, is a variant underneath the handle.

If you access the image itself from within Hippo CMS, you see all the different variants, and you can actually edit the handle and swap out a variant with a different image file if you're not happy with it. By diving into the physical nodestructure within the content repository (I do this in the movie by accessing the 'console'), you can see those different variants.




Imagesets in Hippo CMS 7 from Arje Cahn on Vimeo.


The structure of an imageset is something that can be tailored to a specific project or website. A website that displays an article that contains a reference to a handle gets to choose which variant to display. So, for example, you could have a website where you want the homepage to always render a thumbnail of the image, and when you click on it, you might want to show a large variant. That's easy! Slightly harder is a situation where you need the image to be translated into 21 different languages, because it's part of the website's navigation. The "About us" button in that case might need a translation workflow process that runs the image through a number of qualified translators and designers. You'll end up with one handle containing 21 different variants (with images that state "Au Sujet de Nous", "Over ons", "关于我们", etc). The whole concept of imagesets in Hippo CMS 7 was designed for processes like this.

In the video, I also demonstrate how references to images (or rather, imageset handles) work in the repository. We're using our famed faceted repository goodness to setup a symbolic link kind of relationship between an article and an image.

If you'd like to comment on this video, please do so on the Vimeo video page.

January 30, 2009

Hippo CMS 7 is live!

Go get Hippo CMS 7 at http://www.onehippo.org, try out the distro and knock yourself out.


I need to thank so many people, that I wouldn't know where to start. Most of all, I need to thank "The Guys Upstairs" for all their hard coding in the last couple of months. Berry, Frank, Bart, Arthur, Ard and Auke, thank you. It's been a rocky ride but it was worth it. I also need to thank Niels, Rita, Jeroen, Jeroen, another Jeroen, Dennis, Jettro, Jasha, Ate, David, Woonsan, Vivek, Anton, Mathijs, Wouter, Tjeerd, Jeff&Jody, Ruben, Johan, Wander and Mike for their contributions. The "Guys Downstairs" (you know who you are!), folks in the US, the marketing people, our customers, everyone from Jackrabbit, Wicket, Maven, Lucene and everyone else who influenced this incredible new version of Hippo CMS.. Thanks.

Hippo CMS 7 was built on Apache Jackrabbit, Lucene, Wicket and many other Apache projects. Combine these really powerful components, add a little faceted navigation, a touch of plugin framework and 36 person years of development [1] and you have Hippo CMS 7 :-)

Oh, and it's open source. Go get our code from http://svn.onehippo.org/repos/hippo/hippo-ecm/, check out the Hello World example, and start your own plugin project at the Hippo Forge. The first 25 people to build a really neat plugin on the forge will receive one of those funky Hippo T-shirts. What's neat? A Google Maps location picker is neat, and maybe a Flickr image plugin is neat, too :)

If you have questions, or would like to share some feedback, feel free to sign up to our CMS 7 User list. Your comments are very well appreciated! :)

[1] Stats from Ohloh http://www.ohloh.net/p/hippoecm

September 22, 2008

Announcing Hippo ECM and Hippo CMS 7

Lots has happened.

And we're nearly there. It took us more than a year of heavy development, but it feels *so good* to play around with this cute little gem! It just feels right. Here's a bit of a sneak preview:

In the meantime, Dennis Byron of IT Business Edge wrote a really nice blogpost about how Hippo "Helps Get Portal Enterprise Software Right". As he says, "the characteristic of using CMS to do multiple things multiple ways is the key to the Hippo approach" - and he's so spot on. Hold your breath for v7.

This came in just days after something else that I think I'll simply interpret as a big compliment.

As they say, imitation is the greatest form of flattery. Draw your own conclusions. Apparently, there are more people in the world that really like Hippo :-).

Expect more from me in the blogosphere the upcoming weeks as we reveal the new kid on the block in open source ECM.

February 15, 2008

Congratulations, XML

Last week, XML turned 10. Hurray!
Incredible that it's just 10 years ago.

Crunching my memory, I think the first time I came across XML was somewhere in the end of 1998, when I was working on a Microsoft technology based CMS. Since people have been harassing me with this horrendous error ever since, I hereby would like to make a public confession.

The stupidest thing I ever did with XML
Store a 100Mb of XML data in a single MS Access record using ASP.
It took ages to store or retrieve the data, and I kept all data in memory for operations before I flushed it back to Access. And the database obviously crashed all the time. But you know, learning comes with making mistakes.

The coolest thing I ever did with XML
Giving all attendees of the Cocoon GetTogether a virtual seat using SVG and Cocoon SVG-to-JPG transformations :)

The stupidest thing I ever saw someone else do with XML
Calculate a square root using pure XSL transformations (this one is actually courtesy of Ard ;) )

So what was your best XML moment?

10 years old. Can you imagine? Not even old enough to visit high school. Another 8 years before XML will be allowed to drive a car.

Read more on the W3C website..

February 7, 2008

Fresh new hearing

They kicked me out of hospital last week.

Exactly ten years after what was supposed to be my last operation, my left ear started troubling me again. I had no other choice than to undergo some major surgery to stabilize the inflammation and to hopefully get some of my old hearing back.

Not a lot of people actually know this, but I'm almost deaf on one ear. Sitting on my left side in a crowded bar is a good guarantee that I won't be able to have any conversation with you. That's why you can see me switching chairs all the time for apparently no reason - it's not because I'm superstitious or something - I just want to be able to hear people.

But now this is all supposed to get soo much better...!

When I woke up from anaesthetics, the doctors (all three of them) were jumping up and down next to my bed like little children. Surgery went much quicker then they had expected, and they had had so much fun playing around with chunks of Titanium in my head, neurological sensors to monitor my facial nerves and so on. Oh big joy. But I can tell you - nothing feels better than seeing happy doctors when you wake up after long hours of surgery!

I'm taking it easy now - trying to recover and let the new ear heal. So bear with me if I'm not responding to your email quick enough.

For those of you who hungry for bloodshed and gore pictures - here's what my head looked like last week :-)

Enjoy,

Arjé

December 31, 2007

Information patterns: Classification follows context

I was at the Amsterdam Zoo, a place that I go to quite frequently to wander around and feel simple and taken care of amidst a bunch of animals sitting properly organized behind their name tags. No surprises in this place. A zoo breathes a fatherly message: Don't Worry – Man Is In Control.

230px-Carl_von_Linn%C3%A9.jpgIt's still 2007, and we are in the year of the 400th birthday of Carolus Linnaeus, the man who gave us those animal name tags. His work is now known as the Linnaean Order; which he wrote down for the very first time in his book "Systema Naturae" way back in 1735. Born in Sweden, he lived in the Netherlands when he published his famous book. Since communication was slow and photography didn't exist, biologists needed a system to refer to a certain group of plants or animals, and Linnaeus gave them exactly that.

So we were drawn to the zoo today because there was this very special tour scheduled. I was looking forward to the Linnaean Order Tour by amateur biologist Melle. Melle, me and the other geek attendee (my wife) were nervously waiting at the meeting point for the start of this slightly odd, almost autistic tour about the wonders of Ordering Stuff.

As the three of us were waiting for other people to arrive at the meeting point, I joked – grinning from ear to ear - that the rest of our group of fifty was about to arrive any time soon. It's the kind of humor I particularly enjoy, but I felt sorry the moment I said it. I was hoping it would cheer the guy up. And it did, but just a little bit too much. As a result, we faced waiting for another fifteen minutes with a now frantic guide who said he had never had more than five attendees. When he finally figured that the other forty-eight were not going to show up, which he took as a surprise, we started our tour. Fifteen minutes late, and with just the three of us. I shamefully followed our little group.

The guide, however, appeared to have absolutely no problems with my silly little joke. Instead, he started the tour with a kick start, told us he felt sorry for me that my group had left me alone and ran of to the very first Ordered exhibit on our tour.

This running behavior seemed to be his normal way of moving.

Melle did his tour. We ran from one Ordered place to the other, quickly skipping all of the scarily disorganized parts that we ran into along the way. The only times he was at rest, was at places where the chaos had been forced into control by mister Linnaeus himself. In between those places, I had a hard time keeping up with the guy.

180px-Systema_Naturae_cover.jpgWhat made Linnaeus so special, he said, was that he made a couple of very clear decisions on how to determine the distinctive facets of animal, plant, or mineral. As an example, he mentioned the fact that anything with breasts is a mammal. I was surprised by this very much simplified version of what I had learned as a kid. Animals laying eggs, sitting on them, or carrying their babies inside their wombs - or not -, penguins, crocodiles, kangaroos and all those exceptions. But it all just came down to this very simple yes/no question: does it have breasts?

Of course it didn't. There's so many things that define a species or that separates one group of animal from another. It rarely boils down to just one yes or no question. Biology, or nature as a whole, doesn't like to stick to simple yes and no questions. In reality, you would need dozens of questions like this to be able to determine a species correctly. And the problem is that with every newborn baby, they change a little teeny bit.

But our guide didn't really care. And he was right: because the rules of the game change continuously, you're going to need a set of very simple basic questions to stick to. And that is what Linnaeus did.

I envy Linnaeus because he had the guts to just start somewhere, take some decisions, simplify a whole lot of things, and still finish off with a complete overview of nature. Simplification really is the hardest part of all. Classifying things is not particularly hard to do, but deciding what the classification rules are, is really hard.

You might recognize this from what you do on your computer. How do you categorize all of your documents? How do you order all of the blogs, the websites, e-mails, files, MP3s, contacts, contracts, and all those other digital bits and pieces that you have laying around on your computer? So you set up a folder structure. And you've put every single file in the right folder, in the right sub folder, and gave it an appropriate name, so you will always be able to find it back again. Are you?

No. Or, maybe you are on your own local machine, but it will definitely go wrong when you start sharing documents with other people in a network. That's because you look at your documents from a slightly different context than others do.

I want a storage mechanism that allows me to just dump in all of my information, not thinking about any kind of classification or folder structure, after which the system goes and figures out the similarities between different objects and the correct classification structure automatically bubbles up. And I want to be able to change that classification structure afterwards, whenever I want, without interfering with the content itself.

But that was just a sidenode.

86553536_fde559aaec_m.jpgIn the meantime, Melle showed us two statutes. Two laying figures represent mythological Dutch water ghosts. I had seen them many times before, but never really cared about them. Melle took me by surprise by telling me that they once were part of the Linnaean order as well: the Paradoxa. Linnaeus spends half a column in his diagram on creatures that do not fit any of the six standard classes: the unicorn, the phoenix, the dragon, the satyr and apparently, water ghosts too. It took until the sixth edition of his "Systema naturae" (1748) before he would remove these creatures. That struck me. Whether it was an error or not to put them in the first place didn't really matter. What is important, is that Linnaeus set up his order with the idea in mind that it would change over time. In fact, the Linnaean order has changed a lot over time not just skipping fantasy figures, but also moving creatures around, adding categories, changing taxonomies, and it will probably never come to a final state. Due to the nature of what it describes - nature - it simply can't.

Correctly categorizing and classifying requires you to be prepared for change as well. Don't expect to do it correctly first time. Not even the second or the third time. The context of things will always change over time. And when that happens, classification should follow.

After about half an hour, we ended our Linnaean tour. It had been really nice, and the enthusiasm of our guide really made it worth the wait and the cold outside. The funny thing was that it was mostly about how the structure that Linnaeus set up so carefully, had changed so much over time. It felt like structure, but then again, it wasn't. And although Melle, our slightly autistic guide, felt safe and secure knowing Linnaeus had ordered everything for him, we went home feeling a little bit confused. Linnaeus had invented a system that everyone could use and refer to, while still allowing it to change whenever that was needed or new insights came to light.

I want that, too!

November 19, 2007

Apache Wicket Meetup

Small-scale meetups are good for attracting new people to the Apache community. So after the 6-years-in-a-row (and still running!) Cocoon GetTogether series, we're now running a brand new meetup for the Apache Wicket community. I kind of promised that I would write up a manual for running these kinds of shows during the ApacheCon meet-the-producers meeting. And I will. But first, join us here:

Apache Wicket Meetup: Friday November 30, Amsterdam

As a Java developer working on web applications, you've probably heard about
the latest kid on the block from the Apache community: Apache Wicket.
With proper mark-up/logic separation, a POJO data model, and a refreshing
lack of XML, Apache Wicket makes developing web-apps simple and enjoyable again.
Swap the boilerplate, complex debugging and brittle code for powerful, reusable
components written with plain Java and HTML.
You are invited to join us at the very first Amsterdam Wicket meetup.
The meetup is in an informal setting, with over 40 attendees already, and
will give you some fast-paced insight in what Wicket exactly is and how to use
it.

How to attend


Attending is simple: simply add your name to the wiki page below and you're
all set! http://cwiki.apache.org/WICKET/community-meetups.html

Thanks to our sponsors, the meetup will be free for all!

Location


The Wicket meetup will be held at the Felix Meritis building in Amsterdam: Google
Map of the venue
.
Please note that we have a maximum of 100 attendees, so sign up quickly if
you want to be sure of a seat.

Agenda


Date: Friday, November 30
Preliminary agenda:

12:00 Room opens, Wifi connection, power outlets and coffee available.
        Walk-in hackaton for whoever likes to join.

15:00 Start of the official Meetup. Opening talk.
15:00-18:00 Wicket Gettings started sessions (beginner to intermediate level)
18:00-19:00 Break for drinks and snacks
19:00-21:00 Technical sessions (intermediate to expert level)
21:00 Wrap-up

The subjects of talks are still under discussion on the mailinglist, but
we've had some excellent submissions for both introductionary talks and deeper
technical discussions. These range from "How to get started with Wicket" up to
"Running Wicket in high availability environments". The afternoon sessions will
be less technical than the evening sessions. The agenda is very much subject to
change. See the Wicket Wiki for the latest version.
This is an Apache community effort, so if you have any ideas, don't hesitate to let us know! Please sign up to the Wicket user mailinglist and share your thoughts.

We've been trying to make this meeting as low-barrier as possible, to give everyone an opportunity to get to know Wicket. If you want to know whether Wicket is your next framework or not, this is the place to be!

See you all in Amsterdam on November 30th !

October 11, 2007

Investing in open source

I felt sad for Lars - one of my Cocoon buddies - when he told me that his company lost its primary investor. They're now forced to close down the shop. A horrifying experience, and I really wish Lars and his collegues all the best. But are they really in such a bad situation?

It surprised me that Mindquarry's investors spend their money on an open source company without really understanding the business model behind it. But by pulling out, they might be doing the originators a big favor.

For half a year, the developers have been able to build their product, while getting all of their bills paid by someone else. Now that the investor is gone, the company shuts down. But the code, the knowledge and the intellectual investments are still very much alive.

Mindquarry released all of their code under an Apache Software License, so whatever they produced, will still be available to the general public. That of course includes the original developers. The investors will not be able to monetize any intellectual property of the technology they paid for while they go ahead and kill the company. Instead, their only option is to simply pick up their bags and go somewhere else.

To contrast that, the Mindquarry developers *will* be able to continue their work and possibly even build a new business model around it. After all, the technology they spent all their time on, is still freely available.

Did the investors realize this when they invested in their open source startup? And did they think of it when they decided to move out? Was it their intention, or not, or did they just not care?

It's very similar to the Kazaa/Skype/Joost way of working: the smart guys get to keep all the technology for themselves while they sell the 'brand' to someone else (eBay, for example). In this case, the technology is safeguarded by an open source license which makes the case even smarter. The code is not just in the hands of the owners of the brand, the investors, or even the smart guys that developed it. It's out there in the open, waiting for new people to pick it up and continue work.

From a customer point of view, it's an extremely bad situation to see the company that you've put your faith in go belly-up. But at least, given the open source nature of the system, *someone* will be able to continue the product they've invested in and build up some proper support around it.

It's a very good thing to see that this time, the bubble didn't just burst leaving nothing behind. Previous bubbles killed people's jobs, their investments and the products they've been working on so hard. Instead, there's still a tool, a community, a piece of technology that can be used and continued. All money and efforts are not just lost because of some silly investor pulling the plug. Oh no, they've actually done the developers a huge favor: they paid all their bills for 6 months, let them do whatever they thought would be good to do, and then got the hell out just before the open source process really got to kick in.

Now it's up to the brains behind Mindquarry to take benefit of this situation and leverage what they've been building up.

It would go too far to say that Lars and friends are in a much better situation now they got rid of their investors. They still need to get their lunches paid for, and without someone backing them up that will be very hard to do. They can use all the support they can get. I wish them luck.

But hopefully this experience will grow the product stronger, living out there in the open.

Go for it, Lars, don't let this opportunity slip away :-)

September 14, 2007

Cocoon GetTogether 2007: When in Rome....

After two years of backing the Cocoon GetTogether in Amsterdam, that cold rainy place in Northern Europe, I'm more than happy to let Lady Coco go to her new foster parents. The Cocoon community is moving back to its Mediterranean roots: Rome!

For the sixth time (it's becoming a serious tradition by now) I and the other Hippo brains will be there. And even if you have only the slightest interest in Apache Cocoon, you should be there, too!

Since I like the Cocoon GT so much, and want everyone to come on over, I'm hereby adding *all three* Cocoon GetTogether banners to my blog. So here you go.


Cocoon GetTogether 2007


Cocoon GetTogether 2007


Cocoon GetTogether 2007


;-)

See you all in Rome!

UPDATE: Obviously, the real reason for us coming to Italy is that some genius has translated Hippo CMS into Italian now. Nice job, Marco :-)

September 11, 2007

Developers update: Defining facets in Hippo Repository 2.0

By (not) organizing the hierarchy of the content repository upfront, but by allowing it to grow dynamically based on meta data, I hope we can adhere to David Neuscheler's Rule #1, which was inspired by Stefano's "Data first vs Structure first" blogposting.

In the core of Hippo Repository 2, we're building a faceted representation of physical folders in Jackrabbit. Those virtual trees are again exposed as 'normal' JCR nodes, and can be used to represent all kinds of data in all kinds of different structures purely defined by their meta information.

Since this a bit of an abstract concept, I've recorded a little demo movie of how this works using the Hippo Repository 2.0 Showcase. Please be warned that this is a developers-only screening :)

screenshot.jpg

Still a work in progress, we're aiming for a first release this November. Yes, we're still in Beta :). But not Web 2.0 style - we actually *like* getting feedback from people during development. Don't hesitate to checkout the code, read the Getting Started docs, and give us some feedback.

August 24, 2007

Hippo is hiring... Java pros!

Hippo is looking for kick ass Java developers to join our product development team. If you happen to know anyone that would fit the profile, I'd really appreciate it if you could get us in touch..

BTW, we're also looking for consultants, web developers and open source community builders.. In short, we need lots of people :-)

Job Title: Senior Java Developers (product development)

Hippo is looking for experienced Java programmers who would like to work in a dynamic and open environment that emphasizes individual initiative and is deeply involved in the Apache open source community.

We're expanding our Java development teams, and are looking for developers to work on our CMS, Portal and Repository products.

Profile:

* Academic qualification in IT
* Relevant work experience
* Good knowledge of Java
* Experience in developing server applications
* Affinity with open source, Apache in particular

Knowledge of the following items is desirable:

* Apache Cocoon, Jackrabbit or Jetspeed
* Content management systems
* Portal development

Hippo is the developer of the open source enterprise content management system Hippo ECM, a native XML content management platform, and Hippo Portal, an open source portal container.

The level of knowledge within Hippo is high, oriented specifically towards XML and Java. Staff are encouraged to investigate new technologies. In particular, emerging technologies from within the open source community and the W3C are followed closely. Where possible, Hippo participates in open source projects. Researching and developing new applications before the market is even demanding them, is a challenge we face every day.

Hippo develops software for a market that is changing on a daily basis. It is therefore important that we respond quickly to new developments, but all the while keeping an eye on the continuity of the existing products. As well as creativity, all staff are therefore expected to have a well-developed feeling for their own responsibility.

The company’s distinguishing characteristics are the short communication lines, a customer-friendly attitude and the use of the newest technologies, with personal creativity and an eye for detail being highly valued.

For more information, visit our website:
* www.hippo.nl

Or visit our community site:
* www.hippocms.org

Got questions? Don't hesitate to mail me directly at arje (@) apache dot org.

August 21, 2007

Hippo ECM platform: a pluggable, scalable, Java content management platform. Part II.

Yesterday we discussed our development schedule for the upcoming half year. In the next couple of months we will be working on Hippo ECM release 1.0, which contains Hippo CMS 7 and Hippo Repository version 2. Also included in this package will be Hippo Portal release 1 and Hippo DMS release 1. The result will be a complete package for content management in the enterprise. The last two components, Portal and DMS have been anticipated by Hippo for a long period of time already, but have never been released as separate software products. Combined with the fact that the numbering of our current version of the CMS and Repository is out of sync with each other, we decided to add clarity by combining all the different tools into one clear package called Hippo ECM.

Towards a new architecture

Hippo ECM will be focusing on providing the developer with a stable toolkit of open source enterprise content management components. Individual components of the Hippo ECM toolset will be available to developers setting up their own custom-built applications. But combined all components give the developer the power and flexibility of Hippo's XML querying background and a highly flexible and extensible content management user interface.

This extensibility is very important to us. Over the years we have noticed that our core public consists of developers using our components to create their own bespoke applications. And not so accidentally this happens to match perfectly with our own vision on open source: a diverse set of reusable components that allow developers to integrate with and develop upon, while at the same time providing a rich and user-friendly interface to the end user. There is no one CMS that provides a solution to all different users for all their different requirements. And we wouldn't want to claim that we do so. But we can get a long way, by cleanly separating concerns and providing a flexible plug-in architecture. And this is exactly what we are trying to perceive with our new release of Hippo ECM.

Plug-ins

For the very first release of Hippo ECM, we will stick to a very bare CMS system that provides no more than just the very very basic functionalities one can expect from a content management system. Pretty much all functionalities will be implemented as plug-ins that can be loaded into the skeleton system. Also, all different components will be extendable in such a way that developers can take an existing component and add their own functionalities on top of it. Developers will be able to share and co-develop their own components in the Hippo Forge, a community with SVN and communication functionalities for the development of Hippo plugins. On all the different layers in Hippo ECM, a plug-in architecture will be implemented. The user interface will allow widgets to be deployed that communicate with back-end plug-ins that have been added to the Hippo Repository. In this way, custom defined workflow actions can be added on repository level that require specific user input and behavior on the UI level, without having to change anything to the core CMS system. Apache Wicket has proven to be an excellent Web framework to develop component based web applications with full Ajax support, and we'll be happy to use it for our upcoming release.

Workflow

Workflow functionalities are handled from within the Repository solely, and only their presentation part will be handled from within the CMS user interface. When accessed from within a different application than Hippo CMS, the Repository will take into account document state and permissions, so no illegal actions can be undertaken. Where possible, workflow actions will be exposed through the JCR API.

Hippo Portal

For Hippo Portal, extensibility comes naturally since it has been developed as a portlet specification compliant environment (JSR-168). Portlets have been designed to separate presentation from back-end application logic, allowing developers to work together on an aggregated view of several underlaying applications without having to take into account their individual behaviors. We will be working with the JSR-286 group to define the portlet 2.0 specifications. Also, we will work with the Apache Wicket community to improve portlet support from within the Wicket Java Web application framework. Apart from the fact that Wicket is a strong framework for developing portlets, this will also allow running individual CMS components (as Wicket apps) within a larger Portal environment.

Hippo DMS

When it comes to document management, the plug-in architecture adds the possibility of allowing different content sources and workflows to be plugged in. In the future, Hippo Repository should be able to function as a layer on top of several back-end repositories, only referring to objects in an external repository from within its own global index. This allows existing legacy repositories or databases to be kept in place, only adding the need for an indexing trigger to be called whenever a change is performed. The global index will be able to define relationships between -- for example -- Word documents, e-mails, and regular XML content in the repository.

Up next

However, the most interesting part of the new Hippo Repository, and therefor the core of Hippo ECM, will arguably be its built-in faceted navigation support with virtual directory structures. But that's part of the next blog entry!

Stay tuned.

Arjé

July 31, 2007

Neglect Leads To Problems

Pretty annoying article on the website of a very respectable Dutch IT magazine:

Apache most actively abused for malware

(Source: Computable. Original title: "Apache vaakst misbruikt voor malware")

The article was inspired by a press release from anti-virus and anti-spam vendor Sophos. My FUD sensors go beserk...

Damn liars!

That's Geek Defense: if you're so angry that you're unable to come up with any real arguments, simply blame the Big Corporations and call them liars.

Now I'm a strong believer of open source, especially when it comes to Apache, but I'm not the kind of person to run around calling other people liars just because they're being critical. Criticism is good. After all, it's what makes open source work.

So, after reading the original press release and some of Sophos' security reports I feel a lot better. Sophos is not so evil after all. Actually, they're taking extreme care to be as independent as possible (of course they are). Their general advice - "make sure your Apache installation is up to date" - sounds reasonable and scarily familiar.

While reading along on the Sophos website, I notice that the original press release is not about Apache. It's about the latest hype in security land: malware that attacks webpages that might be hosted on Apache.

But as it happens, the press release is picked up by journalists and interpreted as being entirely about Apache. And in true Web 2.0 reporting style, they mesh-up their articles by using exactly the wrong bits and pieces from the wrong press releases and blog entries all coming from the same company. But let's be honest here: no press release has ever been sent out by a commercial company if they weren't in it for the money. Sophos is not saying anything wrong, it's just dropping some information here and there, waiting to be picked up by journalists that can't wait to write something that will shock their audience.

Continue reading "Neglect Leads To Problems" »

July 26, 2007

Hippo Enterprise Content Platform: a pluggable, scalable, Java content management platform. Part I.

We've jumped into our code suits and have been plumbing like crazy on the next release of our CMS platform. In the upcoming series of blogpostings, I'll try to dig into why and how we want to accomplish the goals set forward in our roadmap. If you feel like participating, tune in @ http://www.hippocms.org/display/HREPTWO, or subscribe to our mailinglist at hipporepos-dev-subscribe at lists.hippocms.org.

Part 1: How we got here

The first stable distribution of Hippo CMS version 6 was released in June 2004. With this new release, we introduced a fresh architecture where the CMS and its content repository were separated components running as different server applications. This separation of concerns on setup level has been one of the main drivers for the success of Hippo CMS v6.0. It allowed for complex integrations with external systems while keeping a strong focus on an easy to understand user interface for the end-user.

Infographics%20-%20abstract%20process%20-%20met%20java%20adapter_small.JPG

Continue reading "Hippo Enterprise Content Platform: a pluggable, scalable, Java content management platform. Part I." »

July 13, 2007

On predicting the future, selling software and Restating the Obvious

My favorite quote from the Hitchhikers Guide to the Galaxy:

"One of the things Ford Prefect had always found hardest to understand about humans was their habit of continuously stating and repeating the very very obvious, as in 'It's a nice day', or 'You're very tall', or 'Oh dear you seem to have fallen down a thirty-foot well, are you all right?'"

Me presenting at CMProsAt the CM Pro's Future of Content Management Summit last year, a sales person from a competing well known content management vendor compared a content management system with Microsoft's Excel spreadsheet. In his "vision for the future" content management is an activity that should be "as common" as working with an Excel spreadsheet:

"[the sales guy] told us [CMS vendor X] wants content management tools to be as ubiquitous as Excel, and either their Windows client or AJAX web-client should be available to any editor. By focusing on usability, he believes the role of (technical) webmasters will become less important while enabling many more content managers to focus on getting the information to the web."

This must've been one of the most obvious statements I've heard in a long time. I'm actually surprised someone has the guts to climb on stage and state that '[web] content managers should focus on getting the information to the web'. Rocket science, guys, and a pretty damn brilliant sales pitch, too.

But, instead of bashing the guy for saying things like this, I should better listen to him and ask myself what the deeper meaning is of his words.

Continue reading "On predicting the future, selling software and Restating the Obvious" »

July 4, 2007

Information patterns: The mood board

moodboard-small1.jpg
Here's a picture of the mood board I've been creating for our new house. From all the interior magazines we bought (about a dozen or so per week), I ripped out all the things that really appealed to me and pinned them on to the board. After a while, the pattern matching inner self will start recognizing resemblances between pictures that before had absolutely no apparent connection between them. It's a form of visual brainstorming, material mind mapping, graphical note taking, or whatever other fancy wording you prefer. By thinking out loud (on a board), you start to get some feeling for what it actually is that you like in the stuff around you. Or at least, the stuff you'd like to have around you.

For example - I appear to have a thing for green, although I didn't really know that. Whooo - scary. Adding color to your house can be scary. It's so much easier to just stick to the usual whites and low-contrast color schemes. Sticking out by adding color has that influence on your reputation, you know. People could suddenly think of you as someone

  • with an incredible sense of style, or
  • with a complete lack of taste
or even
  • as that very sad person, desperately trying to be hip and modern

And usually, I end up with the latter. Or at least - that's what I'm afraid of :-)

Why did it have to be green?? Green is scary. I'd never have opted for a green couch if it hadn't popped up on the mood board. And now it did, without me trying to be desperately hip again, and I suddenly find myself ordering a green couch with great confidence that that is the color I want. Excellent!

So many things you don't know about yourself, and all you really need is some organized randomness to see it.

Now go ahead and click on the image to be shocked by my horrible sense of style and let me know :-)

June 26, 2007

Working from New York

My plane touched down on Saturday afternoon, so I've had about 48 hours of New York and I guess that means it's about time I told folks at home what I'm up to...

blog%20ny%20tower.JPGIt's Monday evening, 21:00 hours, and I'm sitting in Bryant Park, together with a thousand others watching the big HBO screen that will soon start showing the 1951 black-and-white movie "The Thing From Another World". Again, I'm impressed by the extremely friendly Americans, but although I'm sure they are, I'm afraid it's not just that, but also my standards that are horribly lowered by the blunt Amsterdam bar staff.

My time has been mostly consumed by writing slides in my room, going out for a cup of Starbucks coffee (with pie! with cake! with chocolate fudge brownie!), and riding up the elevators again to my luxurious temporary office. I've been sick for a week, unable to do any preparations for my presentation at the Enterprise Open Source conference tomorrow afternoon. Got the antibiotics just in time before I hopped onto the plane and arrived pretty healthy in the Big Apple. As a consequence, I'm seeing an awful lot of my screen and a lot less from this wonderful city.

And what a wonderful city this is. Living up to their right for their Pursuit of Happiness, the New Yorkers want every little bit of life to be as comfortable as can be. And because there's so many of them stacked in office buildings 100 stories high, every street block appears to be a little village on its own. As a result, nearly every block houses one or two Starbucks shops, several deli's, barbers, and everything else you could possibly need. And it's all so *huge*. Especially the cars; and the coffees.

My trip to Chinatown, yesterday afternoon, was incredible. I was afraid it would be crowded with tourists (as is Amsterdam Chinatown), but instead it's crowded by, guess what, Chinese. I had a pretty heavy beef noodle soup along with some pork chops (a specialty of the house that I couldn't refuse), which arrived in about 2 minutes, and cost me a total of 6 dollars (roughly 4 euro's). I wasn't hungry for the rest of the day, but apparently that is no reason to not keep thinking about food all the time judging by the permanent proximity of food. Although it's not as bad as in Austin, Texas, where you're supposed to be drinking soda's continuously as well. Over here, I don't see as much soda drinkers, most merely stick to the coffee. And somehow you can get away with drinking such incredible amounts of coffee, as I seem to have been able to do. Normally, I can't take more than 4 regular Hippo cups a day before I go shaking all over, ending my day completely unable to concentrate. Four of those cups is roughly about the size of 1 'grande' Starbucks coffee. Drinking coffee over here feels more like drinking warm chocolate: a cappuccino tastes like milk with a faint spur of coffee. But they stimulate you to raise your intake to such large quantities that eventually, you will take in some caffeine.

blog%20ny%20baseball.JPGSo far for the coffee. My next experience was Central Park, last night, where I was pleasantly surprised by the friendliness of the enormous amount of people in it. Apart from all the other niceties of the park, I really enjoyed the baseball fields where groups of young people, men and women, black and white, were playing their games. It was such a relaxed environment, with so many different people. Some were really good at it, and some were pretty horrible, but that didn't matter. They all had a fun time. And the nice thing about baseball is that you don't have to be an incredible athlete - if you're doing your best, you risk no more than a hundred meters sprint or so.

This day ends with The Thing ("Captain, it's alive!") in Bryant Park, a green open area in the middle of Manhattan, where a huge crowd is now enjoying the screening along with the food and drinks they brought along in their brown deli bags. And so am I, but I got to go now and get some rest. My jet lag is still around, and I need to get some sleep for tomorrow. Apart from my talk, Adam Steidley from Bluenog is supposed to take me out somewhere to a bar he 'used to play darts in'. Sounds like a challenge!

June 19, 2007

XML in the fast lane

xml-car-small.JPG

rrrrrrrrrrrrright..
(traffic jam in Brussels)

June 5, 2007

Information patterns: Keeping tunes apart

At 9:30 in the evening, I go out to stand still for a moment and listen. Just listen. cows.JPG
It's right before sundown and the birds are singing their final songs for the day. They still have a hell of a lot to tell each other. There's one bird in the far right corner of our garden that has an impressively clear voice and a whole arsenal of bright songs. When he sings, it sounds like someone's trying out all of the different tunes available on his cellphone. The spectrum of his repertoire goes all the way from a crying dog kind of sound, a jolly “boobeedeba-badoo”, up to a fugue from Bach. I'm not sure if it works well with the chicks as I hear no one answering his songs, but it's is beautifully playful and the bird's perseverance demands some respect.

In the distance, I can hear the cows talking to each other. This is France - I'm on a two week vacation - and cows over here seem to have an incredibly large amount of land and grass available for themselves. They really need to speak up to reach their buddies on the other side of the valley. And the nice thing about it is that you can clearly recognize the others talking back. It's a soft and comforting sound, as the girls mow slowly and at ease. Each herd, about 20 cows in size, has a huge angry bull protecting his ladies or something, and they get to do the angry talking with the other bulls in the distance once in a while. It's a grunting kind of sound, deep and dark and pretty scary, too. Some days ago we heard the bull closest to us pretty much *in* our garden, and it freaked the hell out of me.

But my ears are now focusing on this one bright singer in our garden, and I'm ignoring all of the other wonderful singers around me. I don't know their names, and it's pretty hard to identify each of the birds around me without getting distracted by the others.

When I'm trying to focus purely on what information comes in through my own two ears, the amount of voices talking is actually pretty disturbing. I guess that I can hear about 20 different birds discussing their properties, while 5 cows are talking about grass and flies, and then there's the hundreds of flies buzzing around me, and the goats of course. What I don't hear is the underground inhabitants; the mole that I noticed yesterday (and there's probably more than one judging by the number of mole piles in the garden), all of the snails and worms, and all of the other little creatures living right under or just above the surface. It's a good thing that I'm able to ignore most of the sounds around me. There's so many voices that demand attention.

Did you know that whales are capable of communicating with each other even when they're thousands of miles apart? Their tune is so deep and water seems to be such an incredible carrier for sound across long distances, that they're able to talk to each other at such enormous distances. Apparently, we still know very little about these animals and their ways of communicating is still covered in mysteries. But these guys have had their world wide web in place long before mankind even existed. And they are probably very good at keeping tunes apart too.

May 8, 2007

Open Source in the Netherlands (ApacheCon EU 2007)

Damn, it feels good. The Apache conference has been a great success, thanks to all visitors and of a bunch of really great people behind the scenes. Hippo has been pushing hard to help out as Gold sponsor, organizing infrastructure, people and communities. I'm so happy.

But hey, somewhere, I feel a little bit disappointed. I had expected *much* more from the Dutch open source community. Where'd you all go?! Looking at the stats, the biggest portion of attendees were from the US, followed by the UK, Germany and after all that, finally, The Netherlands.

For some reason, and this is a feeling I've had for much longer, Dutch open source people seem way too much concerned with their own little Dutchy communities.

Hi there! Playing open source means playing out in the open, out in the world! We have such a small country, why don't we talk to the world instead of to ourselves? We've always played a big role internationally. We've sailed the seven seas, we've inhabited countries, we've been traders for ages... And then there's the internet, opening up literally *all* borders (not just the Schengen ones), and what do we do?

  • Dutch government invests heavily in open source by developing a pure-Dutch rip off of Sourceforge (what the ??)
  • Dutch public broadcasters invest in a Dutch only open source content management system that is virtually dead now and no longer supported because only selected (Dutch) members are allowed to contribute to it (and they're all doing something else now - go on, let the newcomers in!)
  • Dutch initiatives for open source conferences get lots of recognition from the media, but as soon as the guys show up that practically invented the web as we know it (the HTTP protocol, the Apache webserver) - all important factors in making open source into a worldwide success.. We run away scared to our little teeny Dutch open source initiatives...?

Where's the innovation in all this? Where is our government's money going? Only investing in local initiatives that will stay local forever, does *not* work with open source!

Babies born in The Netherlands practically learn to speak English before they get to speak Dutch. Why the Dutchy thingy? We could be running this show!

Next year, ApacheCon will be back in Amsterdam again and I'll put all my energy into making it a *much* *much* bigger success. We need to get this little country back on the global map!

Suggestions are welcome.

Update 09-05-2007: Due to some mailserver problems, posting comments resulted in an infinite loop on the server... Sorry about that.. I fixed the comment script, please feel free to send one in!

January 8, 2007

Got Chinese?

So,

Does Hippo CMS (and as a consequence, Apache Cocoon) support the Chinese character set?

Here's part of the answer:
heading.JPG

Continue reading to see how I set it up within 10 minutes.

Continue reading "Got Chinese?" »

January 5, 2007

Biking sucks- running is hardcore

Now. I don't agree. The Apache sporting team goesbiking?? Real Apache dudes run!

Have fun, Andrew, I prefer real athletics!! Heck, I bet the running team will beat the biking team!! ;-)

December 20, 2006

5 things you don't know about me

Well thanks for the tag, Andrew! I was actually expecting a trackback from you on my running efforts instead of this... But I fully understand that that would've forced you into renaming your weblog, and we can't have that, now can we? ;-)

Anyway, here goes.

Five things you don't know about me:

  1. I once had a cat named Supercallifragilisticexpialidocious
  2. I get claustrophobic on planes
  3. I've tried reading Godel, Escher, Bach several times but never made it past page 200. Although I pretend to know all about this fantastic book, I don't. Same goes for The Origin of Species. What a shame! :-(.
  4. I used to row a lot
  5. I used to play drums, had Cubase running on my old Atari 1040, with a sampler and midi keyboard attached to it, and was the beat master for the greatest highschool Hiphop band ever ;-). Yup. You didn't know that! :)

Next up are Jeroen Reijn, Maurizio Pillitu, Eelco Hillenius and Martin van den Bemt!

December 15, 2006

New year's resolution: Apache running challenge

Ok, so here's my new year's resolution: I will run a minimum distance of 15 kilometers a week, spread out over an average of 2.5 workouts.

Because I believe that a tool can make all the difference (yep, I must still be a geek), I bought some shiney new shoes and a Nike Plus connector to my 8gb iPod Nano. My current running progress on the Nike+ site
I've got a heartrate monitor too (from back in the days, when I was still a rowing hero), so when running I'm entirely gadgetted up. That should lower the barrier for putting on my shoes every night after a hard days' work! :-)

The Nike+ thing is awesome, and Apple has in all its ingenuity put up some really great music compilations in its iTunes database. The combination makes the whole running experience so much more fun. Yep, I'm a happy running hacker now.

After your first run with the Nike+ thingy, iTunes will upload your training statistics to the central Nike server where they will probably do horrible things with all that data and sell your lap splits right away to your insurance company, who will laugh about them and after that send you a notice that they've doubled your monthly fee because your condition sucks so badly. Nevertheless, it's fun to see what you've achieved projected in this nice and geeky Flash user interface.

But the really cool thing is that you can form a group and compete against each other or try to complete a goal together!

So here's my call to all Apache people that could lose a pound or two (pretty much all of you I guess :-p ): buy yourself some gadgets this Christmas and join in on the Apache Running team! The goal is to all run 100 miles starting on January 1st. The challenge is completed when *all* runners have finished :-)

So, in my case, it should take me about 10 weeks to finish...

Who's with me!?

December 13, 2006

Javapolis 2006

Unbelievable... I didn't know it was still possible to hold a Java conference with 2800 attendees and *no* WiFi access! :-(
Oh yes, there's a signal, but it just doesn't do anything. And given the sad look on the faces of people sitting around me, I'm not the only one!

So, I had to get back to the hotel for some old school 6 euro's per hour WiFi access ... But hey, it works :)

If you are at Javapolis, are able to read your email, *and* care for a beer or two later on in the evening, send me a text at +(thirtyone)-six-185167-seven-eight :-)
I got no clue how SPAM sensitive phone numbers are... ;)

-- Arje

November 6, 2006

A Widget Should Be a Uniform Object

Building a large web application that *must* have extendable UI widgets in Cocoon is very hard to do. We've had this with our applications, since we have to tell our community to learn almost every single aspect of Cocoon in order to be able to extend our widgets: the sitemap, Java, XSL, Flowscript, Cforms, JXTemplate, Javascript, CSS, HTML, and many more. If you miss out on any one of these technologies, you'll be lost. Extending a certain component (aka widget) means you have to implement extension points in the original code pointing to a possible extension. It requires hooks into the pretty much all of the Cocoon parts, like the sitemap, JXTemplate, XSL, Flowscripts, and all the other different techniques. Each one of them requires a very different way of handling extensibility.

This is a bit of a scary point to make, as I'm afraid I'll get ass-whooped by Cocoonistas that believe this is all very well possible with CForms + flowscript. And maybe it is - but it's just a little bit hard if you're not a Real Cocoonista :-)
It raises the question of whether there should be a widget framework in Cocoon proper, or whether I should move away from Cocoon and find a suitable alternative outside of it. Or maybe have an integration of the two.
Don't get me wrong - the Hippo CMS UI is completely seperated from the website delivery layer, which can (and sometimes should) still be done in Cocoon! You know I love her and I always will ;).

But we must move to a more object oriented way of writing web application UI's, and consider doing this all in plain Java. A UI consists of components, sometimes referred to as widgets. I prefer the term widget as it makes it very clear that we're talking about user interface components, as opposed to components that only live on the serverside to provide real application logic.
So what are the requirements for such a widget framework? And are there any suitable options?

Widget framework requirements

Basically, these are the points that need to be taken care of by my favorite widget framework:

  • A widget should be a uniform object, with it's own behaviour, methods and events
  • The presentation of a widget must be properly seperated from its behaviour
  • Any logic provided by a widget is 'behaviour', which might need some serverside processing, but does not handle any application logic
  • Widgets must be extendible, both in presentation and in behaviour (also see discussion on HippoCMS-dev)
  • Designing the widget's presentation should be fairly easy to do, and should not limit the design of the user interface (at least, not too much)
  • A widget's behaviour must be unit testable
  • Widgets are able to group other widgets
  • AJAX support in the framework should be transparant and not obfuscate behaviour code (too much)
  • Behaviour should be codable in Java

Matching frameworks

Wading through the enormous list of AJAX web application frameworks (don't forget to check out Manageability), a couple seem to be very capable of doing what I want them to do.

On my shortlist, there are the following Java web app frameworks:

Cocoon + DOJO

http://cocoon.apache.org, http://dojotoolkit.org/

We know our way around in it, but it has the extensibility problems I mentioned above.
Because of Cocoon's design architecture, presentation and behaviour are very well seperated. However, a widget is not a uniform object, which causes trouble and makes inheritance very hard to do. Unit testing widgets in Cocoon quickly resolves to hard to develop HTTP unit tests. Changing a widget's behaviour can be painful, given the amount of different coding techniques needed to perform the job.

Echo2

http://www.nextapp.com/platform/echo2/echo/

Would completely replace Cocoon (in our case). The Echo analogy is a pure Java way of thinking. Translates parts of your Java code into Javascript to execute on the client. Allows for inheritance. Drawback: makes a lot of roundtrips to the server (slow), and there's no way to work around any weird behaviours. Could become a big burden. What about the license?

Google Web Toolkit

http://code.google.com/webtoolkit/

Another standalone framework, and as such a complete replacement for Cocoon. Compiles your Java code into Javscript using a proprietary compiler (which is not very unusual, BTW).
Semi-pure Java, forces you to keep thinking about the clientside Javascript you're generating. Loads ALL user interface code into the client at startup. UI response is fast. Still requires plenty of workarounds to get things done. Has lots of limitations in terms of the widgets it supports. License is OK, but it's impossible to predict what Google will do with its compiler?

Wicket

http://www.wicketframework.org

Makes component/widget extendability a breeze. Needs Dojo or any other library for AJAX. Easy to implement very specific HTML / Javascript functionalities if needed. Less limitations. Needs only 2 levels of knowledge: it's either 'Java' or 'HTML-CSS-Javascript'. Does that work?
Drawback: Still requires HTML / CSS and Javascript coding.
Nice: has a concept of both WebApplications and PortletApplications. According to Sylvain, only replaces the Flowscript/CForms part of Cocoon and not your favorite Cocoon pipeline plumbing. Is currently in the Apache Incubator.

Prototyping

We'll be running some prototypes with these libraries. If you have any additions to this list, or ideas, please comment. We have to take into account the fact that there's been a lot of people writing Cocoon-specific extensions to Hippo CMS, so any feedback from people in that field would be more than useful!

Thanks,

-- Arjé

September 6, 2006

Behind the scenes of the Cocoon GetTogether...

Kirsten and I got married last week after being Cocoon GetTogether for about 5 years. Hurray! We had an excellent day in the sun with lots and lots of friends, and a really nice week in Florence afterwards. Excellent! I'd like to thank all of my Hippo, Luminas, Sourcesense and Apache buddies who where there to see me wearing a proper suit and shiny new ring :). And to the rest: sorry, gals, he's a married guy now! :-)

Lady Coco wants it all
And just when you think you've had it all - organizing the location, the food, the music, the rooms, the beds, the drinks, the speakers, all the official stuff and of course all of the fun stuff - it hits you right in the back: there she is again, that other lovely woman in your life. She calls herself Coco, although "Cocoon GetTogether" is her real name and she's *not* happy that you've left her for some other chick.

So there you go again, hunting down speakers, attendees, sponsors, rooms, diners, drinks, hotels, proposals, WiFi access, whiteboards, power outlets, yada, yada, yada... The lady demands fulltime attention. Again!

Counter at 39
But, heck, she's fun, and I'm looking forward to having everyone back in Amsterdam in October again to relive the three-day Cocoon GT rollercoaster. Currently, the counter is at almost 40 attendees from 7 different countries, which is quite a lot given the fact that the program is not even online yet.. A really good sign. This year, the hackaton days are free, thanks to our wonderful sponsors S&N (thanks guys!) and my company Hippo. Now there's *no* excuse anymore for you to skip the hackaton days, it's just too much fun to miss. And really important for Cocoon, too!.

Pizza hacking
In the meantime, I've been talking with the venue about doing a pizza-and-beers evening hacking session on monday, October 2nd. Also, the WiFi access will be much more improved after last year's four o'clock automatic WiFi shutdown troubles. There'll be plenty of power outlets again (certainly after I've seen what a shortage of outlets can do to a big crowd like this year's ApacheCon Europe in Dublin..).

More room
Also, there's still the option of using an extra, smaller room during to the hackaton or conference days for tutorials or other sessions. Although the budget might allow it, I'm awaiting any brilliant ideas for the room, otherwise I will cancel it and use the money for something more appropriate. So, go on, don't be shy!

Hackaton agenda
On October 2nd and October 3rd, the days before the Cocoon Gettogether 2006, there is a Hackathon foreseen at the Felix Meritis Foundation building in the center of Amsterdam.
It might be good to start thinking about how we'll be filling the two Hackathon days.. Please jot your ideas down on the Wikipage!

The main idea is to use this page to hack together some agenda for both days. Please make this a joint effort. There's one big moshpit-like room available for us on the 2nd or 3rd floor, which can hold up to 60 or 80 people.

The Hackathon will start on both days at 9:00 AM and ends around 18:00. There'll be food on both days, on monday in the room itself and on tuesday outside.
In the evenings the room is available for use until 23:00. There's no evening program defined, but anything goes, so jot down any ideas on the Wikipage!

Hackaton infrastructure and logistics
There will be:


  • food

  • drinks

  • long tables

  • WiFi access

  • some hubs for wired access (bring your own cable!!)

  • plenty of power outlets

  • fairly large whiteboard (will 3 normal ones do?)

  • 3 flip charts

  • tape to assemble pages

  • beamer + screen to beam on


Other things needed?

Conference day (wednesday) infrastructure and logistics
The talks will be in the same building as the hackaton, but we'll have a much nicier room available that can easily hold around 120 people. There'll be:


  • chairs

  • food

  • drinks

  • (some!) long tables

  • lots of WiFi access

  • plenty of power outlets

  • big beamer + screen to beam on

  • all audio gear you could dream of

  • CocoonGT shirts!

After the conference, there'll be a nice reception with drinks and snacks.
What am I forgetting??? OMG - panic rushes to the head all over again ;)

See you soon!

-- Arjé

September 5, 2006

Reminder: send in your Cocoon GetTogether 2006 talks!

Because I was on holiday, I forgot to send out the RFP reminder for the Cocoon GetTogether 2006... :( Therefor, here's a short reminder, giving you all some extra time to send in your proposals!

Please send in your proposals for talks before tomorrownight:

September 6, 23:59 CET

See http://www.cocoongt.org/Request-for-papers.html for guidelines. It can be really short, as long as there's some basic description in there so we can start setting up the program.

Thanks, and looking forward to meeting you all (again) in october in Amsterdam!

-- Arjé

August 19, 2006

Moving forward with the 5th Cocoon GetTogether... RFP!

The Request for Ideas questionnaire on the Apache Cocoon users and developers lists demonstrated a wish to focus more on end-user experience, and reallife, down-to-earth demonstrations of best practices around Apache Cocoon.

After some mailing around we've collected a big bunch of wonderful ideas and now is the time to start turning them into real talks!

If you feel like doing a talk or a demonstration on the use of Apache Cocoon, please take a look at the below list of ideas and see if there's one or more subjects that you would like to talk about. Talks on different subjects are most definitely welcome! The list below is only there as a guideline to help you in finding a good subject, not to limit your originality.

ANYONE is invited to send in a proposal - even if you prefer doing a really short talk, or perhaps a four hour tutorial, don't hesitate to send it in!
And no... You don't have to be a committer to do a talk :)

Deadline for RFP'S: September 4th, 2006, 23:59 hours CET (Monday evening)

Ideas for talks

  • Success stories (why someone chose Cocoon, for what, what was great and what not?)
  • Comparison of Cocoon with other web frameworks
  • Why should I upgrade to 2.2?
  • A "meet the Cocoon devs" session at the hackaton for users. This session should be moderated and the topics come from the participating non-committers.
  • Perspectives of the portal block, relations to other Apache portal projects
  • Some shorter, flashier presentations of what you can achieve with Cocoon, right from the core developers
  • A session with "kowledge flashes", 5 to 10 minutes per subject
  • Some demos of actual Cocoon sites, with explanations of why, how, etc
  • The secret gems of Cocoon (what do people not know about that is really cool)
  • A session like "moving from xsp and sitemap actions to flowscript and jxtemplate" to introduce existing users to the latest Cocoon techniques and guide them in upgrading their older bits of code
  • ..... and many, many more! See http://www.cocoongt.org/Request-for-papers.html for the full list.

And a final note from Bertrand: "Talking to community members, I get a feeling that we're using Cocoon in wildly different ways, and I think it's one of its major strengths - let's show this at the GT!"

Proposals should be sent to: info at cocoongt.org.

Hope to see you in Amsterdam in October!

August 14, 2006

Cocoon GetTogether 2006 Registration is open!

After quite a long period of talking to other people about the 5th Cocoon GetTogether, the registration finally went live this friday. Book your seat!There's been a *lot* of ideas for talks from the user community and I really think this will give this year's edition a power boost towards a much more user oriented conference. This year's Cocoon GetTogether will be interesting for an even broader public than last year's event, targetting at both existing users and newcomers that want to know why Cocoon is the *ultimate* platform for developing large-scale XML driven websites and applications.

This year's GetTogether will be held in Amsterdam, The Netherlands, on October 4th. The traditional hackaton will be on October 2nd and 3rd. Register at www.cocoongt.org.

There'll be a big focus on demonstrating the practical side of Cocoon - with shorter, flashier demonstrations of live websites, best practices and how-to's. Some of the subjects that have been suggested on the mailinglists include:

  • Success stories and live demos of actual Cocoon sites
  • A "guided tour" through Cocoon with the Cocoon lead developers
  • Comparison of Cocoon with other web frameworks
  • The secret gems of Cocoon
  • 10 Reasons to use Cocoon
  • The Funky Cocoon AJAX tour (with lots of samples!)
  • Real numbers: performance, hardware and deployment topology
  • ...... and many, many more!

Of course, apart from all the "show me the goodies!"-demonstrations, there'll be the traditional 2-day Cocoon Hackaton before the event itself, which is a really good opportunity to see what is going on in the Cocoon community. Now, don't be shy! The hackaton is free for attendees to the conference day (thanks to our sponsors!), so be there! :-)

All in all, this year will be a lot of fun, and will give newcomers to Cocoon a really good view on the why and the how of Cocoon.

If you really want to know what Cocoon is all about, you got to be there!

The early-bird registration is *now* open. If you register before September 12th, you're only paying 99 Euros for this information-crammed event!

See you in October!

-- Arjé Cahn

July 28, 2006

Ard @ apache.org?

For those of you who don't know the guy, here he is this morning as he found out that Reinhard proposed him as a Cocoon committer. Note the bottle of champagne that we always have ready for these kinds of occasions :-).




(More pictures..)

It's still very early in the voting process, but being told in public that you "are an expert for well-cached Cocoon applications", "know a lot about Cocoon Forms and Cocoon in general", and "have a good sense of humor", is a *huge* compliment. Way to go, Ard!

July 25, 2006

Open Source CMS Award

Packt Publishers announces their Open Source CMS Award.
The publisher is keen on stating that "Open Source should be promoted, supported, and sustained whenever and however possible", which is exactly why I baldly nominated Hippo CMS for their award :).

Behind the scenes, Packt is probably using this award (apart from any marketing buzz generated) to find new subjects for their books to publish on. Having a book published on your open source project is a really good sign for people that are still in doubts about whether or not to move away from any closed source alternatives. When talking to possible customers, I always bring along one of the Apache Cocoon books to show them physical proof of the existence of the project. It's so hard to see how strong an open source project is for users as they're unable to estimate the value of all the mailinglists and Wiki's around it. Just showing them the book is a real proof for them that someone has invested time and money into gathering knowledge and taking the risk of publishing it, knowing that it could be outdated almost instantly as open source projects tend to evolve rapidly. For developers, having a book published on your project is the physical prove that your API is stable enough to be published in the drastically read-only and costly medium print is. Having more and more books published is really good for the adoption of open source. Having more and more publishers publish on Open Source probably even better.

In their Open Source royalty scheme, Packt promises to be "paying royalties from each book they sell to the open source project it is written on." Paradoxically, having both "Open Source" and "royalties" in one sentence, it's a really good initiative as it encourages developers to stabilize their project so the publisher will spend money on their project. Love it.

BTW - Carsten, Matthew, when will we be able to read your transcript online? It deserves to be published online! Maybe a little CMS behind it so we can keep it alive and up to date? :)

Via Bertrand

July 21, 2006

Rolling my own Firefox searchbar

Since I'm searching the Hippo CMS website almost full-time, I've created a funky little Firefox search engine plugin for it:
Install the HippoCMS.org Firefox search engine plugin!

Rolling your own Firefox searchbar

I've used the following excellent Confluence-to-searchbar sample: http://confluence.atlassian.com/display/CONFEXT/Confluence+Firefox+searchbar Also, there's a nice o'Reilly hacks page to help you out.

And a word of advice; if you want to roll your own searchbar, do take note of the warning on this page:
http://www.mozilla.org/projects/search/technical.html

When using the window.sidebar.addSearchEngine() function, the basename of the engine URL and the icon URL (in this example, "mozilla.src" and "mozilla.gif") must exactly match, except for the filename extension.

(Oh my.. Why?!!!?)

Removing search engines from firefox

Your personal search engines are stored in your user dir, under Mozilla/Firefox/Profiles/some-profile/searchplugins. The global engines are in the Firefox program dir, under searchplugins. So if you want to get rid of the silly Amazon and Ebay engines, now's your change! Just delete both the .gif and .src file for each engine and reboot your firefox.

Have fun!

July 5, 2006

sAnt: Shared Ant - a community shared build system

Good to see that Johan has just opened up his ideas on sAnt, "a community shared build system", on the public Hippo Wiki.

There you go, Sylvain! :-)

June 29, 2006

ApacheCon EU 2006 - Apache MyFaces

Notes from "Introduction to Apache MyFaces" by Matthias Wessendorf, et al

Introduction to JSF

  • Framework for Java Web Development
  • JSF is a standard
  • Easier than JSP/servlets: no need to look up objects
  • Plain Old Java Objects
  • Managed bean facility "little bit like spring but more basic"
  • JSR 127, 252 --> 2004/2005
  • JSF 2.0: AJAX, more UI... 2006?
  • Many IDE's, 3rd party components
  • Implementations: Sun (RI) or Apache MyFaces, plus some others

Introduction to MyFaces

  • UI components similar to Swing
  • HTML renderkit (or WML / ...)
  • component oriented + even driven
  • bind backing bean to JSF component
  • Server side validation, client side is upcoming
  • 1.1.4 is current stable release, spec 1.1 compliant
  • JSF API: javax.faces.**
  • JSF Spec: org.apache.myfaces.**
  • Structure: Core (API + runtime) + components on top of it
  • There's portlet support

JSF lifecycle

  • restore view
  • apply request values
  • conversion & validation (request data stored in component)
  • update model (call setters, write into backing beans)
  • invoke application (process beans, do database stuff)
  • render response

there's a shortcut between validation and response rendering

JSF Hello World

  • Best practice: NO HTML in JSF files (=JSP file)
  • attach bean properties in JSF file
  • two way framework: presents bean properties, and writes them back bind to value binding (bean property) or method binding (bean method call)
  • method returns a string
  • faces-config.xml + managed bean + JSP file
  • faces-config.xml defines what to do when what response is returned by method

Internals

  • ExtensionsFilter: in web.xml,

MyFaces in Action (Tomahawk)

  • use value attribute for every component to pass in data
  • default components are available
  • example: calendar component: javascript popup or static html
  • example: upload component
  • example: tree component
  • facets define layout
  • setup tabbed panels

Custom validators available

  • email
  • regexp
  • equal (passwords)
  • etc

Presentation

  • Use Tiles for page composition (reusable page components)

Application transaction

  • By default, lifetime of bean is bound to the user session
  • This causes problems when having multiple windows open
  • New scope: conversation scope

June 28, 2006

ApacheCon Europe 2006 - conference fever

We've landed in Dublin for this year's ApacheCon Europe. This year's conference is at the Burlington hotel, quite a nice venue.

How to please developers

Give them lots and lots of food. Good food. Meat pie, lasagna, sweets, plenty of cakes, drinks, smoked salmon, snacks, cookies, even try to sneak in some vegetables, and of course provide them with unlimited amounts of hot coffee. For those of you who know me, you know that I'm extremely biased when it comes to this part of Kent Beck's Extreme Programming rules :).

But on the other hand, it's funny to see that a traditional place like this still spreads out plenty of good-old pencils and paper all over the place, but lacks enough current points for all the laptops...
Nevertheless, the wireless connection is great and I can't find anything else to complain about :-). Thanks, ApacheCon guys and girls!

Conference fever

But there's too many options... It's soooo attractive to get lost in all the incredible geeky social stuff going on. It paralyses having to choose between all the different options:
  • Write on blog
  • Follow the IRC channel
  • Check the ApacheCon Wiki pages
  • Read someone else's blog
  • Shoot some pictures
  • Do some 'real' work
  • Fix bugs, commit code
  • Find all the right tags on flickr for "ApacheCon" / "ApacheConEU2006" / etc...
  • Upload pictures (but find out that you left the cable in the hotel)
  • ..or even listen to the speaker

April 28, 2006

Setting up a documentation framework - part 1

My biggest problem with using Wikis for writing software documentation is the fact that the aggregated information as a whole is stateless; it's virtually impossible to cross-cut a Wiki and ask "give me the state of the Wiki when version X of the software was released". And if it were possible, it would still be impossible to fix bugs in old parts of the documentation (ie - in a branch).

Version your docs

Rule of thumb: it should be very clear which version of the software the current documentation you're looking at refers to.

Writing docs in a version controlled system (SVN / CVS) would certainly fix this. But authoring this kind of content means falling back to editing raw XML manually, using only a single HTML field if you're lucky.

References

Also, I'd like my docs to be a little bit smarter than just presenting simple pages. They should automatically do proper cross-referencing. The docs should figure out related sections themselves and add glossary lookups for any hard to define words in the content.

Use rich features, but reuse for print

It must be possible to have an interactive on line edition and a PDF print edition that skips all of the interaction and rewrites links within the documentation as proper footnote references. It should be easy to add small Flash demonstrations within the on line docs, without messing up the print documentation. I want to add plenty of Flash demo's – both for the user docs as the dev docs (Ruby style!). The print docs should point to those Flash movie URLs on line from within a nice little footnote. That shouldn't be hard to do using Apache Cocoon... Just need to be very sure about the XML structure used in the source documents.

Keep track of dependencies

Upgrading the current state of the complete documentation to a new version should be really easy. First TAG the current version, and up the version numbers in all locations within the content. Come to think of it, should documentation fixes in an old version of a particular section automatically be propagated to the newer generations too? Apart from all that, there needs to be some smart way of finding all references to other software packages and their version numbers. In plenty of occasions on the HippoCMS.org documentation, there are references to “Hippo Cocoon plugin v2.0.8” from a section on Hippo CMS v6.03. When v6.04 of Hippo CMS comes out, there's probably going to be a more appropriate version of this plugin available. Maybe a good search-replace action will suffice (which is available from Hippo CMS v6.04 :-) ), but it might be better to be able to refer to dependency packages as entities and keep a record of all names and versions in a separate document, which is merged with the docs when presented to the user automatically. This would also make referencing to documentation of those dependencies really easy.

Enforce consistency in writing

Pretty hard to do without doing manual reviews (you'll always need to do that); but at least, some common constructions in the documentation could be formalized so one can easily add them whenever needed. Also, there's a list of forbidden sentences. They consistently kill consistency. I've seen plenty of these constructs on other open source documentation sites, too. It's the "this is how I did it, but hey, you're free to do it in a different way!" kind of advice that comes when many developers work together on the same open source project and don't want to get flamed at by their peers.. Sometimes a new user just wants a clear advice on what to do, and not think about all the options. Docs should be arrogant!
  • Any occurrence of “in the current/newest/next/previous version....” should be replaced with “in Hippo CMS v6.03...”. Refer to a hard version, not to a relative one.
  • “Normally we do ....” / “I always do..” should be “it is advisable to...” (more generic). Skip opinions - put them on Wiki's, blogs, mailinglists, wherever, but not in docs. Documentation should be a clear authoritative source.
  • “... the CMS does ...” should be “... Hippo CMS does ..”. Although technically we're talking about a content management system, the documentation is referring to a very particular one, namely Hippo CMS, and not to an abstract thing. It would be very silly to consistently talk about “start up the Spreadsheet Application ...” when trying to get a user to fire up MS Excel.

April 14, 2006

Apache Cocoon in the government

I'm very proud to announce the go-live of the new website of the Dutch Ministery of Finance, which is using Hippo CMS, which is, as you hopefully all know, running Apache Cocoon :).
Please see my (non-official) translation of the official Dutch press release below.

The Dutch Ministery of Finance has launched it's new website at www.minfin.nl.

The new website is using the open source content management system Hippo CMS. This is in line with the desire of the Dutch government to migrate as much as possible to open source software and open standards by the end of 2006. The usage of open source and open standards raises the freedom of choice, cooperation and effectiveness of information systems.

The new website contains about 25.000 pages, and has around 10.000 visitors each day. A popular part of the site is the weblog of the Minister of Finance, mr Gerrit Zalm, which receives around 5.000 visitors each day.

This major achievement would not have been possible without the great work of the Cocoon community, for which I'd like to thank you all!

Also, I need to thank the awesome team of Cocoon developers that has been working so hard to get this job done on time: Ard Schrijvers, Bart van der Schans, Max Pfingsthorn, Dennis Dam, Jeroen Reijn, Niels van Kampenhout, Andrew Savory, Ugo Cei, Maurizio Pillitu and Gabriele Columbro... And of course all of the Hippo and Ordina people behind the scenes.

Next up is the Ministery of Foreign Affairs; and we could definitely use some extra help on this one... In case you're looking for a really cool Cocoon job, please let me know!

Thanks, everyone!

-- Arjé

April 12, 2006

Cool OSS: Synergy Keyboard / Mouse sharing

Get that Wireless feeling

Synergy transports your mouse and keyboard events over TCP to one or several other computers, running on Windows, Mac, or any Linux/Unix operating system. I'm using it now on my Windows desktop as a server, and my Windows/Ubuntu laptop hooked to the right side of my screen. When I move my mouse to the right, out of the border of my monitor, it will show up again on my laptop! There's absolutely no lag in the mousepointer movement.

Kind of strange - it feels like using a wireless keyboard, but it's the other way around.. My laptop is now wireless (WiFi), but the keyboard *is* wired.. :)

As a nice bonus, you get clipboard sharing across all machines too! Great for transporting notes from my laptop back to my desktop machine.

Via Jon Aquino's Mental Garden: Synergy: Open-Source Keyboard/Mouse Sharing

March 31, 2006

Random Cocoon practice: use <map:call resource>

Use <map:call resource="some-pipeline" /> to avoid duplication of pipeline constructions in your sitemap.

Define a resource as follows in the <map:resources> part of your sitemap :

<map:resource name="post-process-and-serialize">
   <map:transform src="transformers/libs/util/stripnamespaces.xsl" />
   <map:transform type="linkrewriter" />
   <map:serialize type="html" />
</map:resource>

Call this resource from your pipeline:

<map:match pattern="*/index.html">
   <map:generate src="some.xml"/>
   <map:transform src="transformers/some.xsl">
   <map:call resource="post-process-and-serialize"/>
</map:match>

Is it possible to pass parameters to map:call resource?
--> Yes, simply use <map:parameter> statements

Thanks to Jeremy Quinn for this insight!
Also see http://wiki.apache.org/cocoon/CleanerSiteMapsThroughResources

March 28, 2006

Opening

Time for my apologies. Maybe it was a little bit to early to announce Hippo CMS as the new Cocoon based open source CMS back in september 2004...

During the CMS shootout session on that particular day, I was on stage, firing away at both Steven Noels' Daisy and Michi Wechner's Lenya. I can remember I felt damn lucky that Steven and I flipped the coin and I Iost - which meant, Steven had to go first. It bought me some extra time to come up with the right arguments of why one should use Hippo CMS and not Daisy :-). Michi was not there - he was unable to attend the conference, but he sent us a very interesting movie which we played and laughed about. Anyway - it was fun to do.. :)
That day, I told the audience that we would have the Hippo CMS codebase publically available by december... Yep - 2004. Apparantly, it took us another year..

So, what have we been up to for the last one and a half years then?

We...


  • removed all constraints on proprietary libraries and non-Apache license compliant code

  • redesigned all of the icons and graphic elements (allowing us to make them available under the Apache license)

  • wrote lots of documentation

  • set up samples

  • finalized the development and deployment process

  • set up a public SVN, Wiki, mailinglist, and all the other community things one is expected to do when opening up

  • organized the Cocoon GetTogether 2005

  • .... while adding lots of new functionalities in the process

The result can be found at www.hippocms.org. Downloading the distributions, firing them up and playing around with the result should be fairly easy to do for anyone who has access to a command prompt ;).

Now, about those apologies you're reading this post for; let's say I'm just very very happy that we've finally made it to opening up Hippo CMS. I'm sorry if I've let you all wait for sooooo long. But it was really good to have so many people pressing us to get the job done. Thanks, guys - it really pushed us to take that final leap. And as Andrew pointed out, it's not easy to open up a development process. But hey, we didn't expect it to be so.. Although we were suddenly hit by the fact that we were depending too heavily on external proprietary components, and we've just recently managed to get rid of them (note to self: make sure you've build in enough abstraction ;-) ).

Also - and this may sound a bit silly but I guess the ones closest to me know it's true - Hippo CMS has never been closed. We're not just moving our code from proprietary to open source - our source code has always been available to customers, and to those interested in working with it. We've encouraged external (Cocoon) developers to criticize our code and share thoughts on the architecture. Over the last year, this has evolved into the current lively Hippo CMS community, with a reasonably busy mailinglist and massive amounts of SVN commits every day. Thanks to those that did share their thoughts, checked our code and helped develop the solid CMS it has turned out to be.

And now, finally, I can publically announce the fact that the Hippo CMS codebase indeed is available online. :-)

We feel and breathe open source, in good Apache sense. The clouds have cleared, the sun is shining and we're ready for some action.

So - get started and have fun!

Regards,

-- Arjé Cahn