JBoss World This Week!

11 February 2008

java jboss jbossorg jbossworld twitter

I'm packing up the grocery-getter and about to roll down to Orlando to get ready for JBoss World. Rebecca Goldstein has worked her fingers to the nub to ensure that this year's JBoss World conference will be awesome.

I'll be working with Karsten Wade of Red Hat Dev-Fu to produce daily show reports. You can also follow along at home through my twitter. If you're at JBW and twitting, leave a comment here with your Twitter URL, so others might can follow you.

See you there!

JBoss Cache: MoB Rule

16 January 2008

elves java jbossorg mob

Manik Surtani, the stealthy party-crashing lead of JBoss Cache, has once again announced a Month of Bugs .

Yes, yes, I know it's surprising that the superstars at JBoss might possibly write some buggy code. But we don't always get a full 8 hours of sleep and a complete, nutritious breakfast. Plus, sometimes elves sneak in at night and play dirty tricks on us.

None-the-less, there's some bugs needing squishing.

Check the announcement for all the details, but bottom line is you've got 30 days (until JBoss World) to find and/or fix as many bugs as you can. For that, valuable prizes may be awarded.

JBoss World Hackathon wiki is live

15 January 2008

java jboss jbossorg jbossworld

As mentioned previously, at the JBoss World 2008 conference in Orlando, we'll be running a Hackathon.

Now's the time to head over to the Hackathon wiki, and start making some plans. If you haven't bought your pass to JBoss World yet, you need to jump on that, also. There's less than a month before we're all hanging out in sunny Florida with the gators and Canadians. The agenda is published, so you can see that you'll be missing a lot if you don't come.

Well, which is it?

14 January 2008

java jira maven usability

I've been working on compiling JIRA plugins lately, with maven-2.

And I see this go scrolling by:

[WARNING] *** CHECKSUM FAILED - Error retrieving checksum file for webwork/jars/webwork-30Apr07-jiratld.jar - IGNORING

In that single line, I get confused, as there are 4 hot words right there.

  1. WARNING: Hey, something bad happened, but it's not super bad.
  2. FAILED: Well, crap, it just plain did not work.
  3. ERROR: Yep, it still didn't work, and that's a bad bad thing.
  4. IGNORING: But apparently I shouldn't care too much, because maven surely isn't giving it much thought anymore.

Should I take corrective action? Is there anything I can do? I got all hyped up about being warned of the error of failing, only to be told it's no big deal.

Of course, I had to babysit the first build like a crack-baby delivered in the 2nd trimester. Maven attempts to download the world from Atlassian's repository which likes to take a nap after downloading a dozen .pom files. I'd have to go Control-C all over it, and start over, to get a running start at the next dozen .poms. Fun!

Free to Fee

10 January 2008

java jboss jbossorg

Since I've been with JBoss, we've been making a move towards "the Fedora model" in terms of the divide between the open-source community projects and the "official" bits you can buy support against. Once we introduced our Platforms and Frameworks product configurations, it became slightly less clear what was what. Unlike Fedora, when tends to aggregate a lot of things from a lot of projects, the JBoss community projects are the primary upstream source for JBoss commercial support offerings.

Working with Jon Atkins and Shaun Connolly who handle the .com side of the house, we've worked up some statements to help try to clarify it all. Additionally, James Cobb whipped up a pretty intuitive diagram demonstrating the way the open-source community is cherry-picked and how the rough edges are sanded off to create the supported bits.

Org and Enterprise

Point of Use

22 December 2007

dsl java languages ruby

When we moved from C to C++, we were overjoyed that we no longer had to declare all of our variables at the top of the function.

do_something() {
  int num = 0;
  int another_num = 0;
  num = get_a_num();
  another_num = get_a_num();
}

We could instead declare them near the point of use, when needed.

do_something() {
  int num = 0;
  num = get_a_num();
  int another_num = 0;
  another_num = get_a_num();
}

Ultimately, the rule intends to make things visible to the smallest necessary scope. While technically "scope" is an entire block, actual scope for a given statement consists only of that statement and those that follow. Defining variables at the top of a block unnecessarily extends their scope beyond the actual needs.

That's great for variables. What about expressions or statements or blocks of statements?

When we hack out straight code, perhaps a one-time chunk of Perl or Ruby or bash, we declare a statement exactly at its point of use. If we don't name it, it's lost in the ether, immediately out of scope again.

rm -Rf path/to/stuff
mkdir other/path/to/stuff
cc -o google google.c

We climb up into the world of "engineering" and we start to create functions, or classes and methods. We give names to a chunk of statements and increase the visible scope of this code.

def turn_on_sprinkler()
  call_sprinkler_webservice( :on )
end

But have we just moved our declarations too high, like our variable declarations in C at the top of the block?

We follow a rule that if you use the result of an expression more than once, you should stuff it into a variable. A local variable. Not a global variable. More than likely not an instance variable.

How about if you use a statement more than once, you stuff it into a named block. A local named block. Not a global named block. More than likely not a method on a class.

notify = Proc.new{|person,message|
  person.email.send( message )
  person.sms.send( message )
}

