Archive for May, 2007

Falling down the stairs

Monday, May 21st, 2007

For the second time in two days Nathan has taken a head first tumble down the 14 steps between our ground and first floors. Yesterday I watched him do a cartwheel and then go down the stairs feet first while trying to grab the stair above him; today it seems that he went head first all the way down.

Both times he is understandably upset and then back to normal, while Carrie and I are standing by him in shock wondering what we can do about this terrifying new event.

Sunday dinner recipes

Sunday, May 20th, 2007

Decided to be a good father and cook a Sunday dinner for the family today, plus good sandwich material for the week. I used this recipe with a slight modification (mustard as opposed to mustard powder :)) and while the pork took a long time to cook, it ended up tasting wonderful. A good experiment.

We also had peas, a curry/apple gravy (very interesting), pax stage and onion stuffing (imported from UK) and roast potatoes. I use Delia Smith’s potato recipe; pour boiling water on the potatoes, add salt and simmer for ten minutes. While that’s simmering, put some fat on a tray and stick it in the oven. Then put the potatoes on the tray (hot fat seals the potatoes) and cook for an hour, turning halfway. Works each time.

Downside; Nathan fell asleep and slept for the rest of the evening so I didn’t get to find out if he’d eat any of it.

Spring Batch

Thursday, May 17th, 2007

The last session I attended at JavaOne was on Spring Batch. It’s a joint venture between Accenture and Interface21 to create an Enterprise Batching framework. At first I was there out of interest so I could pass on information regarding it to a customer who had asked a Spring question while planning a batching system, but as they started to discuss the system I realized that I’ve also written a (very basic) batching system. So I’m very interested in seeing how a more generic one would be done.

The talk went well and was a small but packed room. I had to skip out at the end for a lunch appt, so missed the demos. Rod Johnson started and after an introduction introduced the Accenture guys, Scott Wintermute (internal framework boss) and Wayne Lund (senior architect). From their description it sounds like this is something that has come out of an Accenture project that the Spring guys have been involved with for the last year. The batching design is going to feel relatively similar to JDBCTemplate and the best diagram on show is hidden away in a poor quality version on the Spring Batch website, so here is an easy link. Green is what you would code, Blue is Spring Batch and Grey is Spring and beyond.

One of my first thoughts was ‘have they replicated Quartz?’, and looking at the diagram it doesn’t look like that. Spring have abstracted the scheduling and Batch uses this (Scheduler).

Generally I like the look of it. I’ve personally never felt an urge to use Spring Core with a website, but I do think it makes a lot of sense in a headless batch like system; so Spring Batch feels like a nice idea to me.

There’s a downside currently. Despite the announcement at JavaOne the source is not available yet. It’s still being tweaked and refactored before being released to the community; very frustrating but hopefully it’ll be on show soon, and said arrival will be mentioned on the forum question I’ve asked.

IntraMUDs?

Thursday, May 17th, 2007

This morning I noticed an article on IBM/Sun releasing ‘virtual world intranets’. On the one hand, it’s about time. On the other, I don’t get the whole 3D view as an advantage.

Back in 99/00, the company I worked for used a MUD to keep in touch while working off site. It worked superbly, many of us were MUDders and even those who weren’t would get into it. Even the senior developer who was a generation older would poke around and get things to work. One of its main advantages was multi-tasking. We often talked about how it could be an intranet product; but the LP driver had a very non-commercial license and we didn’t feel like starting from scratch.

Cut to the current day. MUDs are less in use now it; but IM/IRC/Jabber seem to be used a lot. These, just as with the MUD back then, work well with multitasking. You can chat on multiple channels while you’re also coding, eating or talking to a colleague ‘in real’. I’ve avoided the MMORPGs as they all seem subscription based and don’t let you go from playing to coding; but I don’t see how you can use two or three or four at the same time. It’s not a multitaskers tool, it’s just another communication medium like the phone - something that makes it harder to multitask. Boring.

What's the deal with Apache?

Monday, May 14th, 2007

This has been something I’ve been pondering in the last couple of days. What’s the big deal with the arrogant, stuck up, crap quality, absorb the world Apache Software Foundation?

