Welcome!

Software As If It Matters

David Dossot

Subscribe to David Dossot: eMailAlertsEmail Alerts
Get David Dossot via: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Latest Blogs from David Dossot
Like any test infected programmer switching to a new development platform, I have spent my first days working with Erlang looking for my seams. Here, I am talking about seams as defined by Michael Feathers in Working Effectively with Legacy Code: "A seam is a place where you can alter ...
If you wonder why is the Software Craftsmanship movement valuable, Calvin and Hobbes have the answer for you:© 1996 Bill Watterson
During the past months, ToughtWorkers have been regularly pounding on ESBs in a manner that Martin Fowler has neatly summarized like this: "Hang around my colleagues at ThoughtWorks and you soon get the impression that the only good Enterprise Service Bus (ESB) is a dead ESB. Jim Webb...
I feel a little like George McFly, now...Trees had to die to get us there by here we are: Mule in Action is now treeware. And in case you missed it, the making of was here.Enjoy the reading!
In "Working Effectively with Legacy Code", Michael Feathers gives this definition:To me, legacy code is simply code without tests.He also adds:I've gotten some grief for this definition.Indeed, defining legacy code is hard.After purging one of our project from code that we consider leg...
Transgressing the Law of Demeter can not only attract the grain goddess' wrath on you but can also turn classes into angry monkeys. Let's see how.Consider this freshly created method and notice how it asks for more than it needs, setting the stage for the upcoming drama that involves a...
Groovy's MarkupBuilder makes outputting REST microformats a bliss.Read more about this in my guest blog entry "Having Some REST with Mule’s Power Tools" that MuleSource has just published on "From the Mule’s mouth".
Suppose we have the following code:public class Thinger { private static final RESULT = "Joy"; public String doThing() { return RESULT; }}When testing such a code, it is tempting to modify the visibility of RESULT to package protected in order to write tests that share the consta...
While following the discussions on Oasis Blue's SmartGrid Interest List, I noticed that smart device makers quickly reacted to the draft charter for the proposed OASIS Energy Market Information Exchange (eMIX) Technical Committee by stating that their capacity to implement full-fledged...
Migrating monolithic systems to distributed ones is probably one of the most exhilarating tasks in software development.Monolithic systems, even if they engage in interconnected relationships, remain pretty much like silos (I like compare a network of monolithic systems to silos conne...
Embedding Mule in a web application allows you to tap the Servlet layer of your favorite web container, which is a good thing as you are supposedly very familiar with its behavior and tuning.When it comes to writing functional tests for such an application, my strategy was to replace t...
Who owns this application? What can possibly be complicated about such a simple and innocent question?Unfortunately, the answer to such a question is not that easy. Or at least, we have created software organizations that make it hard to answer.Though it makes sense to have a division ...
Not so long ago, I have been tasked with the development of an in-memory IP address geolocation library. Yep, that was pretty cool and challenging at the same time (well, the challenge made it cool, right?).In this short post, I want to share how the design of one component, the data d...
One of the thoughts I gathered from last night's panel on the possible death of SOA, pertains to the natural consequence of the push back on the WS-DeathStar and the spike of interest in the REST architecture.So what is the consequence of dropping the dream of web-level distributed tra...
DD: Hi Mr. Web Thread and thanks for joining us.WT: My pleasure. Do you mind if I stay in the pool?DD: Hmm? Sure, why not. So, can you please tell us how is your life nowadays?WT: Life has been pretty good. I have become very popular recently and came to perform some massive gigs in hi...
More than twenty years after my last statistics class, this book really tasted like a rejuvenating read. It is well structured, with an opening focused on theory followed by numerous applications in all sorts of domains (yes, including poker, though my preferred subject was the Drake E...
In Standards Based vs. Standardized Neal Ford develops a very interesting rhetoric that is mainly focused on what he sees being "wrong with SOA (Service Oriented Architecture) in the way that it's being sold by vendors", but really touches a vast subject that has many thought provoking...
Always interested in sharing the futility of my own existence, I thought that I could use Ping.fm to broadcast my boredom level (i.e. LinkedIn status) on different channels.All went fine until I hit the page for connecting my Ping.fm account to my LinkedIn one. See for yourself:Serious...
Whether you use Mule or another integration framework, writing integration tests for asynchronous services can be a little tricky, as you may start running assertions in your main test thread while messages are still being processed.Suppose you want to ensure that your content based ro...
The more I progress in my journey as a software engineer, the more I realize how our profession suffers from the Sin of Generalization. The good news is that this sin can be fought with a rope and a mast. Let me explain.This almost deadly sin manifests itself in two ways:A tool or a me...
Now that dust has started to settle, I have some time to reflect on writing Mule in Action and share my experience with this process.I will spare you the "it's a long and exhausting process that is a true trial for one's will", because you already know that such an endeavor requires a ...
While I am refactoring huge amounts of code out of EJB2 (and trying not to break too much things), I have noticed a bad design pattern that is so noxious I thought I should blog about it.I call this the Phony Model Objects (PMO) antipattern.It basically amounts to sharing as first clas...
Ross Mason has interviewed me (again) about the JCR transport for Mule. I also had a chance to give a few words about the brand new Common Retry Policies module.Enjoy!
After months of procrastination, I have decided to give a try to e-ink and go paperless as much as I can. I have been using a Sony PRS-700 for a month now and I must say I am really happy with it.This picture does not render the actual contrast and precision of the e-ink surface.I opte...
You may have recently read two eponymic blog posts about this crucial subject, so I won't give you ten more ways to suck at programming but just one.Here it is:Don't critique your code.If you never ever have a critique view of your code, you are on your way to write software that sucks...
In the latest installment of his monthly IEEE Software column, Philippe Kruchten asks about the relevance of licensing software engineers. In this article, he states:The only purpose of licensing software engineers is to protect the public.He then details the reasons why it makes sense...
I am happy to announce the very first release of the Common Retry Policies module for Mule 2.The goal of this project is to encourage the Mule community to nurture a set of production grade retry policies. At this point, the available policies have been tested only with a limited set o...
Hard times provide opportunity for change. Can't afford for a project to fail? Applying agile development principles can help. Doing projects with fewer people? Applying agile development principles can help. Limited resources throw options in sharp relief where a surfeit of resources ...
I attended my first Eclipse Demo Camp last night in Vancouver and it was really a great event! Of course, the profusion of food and beer offered by the Eclipse Foundation at the end of the evening surely helped building such a great impression...The whole evening was driven by the Task...