My Stuff

2010 Conferences

OSGi DevCon @ JAX London

February 23 - Keynote titled OSGi in the Enterprise: Agility, Modularity, and Architecture’s Paradox


March 22 - 25 - Tutorial on Modular Architecture

Über Conf

June 14 - 17 - Sessions titled Turtles and Architecture and Patterns of Modular Architecture


July 26 - 30 - Two sessions on rich mobile applications and one on agile development. Half day tutorial on software process improvement.

Tweets @ Twitter

re: #apple event "We sold more iPads than any PC manufacturer sold of their entire PC line." 2012-09-12

re: #Apple Event ""Our notebooks now rank #1 in the US in Market share in the last three months." 2012-09-12

Right on. I just won a Best Buy drawing worth $1000. Either that or I won a shiny new virus by clicking the link. Hmm...what to do. 2012-08-29

The #osgi alliance response ( to the @mreinhold #jigsaw announcement ( 2012-08-29

Good Q&A with @mreinhold on project #jigsaw. Modularity will change the way we design and run apps! 2012-08-28

LinkedIn Profile

The opinions expressed on this site are my own, and not necessarily those of my employer.

Farewell Blog, Hello POMA

Filed Under Development, General, OSGi | 6 Comments 

As the saying goes…all good things must end. As of today, my blog is shutting down!

I do intend to leave all content on-line so you’ll always be able to see a list of all 134 posts, but there won’t be any new posts for the foreseeable future. I’d like to thank everyone that has taken the time to read my often times long-winded posts. I hope you’ve found them useful.

For the past few years, I’ve written almost exclusively about modularity and OSGi (with a few other topics sprinkled in on occasion). To that end, I’ve decided to pursue a long overdue book project, tentatively titled Patterns of Modular Architecture (POMA). I hope you’ll decide to join me in my journey. Also, be sure to follow the book updates on Twitter.

So as to not disappoint those who have come to expect something a bit more verbose, I have managed to cobble together a few words explaining my decision in more detail. So if you want to know more, read on!

Story Behind the Story

Over the past few years of blogging, I’ve focused considerable energy on espousing the virtues of modularity and OSGi. From conceptual posts that discuss the important architectural benefits of modularity to simple examples that illustrate the benefit. From the beginning to the end, I’ve written about the benefits of modular architecture at a conceptual level, practical level, and have even provided some concrete examples. To the chagrin of some, I’ve even discussed the challenges that lie ahead. Of course, modularity and OSGi aren’t the only topics I write about. I’ve also written about agility, IT labor, metrics, and more. At some point though, the topics always came back to modularity and OSGi.

In the time that I’ve been focused on modularity and OSGi, the number of folks that access the content on this site have gone from less than 1000 visitors per month to more than 10,000, culminating in more than 100,000 pages served up and over a quarter million hits to the site each month. The blog was listed as one of the Top 200 Blogs for Developers, a Top Analyst Blog, and many of my posts are syndicated on JavaLobby. While still small by many standards, I recognized progress. And in general, the feedback I’ve received from the community is positive, though there is no doubt that at times, I’ve struck some nerves.

For those that read my posts, you already know that most tend to span many paragraphs. They require extensive writing time, considerable editing time, and careful review. It’s taken me hours to author many of them. And all of the content on this site has always been licensed under a Creative Commons Attribution-Noncommercial-Share Alike license. I vowed to never include any noise on the site, such as Google AdSense. It’s always been an earnest attempt to help developers improve the systems they create. A labor of love, you might say.

A while back, I introduced the modularity patterns, but didn’t elaborate much on the patterns themselves. Alas, that time has come. I’ve quickly realized that I do not have the bandwidth to continue with my long-winded posts and write a book. I’ve decided to pursue the latter and am hopeful that a book on modular architecture will have a far greater, longer lasting impact that serves as a capable ambassador for modular architecture. So while my blog may be silent, I have every intent to continue my advocacy of modular architecture, albeit in a way that I hope is more impactful.

