21 December 2007

Apache ActiveMQ 5.0 Released



The long anticipated Apache ActiveMQ 5.0 has finally been released! Congratulations all around, a lot of hard work went into this release. Check out the changelog.

19 December 2007

Spring 2 Book Finally Released



My latest book named Beginning Spring Framework 2 has finally been released. I coauthored this book with Thomas Van de Velde, Christian Dupuis, Sing Li, Anne Horton and Naveen Balani. Check it out ;-).

18 December 2007

Apache ServiceMix @ JavaPolis 2007



Last week I was in Antwerp, Belgium to speak at JavaPolis 2007 about Apache ServiceMix. There were loads of good presentations and tons of people. This year JavaPolis set a new record for attends as there over 3200! And let me tell you, the place was packed! Yet another wonderful conference this year. Stephan and his team really do a fabulous job.

I got to meet many new folks and see a number of folks who I don't see that often including Dion and Bob who, oddly enough, both live on the West coast in California, and yet we all traveled half-way around the world before we saw one another. I hung out with my friend Oisín Hurley and his good friend Stephen McNamara and we had some wonderful dinners and spent some good time together.

I really enjoy Belgium and The Netherlands any time of year. It was cold and very damp but I still find that area of the world very intriguing. There is so much ornate architecture, artwork and extremely old buildings to be seen that are rich in history. This is very different from most of the U.S. because the U.S. is fairly young relatively speaking.

06 December 2007

The Cult in Denver, CO



Chris and I saw The Cult on Monday night at the Fillmore in Denver. I've seen them numerous times over the years and I've always been a very big fan. They played a number of older songs which was cool, but they also only played for about 75 mintues. We both found this kinda odd.

The new album is called Born Into This and is quite good, both lyrically and musically. It really stabs at life today as being quite gluttonous, eluding to the fact that the world culture has lost its way. In fact, during the show they played the video below for one of their latest songs.



The video includes footage of demonstrations and police crackdown in Burma but evidently the song is about rampant consumerism. Reading the lyrics makes this a bit clearer.

It was good to see them again, but for some reason the show wasn't that long and the entire band seemed to leave the stage in anger - who knows. I still like The Cult ;-).

05 December 2007

Sun's Appalling Behavior With OpenDS


Recently it came to my attention that Sun has exhibited yet another set of appalling behavior on one it's so-called <quote>open source projects</quote>. IMO, anything Sun has released as open source that only contains Sun folks is always suspect. This particular episode is quite egregious and really demonstrates Sun's lack of understanding of how open source works.

Without rehashing the details, I'll just provide a link to Dave Shields' blog entry about this particular occurrence which is aptly titled OpenDS: On Being Bitten By The Hand That Once Fed You. David also links to the An Open Letter to the OpenDS Community and to Sun Microsystems that details the real story.

I really feel for the guys on the project who tried to do the right thing as the situation that Sun forced on them really does suck. This is a good demonstration of how big companies ruin open source projects.

29 November 2007

Cyber Monday Success Linked to More Expensive Java Developers and Agile



As much as people like to joke about the women in the Overstock.com commercials saying it's all about the O (c'mon, read into it), evidently the Overstock.com website received some of the heaviest traffic on Cyber Monday earlier this week and it handled it very well (what a pathetic society we have become - we have names for shopping days). And Overstock.com's ability to handle all of this traffic and commerce has actually been linked directly to some of the topics about which we geeks spend so much time discussing, using and writing.

According to Overstock.com CEO Patrick Byrne:


"We had three developers on staff three or four years ago; now we have over 40 developers," Byrne said in an interview. "We found it's worth it to pay up for more expensive and more serious people."


According to the article titled Overstock.com Divulges Secret to Its Cyber Monday Success, Overstock.com used to use off-shore developers, a single C++ application and a single database. This year it overhauled everything to use on-site developers, Java and Agile methodologies:


"I was the biggest proponent -- as a stupid, Dilbert management kind of guy -- saying let's outsource. Now I've come completely 180 degrees to the agile approach," Byrne said. "Programmers sitting side-by-side with businesspeople designing functionality -- that's one trend," Byrne said. "The other is taking your software development and moving it to China or India. You see those two trends are antithetical to each other."


Maybe the world is beginning to see that real experience and talent are difficult to find and expensive once you find it.

As Napoleon Dynamite would say, "Yesss!"

28 November 2007