At first my thinking was ‘Enterprise’. I’ve blogged on this before I think; basically Apache is an experiment in lumping together large amounts of open source projects into a single entity. Much in the way that your typical large computer company is the amalgram of many smaller departments who could all be their own small companies; or that Wal-Mart is the amalgram of many small stores and a whole series of transport groups (he says with no knowledge of how Wal-Mart works). That doesn’t explain much though, just that it’s a bit of an amorphous blob, in many ways like SourceForge, Java.Net, GoogleCode and others.

There’s a difference of course. The three I mentioned above are more like shopping malls than a single company. There’s no common thread across their departments. I can walk from one project to the next and experience entirely different cultures, life, style or conversations. Within Apache there is an underlying meme that ties these projects into a single entity.

Ted Husted has attempted to capture that meme in his Apache rules. It’s not a bad stab at listing things. The first and foremost is that Apache release things under the Apache license, an evolution of the BSD/MIT style license which is an attempt at controlled public domain. I think you can understand a lot about Apache from this. The license gives huge amounts of freedom to the user, and the Apache community mindset is one of low levels of competition. It happens, we’re all competitive, but it’s much harder to be competitive with a BSD-like license, plus the community reinforces that through the shared memes. Competition is good for evolving a better product, wanting to defeat the competition is bad. We’re still individuals at the end of the day, and individuals are hugely competitive so you can only take that so far.

Why are Apache projects more successful than others? Obviously a badly worded question as who knows if they are. Let’s try again. Why do people choose an Apache project ahead of a non-Apache one? Why does an inferior project still grab users when a superior non-Apache one sits and wonders why the users aren’t migrating?

It’s all about brand - and the common meme above. Apache Foo means something. It means that Foo, whatever Foo is, shares the memes above. Without even knowing what Foo is, how well it’s coded or what it does, a user (or a user’s boss, or a CEO) can know something about Foo. That’s what Apache as a brand gives us. There are other brands out there that do the same. JBoss Foo tells a user about the Foo; Spring Foo tells a user about the Foo. To a lesser extent I think, Codehaus Foo, OpenSymphony Foo and ObjectWeb Foo tell a story [lesser because I think their common memes are are not as strong or not as long a list]. So yes, if I’m going to look at FooTechs, I’m going to pick up the one whose meme I know and want to use.

As an aside. I think it’s interesting that Apache, JBoss and Spring are all individual products whose brand has been used to create an enterprise collation of open source projects. I wonder if that played any part in their successes? Did it hamper Codehaus/OpenSymphony/ObjectWeb?

The Apache Incubator of course is a system for certifying that said memes are being followed by a project. If the project you are looking at from Apache is ‘Incubating’, then it quite rightly should induce a certain sense of doubt. The meme you assume is in place may not yet be in place.

As I said at the beginning - I view this all as an experiment the open source community as a whole is partaking in. I think this stage of the experiment has been successful, and not only are we seeing more and more foundations out there now, as groups seek to put the ownership of their code out of the hands of a single free entity (such as an individual or a company) and into the hands of an entity whose hands are far more tied, but that we’ll also see more common-meme sharing enterprises starting to rise. I think both Spring and JBoss are likely to continue their growth as major (Java) open source enterprises.

When you look away from Java, I don’t think you see this as much. I think that might come down to the open source Java community being closer to the typical enterprise companies than many other parts of the open source community. The shared-brand meme has crossed from the enterprise companies over to the open source Java community and we’re increasingly not interested in anarchy.

To answer the first paragraph, which I’ve probably wandered from and not done a good job in reflecting on. A lot of the arrogance/stuck-upness is due to our memes, non-competing sound like arrogance (I’m sure there are other memes from the list that communicate poorly), crap quality comes from people outside Apache being annoyed that the shared-meme attracts users to a product that is worse than theirs, and absorb the world is obvious. The shared-brand is working. People like our values.

JavaOne general thoughts

Sunday, May 13th, 2007

So what were my general impressions of j1?

Queues. Queues suck, and being treated like sheep ruins a lot of the experience. That was such a shared complaint that it deserves to break the grammer and earn a Q not a q.

Queues for sessions, organized by Queue Managers with numbered signs and the feel of a street hawker, Queues for lunch,
Queues to have your picture taken with Duke, though fortunately these weren’t that long so there is hope for the human race yet.

So Queues suck. Not being able to get in a session once it has started sucks. And Standby Queues for those who
didn’t sign up suck.