I’ve decided to adopt an open and transparent approach to writing the book. The book’s website illustrates the book in it’s current form - a rough and incomplete draft to be sure. But I hope you’ll take the time to check it out, and offer any feedback you might have. I’ve created a Reviewers page that provides some guidance on the type of feedback I hope to receive. Also, be sure to follow the updates on Twitter.

By the way, this does not mean that I’ll necessarily cease my blogging activities altogether. In the past, I’ve published some articles to the APS Blog. Soon, the APS blog will also be shut down, and we’ll begin to blog on the Gartner Blog Network (GBN). So be sure to checkout GBN on occasion!

Thank you!

OSGi DevCon Keynote

Filed Under General | Leave a Comment 

I’m excited to be given the opportunity to present the keynote at OSGi DevCon London on February 23, 2010. The event is hosted in conjunction with JAX London. The sessions for the conference look great, with a great lineup of speakers and 15 sessions, including two in-depth tutorials by Neil Bartlett and Peter Kriens, devoted exclusively to OSGi.

Here’s the abstract for my session titled OSGi in the Enterprise: Agility, Modularity, and Architecture’s Paradox.

Attempts to architect more flexible software often results in the opposite - brittle software fraught with complexity. Something is missing. Complexity is the beast we must tame, and modularity is part of the answer. In this keynote, we’ll examine the challenges of traditional approaches to software architecture, probe the paradox of architecture, and explore the inextricable link between structural and temporal architectural decisions. From the highest level applications and services to the code that exists in the bowels of the system, we expose the advantages of a modular architecture. Come learn new ways that large software systems can be organized to increase flexibility, reusability, adaptability, maintainability, testability, and extensibility. Come discover the importance of OSGi in the Enterprise.

Yes, come discover the important of OSGi in the Enterprise!

Top 5 Essays You Should Read

Filed Under General | 1 Comment 

Certainly, there are many landmark books in software development that have shaped our industry. Design Patterns: Elements of Reusable Object-Oriented Software (the GOF book) is one really good example. Unfortunately, a good share of people don’t have the opportunity to read some of these great works because, well…it can get expensive pretty quickly stocking a bookshelf. But there exists a treasure trove of published content available online that is equally impactful. Here, in no particular order, are 5 essays that have helped shaped our industry, for better or worse.

  • Cathedral and the Bazaar by Eric Raymond - Discusses the evolution of Linux and provides amazing insight to lessons learned.
  • Code as Design by Jack Reeves - Presents the notion that programming is fundamentally a design activity and that the only final and true representation of “the design” is the source code itself.
  • Managing the Development of Large Software Systems (pdf) by Winston Royce - Paper widely regarded as that which gave birth to the waterfall development lifecycle.
  • No Silver Bullet by Frederick Brooks - We’re still looking, but as this paper points out, there is no silver bullet. The essential complexity Brook’s speaks of is largely why we continue to struggle with the same problems today that we did a decade ago.
  • On the Criteria to be Used in Decomposing Systems into Modules by David Parnas - Discusses the important design decisions that impact how we modularize our software systems. Important because modularity is coming to the Java platform, and we need to know how to use it effectively.

I’ll give an honorable mention to Design Principles and Design Patterns by Bob Martin, which discusses key principles of object-oriented design. Many of the patterns in the GOF book adhere to these principles.

These essays are sure to provide a positive and lasting influence. But I’m sure there are more. What am I missing? What do you consider the most impactful software development essays? What would you add to this list?

Mac Migration

Filed Under General, Technology | Leave a Comment 

Yeah…check out that battery life. That’s not 7 minutes and 26 seconds, that’s 7 hours and 26 minutes. Last weekend, I migrated to a new MacBook Pro.

Starting the Migration