Using the Proximity Maven Repo Cache/Proxy



Recently I got frustrated with the latency of accessing Maven remote repositories, so I sought a solution. What I found was Deng Ching's blog entry titled The Hype About Repository Managers. Somehow I wound up downloading Proximity and what I discovered made me very happy.

Proximity is somewhere between a Maven artifact cache and a Maven repo proxy. It runs as a web application locally and by pointing Maven at the local URL for the web app, Maven will look up dependencies for any given project build using Proximity. If the Proximity cache doesn't contain a dependency, Proximity does the work to fetch that dependency from a remote repo and stuffs it in its cache. So the first build when using Proximity is slow becuase it's propulating its cache with artifacts but subsequent builds are damn fast.

Upon first downloading Proximity, I dug through the docs trying to figure out how to add another repository and I couldn't find anything. So I pinged Tamás Cservenák, the creator of Proximity, via IRC for some assistance and he was incredibly helpful in working with me to accomplish this task (thanks again, Tamás!).

To add another Maven repo to Proximity, I had to edit the proximity.properties file to create another FSStorage.baseDir, the proximityRepositories.xml file to add new LogicDrivenRepositoryImpl, WritableFileSystemStorage and CommonsHttpClientRemotePeer bean definitions for the new repo and the proximityContext.xml file to add point to the LogicDrivenRepositoryImpl bean definition. Next, I had to tell Maven to use Proximity as a mirror of everything by adding the following mirror definition to the ~/.m2/settings.xml file for Maven:


<mirror>
<id>Proximity</id>
<name>Proxmity mirrored central.</name>
<url>http://localhost:8080/proximity/repository/public</url>
<mirrorOf>*</mirrorOf>
</mirror>


This tells Maven to look at the local Proximity URL for all artifacts and at that point, Proximity takes over. I've made available a ZIP archive of Proximity with my edits if you're interested. Using what I configured is as easy as downloading it, running it using the included jetty.sh script and editing your settings.xml file using the mirror config above. Then move aside your own local Maven repo so that a new one will be created.

In using Proximity so far, I've found that letting it spawn HTTP connections to download artifacts seems to be far more efficient that Maven. Chris started using Proximity and we're no longer seeing a huge amount of open sockets from downloading artifacts. So now I'm curious to peek at the Proximity source to see how this is being handled.

Also, Proximity is being adopted by Sonatype and it will be known as Nexus. For more info, see Jason's blog entry titled, Proximity Lives on as Nexus for Maven Users.

java.util.UUID FAQ




Recently I had a need for a universally unique identifier (UUID) and I stumbled upon this wonderful java.util.UUID mini-FAQ. If you have to use the java.util.UUID at all, you should give this little FAQ a quick read because it's got some great info to save you time in your own digging.

For example, there are 122 significant bits in a version 4 UUID (a pseudo randomly generated number) - that's 2^122 ( 5,316,911,983,139,663,491,615,228,241,121,378,304) or:

five undicillion,
three hundred sixteen decillion,
nine hundred eleven nonillion,
nine hundred eighty-three octillion,
one hundred thirty-nine septillion,
six hundred sixty-three sextillion,
four hundred ninety-one quintillion,
six hundred fifteen quadrillion,
two hundred twenty-eight trillion,
two hundred fourty-one billion,
one hundred twenty-one million,
three hundred seventy-eight thousand,
three hundred four

Man I hope that's correct - that's a damn big number!

24 November 2007

John Butler Trio



Raible and I saw the John Butler for the second time this year at the Ogden Theater in Denver last night and this show was much better than the first one! Not only were we much closer, but the Ogden is a pretty small venue which made it a very different show than at Red Rocks last Summer.

All I can say is WOW! What a talented band! Watch this live clip of them:



I will definitely be seeing JBT again. These guys have only just begun.

19 November 2007

Interface21 is Now SpringSource



It appears that Interface21 is now SpringSource. You can read all about the name change in Rod's latest blog entry but it seems to be the case that they wanted the company name to reflect the product base. I think that Neelan's latest blog entry says it all:


...the Spring Framework is spreading like wildfire throughout the application development and runtime universe—most as a response to developers frustrated with the complexities of Java EE