They all suck for three reasons.

  1. Being reduced to sheep is not fun. Fun flows, it never follows the framework. A two year old can tell you that.
  2. Adhoc session networking does not happen. This breaks up any kind of community that was not pre-planned.
  3. It increases the level the session needs to give value back to the attendee; they’ve had to go through more pain to get in there.

What stuns me are the number of people who queue for the lunch. The one time I picked a lunch up later it was higly unimpressive,
and yet the Queue goes on for miles. Amazingly the Queue for beer is often non-existent, it’s like ApacheCon in reverse ;)

Being expected to put your name and number down on the session feedback also sucks. Why? Why? Why?

Having to scan your badge in to each session was a sign of things to come in our world. Not only were we sheep, we were
sheep with tags.

BOFs are bizarre. They just seem to be slightly less well attended sessions. The numbers work against them here - there are
only so many rooms, and so each BOF gets far more people than can manage an N to N conversation. Someone needs to think
laterally and come up with a better idea.

Obviously someone is trying; Sun had organized an Open Source UNBOF at a local bar - but this just seemed to be a ‘party’ and not any kind of subject focused discussion.

Parties are weird. It’s free beer for those in the know, those who have found a ticket, know someone or just walk in -
nothing that different from oscon/apachecon, but there are two groups in notable presence. Developers and business.
The developers are either big company people or open source. The business people are in suits :) Depending on the
location one or the other fits in more smoothly.

Best party? The Eclipse one. Nice big bar, open bar, lots of beer bar. Both suits and scruffs fit in and chat.
Crap part - BOFs are going on at the same time. C’est la vie.

I never get the parties and the free beer. Meaning I never understand it; I’m not adverse to a free beer :) I think there are legends
of ones that worked well, probably for smaller companies, and the big companies imitate this. It can work well - Chariot Solutions’
sponsorship of the Hackathon beer at San Diego in 05 has passed into legend for the arrival of a truck filled with bottles of very nice
quality beer and the subsequent angst on the hotel managers part.

The vendor section continues, as with many conferences in the last few years, to have a community section - the .org
pavillion. It’s still a work in progress in my opinion, I’ve yet to see one that clicks properly and does what they’re
looking for - replicates the hackathon. Not that the hackathon is there yet - we always need to do better at getting
contributors into it rather than just committers.

This year the .org pavillion - let’s be honest, the .org corner at the far side of the room, the cheap seats - is a
very odd setup. You don’t get a stable table - on a schedule you get moved around it seems. Not that I was there
much; as is typical the ASF haven’t organized themselves on it and the typical question is “We have a booth?” and the
answer is “Not really. The Derby guys are there sometimes at a Derby booth. “. My challenge to the Apache community
is to make these things work, to be prepared and show people the individuals we are rather than an empty table.

One of the Sun quotes of the conference has been “Blah blah blah….and here’s how you can use it in the Netbeans plugin”.
There’s a concerted push for Netbeans. Of course there’s also been the quote of “And this will be available in OpenJDK”.
Oddly (as someone pointed out), Glassfish is not mentioned. What does the success or failure of Glassfish imply for
OpenJDK? I hear OpenSolaris are going well, so hopefully OpenJDK will emulate them and not Glassfish.

Back onto the subject…. most of the above is negative.
I complain, it’s genetic from a thousand years of “Those Normans, they’re really messing things up”. What’s been good?

People. I met Tim O’Brien and Stephen Colebourne for the first time on Tuesday - two people I’ve known online for half a decade. I also met Gianugo Rabellino for the first time - Gianugo and I share a lot of similar beliefs around what he calls
open development so lunch at a mock greasy diner with him was a pleasure. The next day I met Adrian Sutton for the first
time. Adrian is a long time HttpClient committer (or as it’s known nowadays - HttpComponents Core). And of course
there was the chance to meet people I’ve met before - one of the nice bits about San Francisco seems to be that there
are a fair number of people who were just here for the day or even the evening and through random luck you could
bump into them.

The sessions that were interesting enough to deal with the crowds for. NASA Worldwind, core language JSRs. I’ll blog about those later.