notify.call( person.wife, "I'll be home late" )
notify.call( person.mistress, "Motel 6 in 10" )

Unless the functionality is required at any higher scope, declaring and defining named blocks locally prevents pollution of the namespaces.

With languages such as Ruby, instance methods can be defined upon instances that need them, instead of upon every instance of a given class.

def ship_via_cargo_container(item={})
  class << item
    def cube
      (self[:height]||1) * (self[:width]||1) * (self[:length]||1)
    end
  end

  freight_cost  = item.cube * 100.dollars
  handling_cost = item.cube * 10.dollars * 2
end

In effect, this view is one of macros. When it's convenient to create a short-hand notation, or a micro-DSL, do it where it has minimal impact on the rest of the system.

It could be argued that interpreters and compilers are not prepared to see and optimize for these types of blocks. The Java world surely keeps debating closures. I have no idea the impact on Ruby interpretation when you're constantly defining new methods on individual objects. But then again, there was a time we feared the overhead of managing objects instead of simply free functions and structs.

Trip Report: EuroTour '07

17 December 2007

events java jbossorg polish traveling

As noted earlier, Rebecca and I flew off to Europe last week for a little holiday, JavaPolis, and a week of JBoss.org team meetings.

With the winds behind us, we managed to make it to Schiphol airport in a record 6.5hrs from Newark. Not bad at all.

Met up with James Cobb, the kick-ass .org brand-manager/designer at the airport. We managed to keep each other walking around and awake all day to stave off horrible jet lag.

The wife and I stayed a night in Amsterdam before taking the train to the lovely Centraal Station area of Antwerp. If you're looking for the ambiance of a Motel 6 with the convenience and bouquet of being beside the Greyhound Station, this is the place for you!

Once in Antwerp, we hooked back up with James, and met, for the first time, the Fabulous Five from Poland: Przemek, Ryseik, Adam, Tomek and Pawel (left to right). Mark Newton was present for a few days, but had to return to Switzerland early, unfortunately.

We ate a lot of frites. And waffles.

The Polish developers attended a lot of the conference talks, and we as a team had some great whiteboarding/brainmapping sessions about the future direction of JBoss.org-NG, as we're calling it (more blogs to follow on that topic).

Somewhere along the way, the guys goaded me into doing the Java Black Belt competition at the Cap-Gemini booth. I managed to make it to the finals, and ultimately won a PlayStation 3. Unfortunately, it was a PAL-based Region-2 PS3, which is decidedly incompatible with my Region-1 NTSC lifestyle choices. It's now living in Poland, along with a Nintendo Wii that Adam won.

I chatted up Crazy Bob and learned that we'd both lost our hats during the trip. A man without his hat is a sad sad thing. Luckily, I did manage to procure another. Also luckily, I have more hair than the other Bob.

I met Vincent Massol, Stan Silvert and Julien Viet for the first time. I met Emmanual Bernard, Max Andersen, and a host of other JBossers yet again.

During the entire trip, I managed to get yelled at a lot (hat shopkeeper, hotel matron, inn keeper, bar maid) and had that Alecia Keys song injected into my skull everywhere I went.

Overall, a success!

Java and Waffles

06 December 2007

events java jbossorg opensource traveling

In about 24 hours I'll be jetting towards Antwerp, Belgium to attend JavaPolis. I'll also be meeting most of my team for the first time, as the development stars from Poland wing their way westward.

JBoss has a booth, and a bundle of core developers (and management) will either be attending or speaking.

JBoss Innovation Awards

14 November 2007

events java jboss red-hat

Once again, we'll announce winners of the Innovation Awards at JBoss World in February.

While there's other opportunities for the projects at JBoss to get the nod for their innovation, the Innovation Awards are a chance for you, the users of JBoss projects, to get some glory. That glory includes a free pass to the conference, a VIP dinner, and some special attention during the conference.

What's interesting about what you're doing? There's 8 different categories, surely you fit into at least one.

  1. Joint Red Hat/JBoss Deployment: Everyone deploys their Java stuff on Linux. If that's JBossAS and RHEL for you, you're ready to rock.
  2. SOA Implementation: Are you using JBossESB, Drools, JBoss WebServices, jBPM?
  3. Increased ROI: Ask your CIO/CFO.
  4. Ecosystem: The whole ecosystem around Seam/JSF could be ripe for an award here.
  5. Emerging Technologies: Have you been doing Seam with Groovy?
  6. Migration: Have you ditched your app-server from one of the Other Guys lately?
  7. Business Process Automation: Did you implement jBPM or Drools?
  8. User Experience: Did you produce a slick UI using Portal, RichFaces and AJAX?

The Innovation Awards are a chance to highlight the good work your team has been doing. You've got until the end of the month to send us your story using the simple form at the bottom of this page.

Hat full of Java

08 November 2007

java jbossorg opensource red-hat sun

Red Hat and Sun recently signed some agreements around open-source Java projects and access to the Java TCK. This all goes towards the OpenJDK, and ultimately, having an open and officially recognized JDK on Fedora.

Contrast that to Apple, who some people think is pulling back and away from Java.

For more information about these agreements, see this interview with Sacha Labourey. He explains the expected impact and benefits of these arrangements.