I saw this trend starting back around 2002 when we formed Apache Geronimo and even moreso in 2003 I was still doing some consulting work with application servers (and, this was a major driver for Geronimo's very modular architecture allowing you to roll your own app server assembly). Also, in 2003 I started using the Spring Framework and really began moving beyond application servers. Now, everyone from developers to architects are finally realizing that a big app server is not necessary on every node, especially when you have the Spring Framework.

Long live Spring ;-).

13 November 2007

IntelliJ IDEA JVM Options on MacOS X



I hunted for this for a while to find this, so I figured I'd post it to save others some time in locating it. If you have a need to change the JVM options for IntelliJ IDEA on MacOS X, take a peek in this plist:


<IntelliJ IDEA install location>/Contents/Info.plist


I had to change the memory options for the JVM and Chris gave me some other options to improve the garbage collection performance. Here's what I have in the VMOptions field:


-Xms128m -Xmx768m -XX:MaxPermSize=120m -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+AggressiveOpt -XX:+UseBiasedLocking -XX:+DoEscapeAnalysis -Xbootclasspath/p:../lib/boot.jar -ea


One option tells the JVM to do escape analysis which performs some additional optimizations on your code. Some info on escape analysis in the Java VM is available in yet another excellent article by Brian Goetz titled, Java theory and practice: Urban performance legends, revisited. If you're at all curious about the internal workings of the Java Virtual Machine, this article is well worth the time it takes to read. I'm also telling the JVM to be more aggressive with its optimzations using the AggressiveOpt option. I'm also using biased locking which improves performance for uncontended synchronization as explain in the Java Tuning White Paper.

As always, YMMV (your mileage may vary).

08 November 2007

OSSummit Postponed until Spring 2008



I found out today that the OSSummit (a merger of ApacheCon Asia and EclipseCon) has been postponed until Spring 2008 due to a low number of registrations. I have heard that other conferences experiencing the same issues upon first being held in Eastern Asia. I have been told by many people that Asian companies are not used to attending conferences, let alone paying for developers to attend. I believe that this is simply a new event to which Asian companies are not yet accustomed. Just like the United States and Europe, it will take a while for open source to catch on there.

Now I'm just hoping that the postponement won't place the OSSumit (in Hong Kong) next to the week of ApacheCon EU (in Europe) :-0.

07 November 2007

Apache ServiceMix 3.2 Released



The long-awaited Apache ServiceMix 3.2 has finally been released. See the release notes for a long list of the bugfixes and improvements that are included. Many thanks to the ServiceMix team for all the hard work!

Java 1.6 Missing From MacOS X Leopard - Take It Easy Folks


There's been a lot of banter lately regarding the release of MacOS X Leopard and it's lack of Java 1.6. I understand that this is a letdown since it was included in the Leopard betas that were released, but is it really that big a deal? I think everyone needs to relax a bit on this issue.

I understand the interest in using some of the new features that Java 1.6 has to offer. I have even blogged about Apple's lack of communication about its plans regarding Java and I stand by what I said. But seriously, how many companies are actually using 1.6 for development or even in production yet? IMO, the real issue is not that Java 1.6 is not available yet as much as it is about Apple's continued lack of communication regarding Java in general.

Now is a good time to take another look at Eric's OS X Java Definitive Timeline. This diagram does a very good job of helping us remember how Apple has behaved with its Java releases to date. Given this past behavior, I'm really not worried at all. I am, however, still a bit miffed that Apple's ability to communicate its intentions with Java technology has not improved at all. I think this is what we should all be lobbying for.

If we're going to try to affect change, we need to start with some realistic expectations. Trying to make Apple release a product faster is like trying to make Apple move a mountain faster because we say so. No matter how much people bitch and moan, it's just not going to happen any faster. C'mon, be realistic here. We're all developers and we know that having someone asking over and over, 'is it done yet? is it done yet? is it done yet?' won't speed the delivery of the solution. Trying to make Apple understand that we'd like more communication is far more realistic. This is like asking Apple to talk about the mountain it is going to move. Given that we're all Apple fans, we should be telling Apple that we can't wait to get our hands on Java 1.6, could you please, please, puh-lease give us a status report? Requesting more information is something to which Apple might actually respond. Getting testy and demanding that Apple release Java 1.6 NOW is not going to help the cause.

So, to repeat, I'd like to see Java 1.6 on MacOS X as much as everyone else. I just think we need to reassess the tactics being used so that we can positively affect the situation instead of painting Java developers using MacOS X to be demanding and pushy.

Oh, BTW, here you go, Geert: 13949712720901ForOSX