I enjoyed cubicle time with Cenqua talking about Crucible. Currently it does the basics and does them well (as opposed to
the competition I’m aware of over the last few years who basically do the basics badly. Hopefully this will mature in the
next year into doing the basics well and exploring the more interesting directions. Cenqua’s was the one t-shirt that I picked up.

I also enjoyed hearing from Terracotta on how their product works. It’s a very nice hack that seems like it gives you a lot of power.

OpenLogic had a nice survey setup asking people which open source projects they were using. Mental note to try and find out what
the results were.

I went to four JSR core Java proposals.

  • Closures. Scary as I mentioned earlier.
  • Superpackages. Some of the details seem wrong, but generally feels good.
  • Module system. Seems like a mess. Some ideas seem interesting, some seem lame.
  • Date/time. Looking good - go Michael and Stephen.

Spring and Accenture announced a joint venture of theirs called Spring Batch. This sounded pretty damn cool and is
second on my list after WorldWind to look at. It’s a bit odd to hear that an open source group have been working on
something for a year and now are releasing it into the wild, but it’s a different model and it’s working for them.
Interface21 are still the most interesting company to watch out there in the open source world.

Back to complaints - one last thing that sucked…

Talks whose BOF had already happened by the time of the talk. So the poor speaker is having to apologize to the attendees while also trying to call for action.

Poll Plugin for JIRA released

Sunday, May 13th, 2007

Atlassian’s Codegeist II competition is up tomorrow. What with being ill and being at JavaOne (much in the way of blogging from JavaOne notes to do over the next few days) the end of the competition did not so much sneak up on me as ambush me out of the blue. I had the barely started prototype of a new portlet sitting on my laptop and after earning some computer time by looking after Nathan through the day I was able to sit down and pip in under the wire.

The plugin, if you didn’t read the title, is a poll portlet for the front page of JIRA. It lets you setup a way for people to vote on an issue from a group of issues, and see the comparative results. Users can either have 1 vote to share amongst each issue, or they can apply 1 vote to each issue. The easiest way to use it, is to create an issue whose summary is the question, add subtasks whose summaries are the answers and then configure the portlet with just the first issue’s key.

I used the JIRA Servlet plugin for the first time on this; however after bashing my head against how to get at things in the environment for two hours and getting it working; I then realized I needed more and so it’s sitting there as a memento of the hours of pain at the moment, unused. Basically, getting a VoteManager statically is a pain in the arse.

I’m pretty happy with it. It’s been a solid evening’s work, and it is exactly what I was envisioning when I thought of the idea a month ago.

Catching up on the Open Letter blogging

Friday, May 11th, 2007

Bizarre stuff reading all the blogs (that Google shows me) regarding the open letter sent to Sun. An interesting bit of history is to read about the last time this all blew up back in 2002. It’s much the same TCK stuff, and Apache issued an official statement then too.

As always in life it’s painful to read the criticism and warming to read the words of support. Most of the criticism seems to either end up in the “haven’t actually read things yet and think this is an AL/GPL isse” or to be from people whose vehemence suggests they hardly had an open mind in the first place.

Captain Brazil

Wednesday, May 9th, 2007

Tim Ellison with Geir and his flag at JavaOne via my admittedly crappy phonecam.

Gafter's closures

Tuesday, May 8th, 2007

Sitting in Neil Gafter’s Closure talk, and reading Stephen Colebourne’s blog entries, I’m generally bouncing between optimism and disgust. The simple promise is nice, closures would be nice. However it seems much like generics, the devil is running rampant in the details.

One tiny thought. Using # is ugly Stephen, feels so wrong. Using => is semi-ugly Neil, feels like it’s a key for a dictionary. Especially with the { } wrapping. {String => int} - isn’t that a HashMap literal? :)

Me… I like |. { String | int }. Feels much nicer. Shame its bitwise OR already. Oh well - there goes my idea. I’ll throw “give us a Method object or Block object and can all the interfaces” into the crap pile too.

One thought I have is - how do closures work in languages on the JVM. Have Groovy et al been able to implement closures nice and easily, or would it be better to make the JVM support closures better and let Java live without closures.

Another thought… Gafter’s closure allows people to make it look like they’re defining new control statements. His suggestion for how to deal with that was to mouse over in your IDE… Yay, more IDE pushing. Bet ViM and grep’ll do it for me ;)

End of the day - Gafter’s seems the nicest one to use (from the biased view I’ve seen so far). I hate the use of the =>, I hate the many pages of subclauses and footnotes that I sense on this spec, but I love the idea of getting a map() function.

In true A A Milne style - when it looks nice it looks very nice, but when it looks ugly it looks fugly.