Before migrating, I had some questions on the migration options. I knew about the OS X Migration Assistant, but I also create daily backups to a Super Duper drive. From a reliable source, I found that I should be able to simply restore my new MBP from the backup of my old MBP. He’d done it and was up and running in about an hour. But I was still a tad skeptical, since the old MBP I was using was built atop older hardware and I’m assuming had to have different drivers. Specifically, it was a 2.0 GHz Core Duo with 2GB RAM, but without the multi-touch trackpad found on the new machine. For reference, the new MBP is 2.53 GHz Core 2 Duo with 4 GB of RAM. Both were of the 15″ variety. I just wasn’t confident about compatibility between these two machines with such different birth dates.

I started by setting up the new MBP, but chose not to run Migration Assistant. Instead, I figured I’d try booting my new MBP from the Super Duper drive. If that worked, I’d use the Super Duper drive to setup my new MBP. If not, I’d run the Migration Assistant. I’d booted my old MBP by simply holding down the option key upon startup, and then selecting the drive I wanted to boot from. Upon trying this with my new MBP, the only bootable disk presented to me was the MBP hard drive. This concerned me, and I couldn’t bring myself to try restoring from the Super Duper drive. If I couldn’t get it to boot from the Super Duper drive, would restoring cause similar issues when booting? I was concerned, so I opted (ie. chickend out) to use the Migration Assistant. Here’s that story.

Migration Assistant - Pass 1

As I mentioned, I chose to setup my new MBP while foregoing the option to run Migration Assistant at the same time as setup. This was a mistake. Once I setup the new user account on my new MBP, use of the Migration Assistant was problematic. It worked, just not the way I wanted it to. If I wanted all of my preferences, applications, settings, and data, I needed to copy the user account of my old MBP. Unfortunately, I couldn’t copy that on top of my new user account I had just setup on the new MBP. At least, I didn’t know how. Instead, the Migration Assistant created a new user that represented my old MBP account. That’s not what I wanted. I wasn’t really sure how to merge two user accounts, and since this was a new machine, I didn’t want a hack right out of the box. So I decided it was time to start from square one.

Installing OS X

I pulled out the OS X install disk, and did an Erase and Install of OS X on my new MBP. This took about an hour and put me back into the factory default settings so that when I turned on the machine, it’d walk me through the setup again. Bingo. Worked like a charm. Now, when booting my new MBP, I selected that the option to transfer files while performing the first time setup. Because it asks to do this before setting up any user accounts on the new machine, I figured it would just clone my old MBP onto my new MBP. And it did.

Migration Assistant - Pass 2

During setup, the Migration Assistant prompted me to connect the two machines via Firewire. Because I was using an external drive connected via Firewire on my old machine (that was the Super Duper drive), I had a Firewire cable handy. I connected the two machines, opted for the default settings in migration assistant, and it started the copy. The copy took roughly two hours, and when I was done, I had a complete clone of my old MBP on my new MBP. It worked like a charm.

Everything appears the same on my new MBP as it did on the old MBP. Right down to the wallpaper on my desktop. All the applications (at least those I’ve tried to this point) were copied over, and all are accessible. I didn’t have to re-enter any license keys. Didn’t have to reinstall any FireFox plug-ins. Nothing! iTunes even worked, and my library was copied over perfectly. All I had to do upon starting iTunes was authorize my new MBP.  While it’s possible restoring from the Super Duper drive would have also worked, the Migration Assistant worked very well for me. But I could have saved a bit of headache had I opted to run the Migration Assistant first time around.

Overall the migration took about 5 hours. But had I run the Migration Assistant the first time through, I estimate it would have taken about two hours. As interesting developments unfold, I’ll update the Miscellaneous Notes section below. Right now, I’m working on my new MBP.