06 November 2007

St. John's, NL Canada


I arrived in St. John's, Newfoundland, Canada Sunday night at 2am and today to work with a team of folks in the IONA St. John's office. It's a great bunch of folks here and city itself is very inviting and pleasant. Unfortunately I'm only here for a couple days.

Last night we visited O'Reilly's Pub to hear some Newfoundland live music. This evening I got to visit Signal Hill, the reception point of the first transatlantic wireless signal in 1901. It's a great vantage point to see the entire city, even at night. Even though it was quite cold due to wind and dampness from the ocean, the clouds cleared and we could see the lights of the city really well. In the other direction we could also see Cape Spear, the most easterly point of land in all of North America. Thanks guys!

Tomorrow morning at 5am I'm off to Phoenix, AZ for a couple days and then back home to Boulder. Originally I was supposed to head back to Dublin to speak at the Irish Java Technology Conference but the last time I was in Dublin I talked James into taking my place. And it's a good thing, too, because it seems that Air Canada changed its routes for the winter just a few weeks ago so there's no overnight flight from Toronto to Dublin. Thanks, James!

30 October 2007

Apache ServiceMix Used for a Large Student Records Management Application

Today a friend pointed me to a very interesting blog entry about the Belgian Ministry of Education and its use of Apache ServiceMix (by way of the FUSE ESB) to manage over 1.5 million student records and exposing it to nearly 3000 schools. Lilian Duchêne's blog entry does a good job at detailing this system architecture from a high level. Intalio also had a hand in the architecture with it's products as well.

Below is a diagram of the system architecture Lilian describes:



The architecture shown here is fairly common, whereby services are decoupled using JMS messaging via Apache ActiveMQ. Not only does this make the services location independent, but it also guarantees the delivery of messages. Also notice that the services have been kept smaller and reusable and separate from the real back end application. This abstraction is great for scaling the application as Lilian describes in the blog entry.

Another interesting aspect of this architecture to note is the use of VMware for the virtualization of the entire architecture. I am finding more and more customers seeking virtualization of architectures in this manner recently. IMO, the benefit of being able to move an an entire architecture to another piece of hardware in one fell swoop can't be undervalued.

25 October 2007

Colorado Software Summit, Keystone, CO