Miscellaneous Notes

  • After running Migration Assistant, I ran a software update. I’m glad I did. I found that there were a few applications that weren’t copied over (or at least updated when copied). iTunes was one of them. I can’t imagine the mess I might have had if I didn’t upgrade to iTunes 8.2 before connecting my iPhone, especially since iTunes 8.2 is required for iPhone 3.0 software which I had just upgraded using my old MBP.
  • I’m still getting acclimated to the multi-touch trackpad. I had grown very accustomed to resting my thumb on the clicking device on my old MBP. Now when I do that on the new multi-touch trackpad, it thinks I’m trying to give it a gesture of some sort.
  • When installing OS X, I was forewarned that I may need to resinstall some of the applications (iLife). This never materialized since the migration did move those applications over from my old MBP.
  • The new MBP uses a Mini Display port for an external monitor. The old MBP used a DVI port. So I had to purchase a new adapter because none was included “in the box.” I bought the wrong one. I thought (silly me) that I could use a Mini Display port to DVI adapter and then use the older DVI adapter to VGA adapter from my old MBP. Not so. The pin configuration for DVI was slightly different.
  • I often times work with my MBP on my lap. It’s amazing how much cooler the new MBP is than the old MBP. The old MBP got very hot. The newer…not at all. I’m guessing that’s because the new MBP has the battery encased within the solid aluminum body of the new MBP. But I’m not sure…I just know it runs much cooler to the touch.
  • Even after installing OS X, running through the Migration Assistant, wiping out my Super Duper drive completely, and creating a new backup of my new MBP, I still cannot boot from that drive. I do not yet know why. I’ll have to troubleshoot.
  • I love the new magnetized mechanism that holds the LED down when closing. It’s aesthetically pleasing. However, I don’t like the finger prints that accumulate at the top of the display.
  • I’ve discovered that my scheduled Super Duper backups haven’t run for the past week. Strange. I tried initiating the scheduled copy manually and receive an error stating it can’t find Macintosh HD. Wow. I deleted that scheduled copy and created a new one and the copy appears to be executing successfully.
  • As I mentioned, I wasn’t able to boot my new MBP from my Super Duper drive. So I was curious. I tried booting my old MBP from the Super Duper backup I created from my new MBP. The old MBP booted up fine, and I was able to see all the application upgrades and file changes I had made on my new MBP. That’s cool!
  • I find it absolutely fascinating that I’m able to boot my old MBP using the Super Duper backup of my new MBP. The old MBP must have different drivers and hardware. I don’t know the details surrounding OS X architecture, but it must have a cool abstraction layer somewhere that deals with this.

Mobile Madness

Filed Under General, Mobile, Technology | Leave a Comment 

I’ve always been obssessed with (or tormented by) portability and mobility. I want my information with me, accessible, all the time. This obsession began over 10 years ago.

Read more

The Paradox of Choice

Filed Under Development, General, Platforms | 1 Comment 

A couple weeks back, I watched the Barry Schwartz Ted Talk on The Paradox of Choice, and found it fascinating. He started by citing the official dogma of western civilization:

If we are interested in maximizing the welfare of our citizens, the way to do that is to maximize individual freedom.

He goes on to state that the way to maximize freedom is to maximize choice. The more choice we have, the more freedom we have, the more welfare we have.

That resonates with me. But how little I understand the human psyche was quickly revealed.

Mr. Schwartz continues by illustrating how all this wonderful choice we’ve been given has a paradoxical affect. We find it incredibly difficult to make a decision because the choice has a paralyzing affect as we strenuously evaluate our options. Once we are lucky enough to make the decision, we wind up less satisfied with our final choice. He calls this the opportunity cost of choice. Whenever we make a choice to do one thing, we are also making a choice not to do another. And if in the end we are not completely satisfied, we imagine another choice would have brought us greater happiness or pleasure. The opportunity cost of choice detracts from our satisfaction as we cannot resist the urge to think about the alternative options.

He drives that point home further by explaining that with so much choice, our expectations are artificially inflated. From all that choice, we expect perfection. On the contrary, when presented with only a single choice, our expectations are much lower. Now here’s the punchline! When given only a single choice, dissatisfaction is not our fault because we had no choice. But when given multiple options, if not completely satisfied, we tend to blame ourselves. Choice, believed to lead to happiness, in fact leads in the other direction. That’s paradoxical, no?

He concludes, perhaps jokingly, that the secret sauce to happiness is low expectations and that everything was better back when everything was worse. Or perhaps he wasn’t joking! Closer to the end of the talk, he told a simple story about his trip to the department store for a pair of jeans. The shopkeeper asked him if he wanted slim fit, easy fit, or relaxed fit? Button fly or zipper? Stone washed or acid washed? Boot cut or tapered leg? His reply?

I want the kind that used to be the only kind.”

Now that resonates with me. I’d encourage you to listen to the talk. I’m sure I’ve missed a few points. It’s just under 20 minutes and is time well spent.

Apologies. This entry has little to do with technology. Or does it?

BTW, the image was not created by me. I snagged it from the talk.

Agile 2009 Call For Papers

Filed Under Agile, General, Industry | Leave a Comment 

The Agile 2009 CFP is open. This year, I’m the stage producer for Developer Jam. As you can see, Developer Jam has an impressive review committee. We’re hopeful that 2009 will be as successful as 2008.

Once again, we’re planning to run a series of clinics. They’ll be hands-on, instructor led exercises that will teach attendees something practical. If you have an idea, write up a submission, but don’t wait until the submission deadline of February 15th. Doing it sooner ensures increased visibility with the group of reviewers, and that means greater likelihood that the session is accepted. Of course, there are no guarantees. As a bit of additional incentive, be sure to check out the speaker compensation rates.

I’m on Twitter

Filed Under General | Leave a Comment 

I’ve jumped on the Twitter bandwagon. Possibly a little slow, but better late than never. I’ve started following a few people, and so far I find it fun and interesting. I intend to post mostly on tech stuff. I’ve also included my tweet feed on the right sidebar of this blog. Or you can subscribe to my tweet feed separately. Or you can start following me now! You decide.

New Job New Skin

Filed Under General, Industry | Leave a Comment 

March 31st marks my first day as an Analyst with Burton Group working in the Application Platform Strategies group. To an extent, this is a career change for me. Since I’ve been in IT, I’ve worked exclusively on enterprise development projects. Over the years, I’ve played most roles on the software development team, but my favorite has always been as the guy who gets his hands dirty writing code. Through writing and speaking, I’ve enjoyed sharing these experiences with others. To this point, however, any writing or speaking I’ve done has always been an extracurricular activity, making it feel like I’ve always had two jobs instead of one.

My role as an analyst means I’m no longer a software developer working in the trenches. The reality over the past couple years is that I was working less in the trenches anyway. As I continued to shape and express my software development beliefs, I also began to gravitate more toward leadership roles, though not always intentionally. Whereas I once coded all day every day, I now code only a few hours each week. Instead, I spend more time mentoring developers, evaluating emerging technologies, and guiding teams through the process improvement quagmire. But yes, through it all, I still code even if it’s of my own accord.

My new role offers some exciting opportunities. Foremost, I’ll be working for a great organization with a stellar reputation. I also feel I have a single job that that combines my passion of technology, software development, and software process with that of my desire to learn and teach. I’m excited for what lies ahead, knowing that I must be careful to remember the important real world lessons I’ve learned. I intend to continue writing code, hopefully experimenting with new languages, platforms, and tools. I look forward to working with new organizations, and meeting new people.

Since I’m moving onto what feels like a career change, I’ve also decided to update my web sites (Yes, I love to hack!). First in queue is this blog, which now has a new skin. I’ll also be moving content away from my home page and onto this blog. Eventually, the code I write will reside on Google Code. Probably other presently unforeseen changes too. I’m excited about what lies ahead, and my expectations are high.

SpamBots Getting Through

Filed Under General, Technology | 7 Comments 

I use WordPress as my blogging system, and a while back, I installed the Challenge Captcha. But recently the SpamBots broke it and have been able to find the correct answer to the math questions. As a result, they’ve been leaving their nasty comments. So, I’ve reconfigured the Challenge to ask the question in a more English style. I guess it’s pretty easy for the SpamBots to evaluate “3 x 4 + 2″. But now we’ll see how easy it is for them to evaluate “What is the sum of 2 and 4″.

I really don’t know who has the time or energy to waste on such things. And I don’t know what they are trying to accomplish other than being a nuisance.

Next Page →