This week Raible, Scott Davis and I are sharing a condo in Keystone, Colorado for the Colorado Software Summit. This is getting to be a yearly tradition for us partially because the conference is here in Colorado but also because we get to meet a lot of people because each speaker must deliver two presentations three times throughout the week! (Yes, that's six talks throughout the week for each speaker.) The conference attendance seems to be a bit lower this year, but that's just a guess based on past years.

The drive here was kinda challenging as it was snowing like crazy so driving down the western side of the Eisenhower Tunnel was a it tough. Doing 20mph and fish-tailing in the snow next to a guard rail while driving down a mountain is kinda nerve wracking. But I made it here safely and we're in the same exact condo as last year. The snow makes me look forward to ski season with my kids.

I even ran into Gregor here this week. We even talked about a week ago about where we'd see each other next and neither of us realized the other was also speaking here this year. Kinda funny.

23 October 2007

Apache ServiceMix Webcast



Today Guillaume and I delivered a webcast on Apache ServiceMix. If you're interested, a recorded version of the webcast is available from the Open.IONA website and it is viewable for free.

21 October 2007

Back Up Your Entourage Data!

I'm only going to say this once - if you use Microsoft Entourage make sure to properly back up the ~/Documents/Microsoft User Data directory frequently!!! Having just gone through a horrid experience with this Microsoft product, I can't stress this point enough.

I don't use Entourage by choice. Enough said. This week I learned a valuable lesson about backing up this huge directory (>250mb). If Entourage has a problem using it the only way to easily get back the data is from a backup. BTW, the Entourage Help Page was helpful with this and I've found many other little tidbits of good info there or at the Entourage Help Blog.

18 October 2007

Dublin, Ireland Again

I'm back in Dublin again for more meetings. My flight on the way over got diverted due to a medical emergency and we had to land for a couple hours in Halifax, Novascotia Canada. That was a first time experience. This meant that my flight was delayed and I showed up to my own presentation with about 30 minutes left. Luckily James covered for me and handled things.

It was good to meet so many folks at these two days of meetings. There were certainly a lot of topics covered. Oisin and I even got to work together a bit talking about the Fuse Eclipse Tooling and how we're going to take it forward. Unfortunately this is another very short trip due to the EU. It's not fun traveling for a day to get here, stay for two days and travel for another day to get home. But I do like Dublin.

A Visual Representation of the Spread of Religion

I found this visual on the spread of religion via Dion and his latest Del.icio.us links this morning and it's fascinating. From an informational point of view, this is definitely interesting, but the delivery of the data in this manner is more of where my interest lies.

Representing complex topics in a visual manner speaks volumes to the human psyche. I find that breaking down thorny technical topics using this technique improves the speed of understanding and helps to break down complex barriers.

06 October 2007

Farewell to Business 2.0 Magazine Thanks to Time Warner

Recently I discovered that my favorite business and technology magazine, Business 2.0, was run out of business by the very company that acquired it back in 2001. Business 2.0 magazine is all about cutting edge technology and the business to make that technology successful and profitable, a veritable niche for sure. Though Business 2.0 has been through it's own problems, its content is unique, engaging and quite forward thinking. Unfortunately Time Warner, Inc. (the acquirer of Business 2.0) in its neverending quest to continue to grow in the name of profits, figured it had a better plan. Unfortunately the plan was a miserable failure, the guy that architected it is now gone and Business 2.0 is dead because of it.

Mark Glaser over at MediaShift has a good article on the subject titled Business 2.0 Closed Due to Corporate Neglect, Ad Woes. Unfortunately Mark's article does nothing to alleviate my contempt for Time Warner allowing Business 2.0 to be crushed by such a bad, bad plan >:-/.

04 October 2007

Fall Tech Conference Season

Somehow I have four conference speaking engagements left to do this year, three of which are international flights for me (at least I'll rack up more miles) and one that is in the Rocky Mountains here in Colorado. Below is the list:

When it rains, it pours.

03 October 2007

Integrating Apache ActiveMQ with JBoss



In November 2006, I wrote an article entitled 'Integrating Apache ActiveMQ with JBoss' that was published on the LogicBlaze website. This article got wonderful feedback and was used by many, many people. Unfortunately this article met the same fate as the LogicBlaze DevZone when LogicBlaze was acquired by IONA Technologies earlier this year. Since that time, I've been contacted by a fair amount of folks about this article, so I've gotten my hands on the original and added it to the ActiveMQ wiki to make it available to all the folks who are asking me for it recently. So if you're looking for this article, see Integrating Apache ActiveMQ with JBoss. Please be aware that this article focuses on integrating Apache ActiveMQ 4.0.1 with JBoss 4.0.4. Hopefully an updated version of this article will be published soon to the Open.IONA website soon.

26 September 2007

GPLv3 Shunned But ASF Offers Best OSS

A survey by Evans Data spawned an article claiming that GPLv3 is being shunned by many. While this article didn't particularly surprise me, the survey also indicated the following:


The Apache Foundation was cited as the organization having the best open-source offerings.


This didn't surprise me either, but it's certainly nice to see it in print ;-).

19 September 2007

Apache ServiceMix Graduates


Just a few moments ago a friend pinged me to let me know that Apache ServiceMix has officially graduated from the Apache Incubator. ServiceMix will now become what is known as a Top Level Project (TLP) at the ASF and as such will have it's own Project Management Committee (PMC) (which will be chaired by my good friend Guillaume Nodet) and a top level URL - http://servicemix.apache.org/.

This is a big step for the project after being in the Incubator for nearly two years, but the Apache Incubator serves an important function, namely, learning The Apache Way. The Apache Way is all about forming healthy, diverse, open communities at the ASF. The road toward this effort is important as it signifies that the project is now an official project at the ASF and can bear the official Apache brand.

The only tasks left to complete now are infrastructure related and should be completed within the next week or so. Many thanks to all of those folks who helped make this happen, most importantly, the folks who are part of the community.

14 September 2007

Dublin, Ireland

I've been visiting IONA's worldwide headquarters in Dublin, Ireland this week. I've met a bunch of great folks this week and I've gotten a taste of what Dublin has to offer. I'm staying at the historic Schoolhouse Hotel and I've enjoyed the Balls Bridge area where I'm spending my time. Being my first visit to Dublin, I've experienced a few pubs now to watch rubgy, soccer and the team drinking themselves silly.

01 September 2007

The IONA FUSE Model and It's Benefits to the Community



I deal with a lot of customers at IONA and I speak at a lot of conferences around the world. Throughout my travels, quite often I am asked what value there is in the IONA Fuse suite of software vs. downloading the Apache projects individually. My answer always surrounds the same analogy and begins by asking the same question: Are you familiar with Red Hat Enterprise Linux?

DIY or Buy
If you're familiar with Linux, you probably already know that anyone can download one of the numerous Linux distributions available today. You can even follow the directions over at Linux From Scratch and build your own distribution. Although Linux From Scratch requires a lot of time and effort it's doable and a fun experience. And downloading a Linux distribution might be OK for doing development work. However, if you need enterprise level support for Linux across divisions in a company with service level agreements (SLAs), you have to go to a vendor like Red Hat.

Red Hat offers its own Linux distribution in Red Hat Enterprise Linux. This is a commercial Linux distribution that is offered by Red Hat. Using this commercial distribution, Red Hat provides services, support and training. Additionally, Red Hat provides various unique enhancements to it's Linux distribution. If you don't need these benefits, you can always download Fedora (or even CentOS). The Fuse open source model is extremely similar to this.

The Fuse Model is Similar to the Red Hat Linux Model
Fuse is based on Apache ServiceMix but is a completely separate branch from it. The reasons for this are almost identical to the reasons Red Hat creates RHEL but really boil down to this; to be able to provide paid enterprise level support. This involves being able to perform custom development for customers who may not want 100% of a solution released to the open source project, to provide a customer the fastest possible release of the software and to provide SLAs that satisfy customer needs. So why not just use the Apache version of ServiceMix?

The Benefits of the Apache Processes
While the Apache processes guarantee stable releases and the Apache infrastructure provides mailing lists for discussion, these are not appropriate and were not intended to provide support for paying customers. Those resources are for the community projects offered by the Apache Software Foundation (ASF). Let's look at an example.

To perform a release of an Apache project, a vote must be held. There are many rules surrounding the voting process including allowing the voting process to remain open for 72 hours. But that doesn't mean that a vote only takes 72 hours. Oftentimes, votes can be postponed because issues are found. In this case, the issues must be remedied and a new candidate release created before calling for another vote. Depending on the issue(s), the process to remedy the them can take anywhere from a few hours to a few weeks. This process ensures the required collaborative, consensus-based nature of the ASF. This provides many benefits that all result in stable releases and is a Very Good Thing. This is the classic open source mantra that says, It will be released when it's ready. As great as this process is for the community, it is not conducive to running a business.

Enter Fuse...
This is exactly where Fuse enters the picture. IONA offers a lot of options with Fuse including paid professional services, enterprise level developer support and production support, professional training and much more. We are also beginning to work on improved documentation, system testing as opposed to only unit testing. And because we're further integrating each product in the Fuse suite, we are building and testing each product therefore deriving more stability for each product as well as the overall suite. And customers demand that we do these things because they need a product that is stable and professionally supported to deliver the right SLAs. But that's not all, not by a long shot. The fact that IONA is working on these items for ServiceMix means that there are many benefits to the Apache community.

Benefits to the ServiceMix Community
Because IONA works with ServiceMix so much, we provide many direct and indirect benefits to both the project and the community. The biggest possible direct benefit is that IONA contributes almost 100% of the work we do on Fuse back to the ServiceMix project. There is a small percentage of work that isn't contributed back due to customer requirements, most typically something that is very customer specific or involving customer intellectual property. Save those small number of cases, we care very deeply about the ServiceMix project and spend a lot of time working on it for the good of the community. Not only do we develop new features but we also polish and extend existing features. There are also indirect benefits to the ServiceMix project. Because we contribute so much time and effort to the project, we're helping to produce stable releases for the community. Good community releases and a healthy overall project == more folks interested in ServiceMix == more folks becoming involved in the project. The recent discussions about ServiceMix 4.0 are good proof of the collaboration being driven within the ServiceMix project. I'm thrilled to see so many people interested in helping to decide the future of ServiceMix and I foresee many more people in the community earning committer status and PMC membership.

28 August 2007

My Soapbox for SLF4J



There seems to be a ruckus being generated lately over SLF4J. Both Howard and Dion have posted on the topic so far and they have their reasons. But I see that some things have been left out of the discussion, so I'll get on my soapbox for a bit to offer my own opinion.

<soapbox>
IMO, the most important point about JCL is that the use of it is most oftentimes incorrect from an architecture standpoint, and this is according to the creator of JCL, Rod Waldhoff:


'...The purpose of Commons Logging is not to somehow take the logging world by storm. In fact, there are very limited circumstances in which Commons Logging is useful. If you're building a stand-alone application, don't use commons-logging. If you're building an application server, don't use commons-logging. If you're building a moderately large framework, don't use commons-logging. If however, like the Jakarta Commons project, you're building a tiny little component that you intend for other developers to embed in their applications and frameworks, and you believe that logging information might be useful to those clients, and you can't be sure what logging framework they're going to want to use, then commons-logging might be useful to you...'


Here is Rod's full blog entry.

Additionally, back in 2004 Ceki posted an extremely good writeup about the shortcomings of JCL that addresses the classloader issues with JCL. Anyone who has ever been bitten by these issues has my sympathy because I've been there before as well. Even the latest Spring Framework project (Spring OSGi) doesn't use JCL. Instead, Spring-OSGi switched to SLF4J. My buddy Chris has a great blog entry about JCL classloader issues as well.

And using java.util.logging (JUL) is just not a good option. Sure it's baked into the core Java libraries, but it is a pain to reconfigure because there are really only two options: a) via the logging.properties file in the JRE, or b) by supplying system properties (-D) to the JVM. Why would I want to reconfigure logging for my entire JRE and I suppose I could supply even more system properties to the JVM but what PITA. And don't get me started about the JUL feature set lagging behind Log4J so horribly in the areas of formatters and handlers. This is exactly why the x4juli project was created.

SLF4J provides what the vast majority of people really wanted (and assumed they were getting) when they adopted JCL in their projects. That is, an abstraction layer for logging that allows you to plug in your logging framework of choice at deployment time. SLF4J statically binds to a particular logging implementation so that there is no automagic discovery for configuration. This gets around the whole JCL nightmare.

SLF4J also supports the MDC/NDC (Mapped Diagnostic Context/Nested Diagnostic Context) that are supported in Log4J. The trouble with using these from Log4J with JCL is that JCL won't let them through its facade. SLF4J also offers parameterized log messages which is a really nice feature. Though the FAQ explains it, here is some more info on parameterized logging.
</soapbox>

OK, that's my soapbox for today. Maybe I'll add more to this later.

07 August 2007

Google Voice Local Search




It seems that Google is now offering a free 411 service named Google Voice Local Search. I've already tried it and it works great *and* I don't get charged! Is there anything that Google is not into yet? Just look at all the stuff being offered by Google Labs these days.

04 August 2007

Combining Multiple PDFs on MacOS X



This week I had to concatenate multiple PDFs into a single PDF. I have worked with Postscript in the past and I could hack together a script to do it, but I didn't have the time to do this so I resorted to Google. There I located Combine PDFs which worked like a charm.

The really interesting thing about working with PDFs on MacOS X is that Apple provides lots of libraries for working with PDFs in MacOS X and Combine PDFs just makes use of these libraries. Even the source code is provided on the website if you're interested to plow through to understand how this is implemented. Very nice ;-).

Now I need to click the PayPal link to give the author some cash. I have no problem doing this as the software was a very big help to me when I was in a crunch. Thanks!

03 August 2007

Keeping Your Sanity When Working at Home

A while back I promised a write-up from a red-eye flight of my experiences working out of a home office (aka working remotely). Unfortunately, the last red-eye flight I had was spent polishing chapters. So after a five hour delay in an airport this evening, I'm writing this entry from another red-eye flight.

I've worked remotely in various capacities since back in the mid- to late-1990s while working for various startups and my experiences have varied widely. What I've learned in that time has helped me to figure out how and when I work best. This will likely be a very long topic, so I'll break up over two or three entries. There are many aspects of working remotely and I could go on and on about this topic. So I've decided to whittle down my thoughts into a set of tips based on my experiences and perspectives.

Adhere to a Schedule

This is a no-brainer for most folks, but I still mention it all the time. Try to stick to a schedule, not only so that others know when you're available, but also for your family and yourself. A workday that is broken up and inconsistent can really wreak havoc on yourself and others. I'm not saying you need to be dogmatic about it because everyone has things come up. But try to keep the same general work hours. It will help you keep your sanity.

Focus on Work Tasks

A movie from years ago named Disclosure portrayed a vicious battle for corporate position filled with scandal inside a tech startup where Michael Douglas' character was accused of sexual harassment. As the scandal was consuming his life, he was reminded over and over by a colleague to fix the problem but he didn't take heed. It wasn't until the night before his big presentation where the biggest scandal yet was about to take place that he discovered the accusation was meant to be a big distraction while the real trap was being laid. His colleague had kept telling him to fix the problem yet he had neglected to see what was right in frton of him - his job.

Don't forget that your focus is still on the work you are paid to do. I routinely run into articles, blog entries, house chores, errands, etc. while I'm working that I'd rather be doing to need to be done instead of doing my work. So I try to remain focused by bookmarking stuff and filing it in a folder I named toRead and using a GTD tool (more on this in a bit). Then I read this stuff in my copious amounts of free time ;-).

Take Breaks!!!

I can't tell you how much better I think about problems and perform my work by simply taking breaks. As the Audioslave song says, 'I like hammering nails and speaking in tougues, because it doesn't remind me of anything,' - do something completely different from what you're doing for a bit. It's surprising how taking your mind completely off of a problem or task and coming back to it with a fresh perspective can really, really help.

Organize Your Tasks

The book Getting Things Done is a great resource for keeping yourself organized. It's got a lot of very basic tips that are really good. There's also some great software out there for helping with this including kGTD (which is in the process of becoming OmniGroup OmniFocus) and iGTD just to name a couple of MacOS X apps (sorry to the Linux and Windows folks - I'm sure there's stuff out there).

Vary Your Work Location

This one works for me but may not for others. I have discovered that I tend to focus better when pink noise is present. Pink noise kinda sounds like static and acts to mask background noise to help me concentrate better. I even use a pink noise generator named Noise. I have also found that I can sit in a bustling coffee shop and focus much better than sitting in a quiet room - as long as there is nobody who's talking loudly on a cell phone or just particularly loud. Most of my work revolves around problem solving in one way or another (e.g., writing code, digging through code, working on architecture, etc.) and focus is important. If I'm trying to read this doesn't always work. Sometimes music is enough, but sometimes that makes me pick up my guitar and I get distracted for a bit ;-).

Don't Get Too Distracted By Email
I receive a *lot* of email. This is mainly due to my being subscribed to some 30+ mailing lists for various open source projects. As much as I watch what is happening, the majority of the time I am skimming subjects to see if the discussion thread is interesting to me. There are lists for which I do read every message but I certainly don't read every single message that enters my inbox. At any rate, the point of this tip is to let you know that we all experience information overload and email is a big contributor to this dilemma.

My advice is not to let it suck you in. You can blow more valuable work time in your email client that you realize. My strategy is to keep my work email separate from my personal email (I use separate addresses) and to make full use of a good email client to filter email into various categories. I tend to pay special attention to messages that are sent directly to me as opposed to those sent to a list to which I'm subscribed. Even the most seemingly innocuous things in this world can be addicting and email is one of them. Don't let your email control you.

Review, Review, Review

Just like any Agile Methodology in the software development world, reviewing where you are at in your workload should be a constant. GTD teaches you this because remaining organized doesn't mean simply keeping little Post-It Notes for your TODOs all over the place. Situations can change on a moment's notice and it's important to take stock in where you've been, where you are currently and where you're going.

There will be many more tips to come and not all of them will be general advice. I have discovered many tips and productivity tools by simply sitting next to friends while we work on our own things. It's amazing what you can pick up from others in this manner. Unfortunately, I don't have the chance to work with friends too often these days as travel to be with clients seems to dominate my workload lately. If you have tips, tricks, ideas, tools, etc. to share, please let me know.

30 July 2007

Courage Classic Charity Ride 2007 - With a Twist


Last weekend I rode in the Courage Classic to benefit the Children's Hospital for the third year in a row. I really enjoy this ride every year, but this year had a twist. I didn't ride as many miles because my oldest daughter rode with me on Sunday. She road her own single-geared bike through 36 miles of the course between Copper Mountain and Breckenridge - and she's only nine!!! People on the course were pretty blown away and she was absolutely thrilled to have accomplished the task and to cross the finish line all on her own power. I love being in the outdoors, riding through the Rocky Mountains of Colorado and it was even better having her with me.

Welcome to the New Joint


...
So useless to ask me why
Throw a kiss and say goodbye
I'll make it this time
I'm ready to cross that fine line
...
This brother is free
I'll be what I want to be