Archive

Archive for May, 2010

Episode 6 – Apple vs Adobe & Open Source Inc.

May 31st, 2010
Apple vs FlashEpisode 6 marks the return of The Basement Coders Podcast! Craig Tataryn is back with all new co-hosts Jeff Genender, Guillermo Castro and Justin Lee. We hope you enjoy the podcast!

In this episode we dissect Apple's position on Flash and what this means to us both as consumers and developers. As well, we ponder the reality that corporations have become the shepherds of mainstream Open Source Software. Why? Have a listen and find out!

Links used during this podcast can be found in del.icio.us:
  • No bookmarks avaliable.

Other links noted in the cast:

Listen here:

 

Download

Enjoy!

Podcast

It’s always great when your reputation precedes you

May 10th, 2010
Starting a new/old contract this week. From 2000-2006 I worked with Morgan Stanley mostly on recruiting and talent management HR software. I've been asked back to help out with some additions/enhancements to their project governance software, and here is the intro which was sent to the dev team about my arrival:

Craig Tataryn (Location: Winnipeg - Work from Home) - Craig also worked with us in the past primarily in the Recruiting area as a web developer with a strong knowledge of 'The Simpsons'. We have brought Craig back primarily for his sense of humor and knowedge of Homer Simpson, but we also hope that he will provide value as a developer on the MER/Capital Budget project. Craig's first day will be some day this week.

Now off to find my drinking bird toy and order me a Tab!

General

Give Credit where Credit is Due: Dan Kulp

May 8th, 2010
hl7logoI've just finished up a year long contract at a major insurance company writing their first outward facing HL7 Web Services.

From my Leap Frog days, I learned to write SOAP and REST based web services using Apache CXF. During that contract I always heard the name "Dan" come up, apparently he was "the CXF guy" who could solve any weird bug that we found when implementing our web services.

After Leap Frog I started the insurance gig. I was pretty much given carte blanche over the JAX:WS stack to use. In my heart of hearts I knew the insurance company wanted me to use Axis as they were a big IBM shop and Webphere Application Server (WAS) comes equipt with a "Web Services Pack". Given the complexity of HL7, and the ridgidity of WAS "Packs" I forged ahead with CXF.

For the most part the large and unruley HL7 schemas were consumed without problem by CXF. However, there were snags. Mostly with JAXB and Schema validation. I'm talking problems where I debug the stack for two days and still don't know what the hell is going on! I became desparate at certain points, I mean we'd run into a problem and I'd need an answer or some type of direction on how to proceed. All I would have to do usually is email the CXF-user mailing list and my answer would be addressed within a day. There were some problems though where I couldn't wait. I mean problems where people are literally waiting, money is being lost because we can't deploy for testing. That's when I needed more interactive help.

sopera_logo_72dpi_250pxMy friend Jeff Genender who I worked with at Leap Frog suggested I talk to Dan Kulp over at irc.codehaus.org on the #cxf channel. So I did just that, and wow,what a smart, polite and helpful person Dan is! He helped me through some of the weirdest problems. He got me to create test cases to demonstrate my problems, and even helped me navigate the CXF code such that I was able to submit my own patches when I had a resolution for a problem. Dan recently lost his job due to lay-offs at Progress, and after a short "vacation" of spending time with his family and fighting off job offers, he decided to work for SOPERA, which looks like a perfect fit for Dan. He still gets to be lead on CXF, maturing the framework and generally kicking ass supporting it, while working on Service Mix and other frameworks comprising SOPERAs product offerings.

Well Dan, all I can say is I'm truely grateful for your help. You are the type of project lead that shows how agile OSS projects can be! Both myself and Great West Life Assurance owe you a debt of gratitude. I'm continuing on to a new contract now with Morgan Stanley, and I'll do my best to ensure CXF is our web services framework of choice. I'll also contribute more patches, and help out with the JIRAs!

General

Maven Exclusions – Not Always Inherited

May 7th, 2010
Learned the hard way that Maven exclusions do not get inherited from parent pom files if you happen to add an exclusion in a child pom.

An exclusion is a dependency you do not want used when building your project. For instance, if you have a parent project which declares a dependency in it's dependencyManagement section, and that dependency has a transitive dependency that you don't want to be used (i.e. an old version of JAXB) you can exclude the transitive dependency like so:

<dependencyManagement>
<dependencies>
  <dependency>
    <groupId>some.group</groupId>
    <artifactId>some.artifact</artifactId>
    <exclusions>
       <exclusion>
          <groupId>javax.xml</groupId>
          <artifactId>jaxb-xjc</artifactId>
       </exclusion>
    </exclusion>
  </dependency>
</dependencies>
</dependencyManagement>

However, if you have a child project which references the parent containing the exclusion, and the child project itself places another exclusion on the same dependency:

<dependencyManagement>
<dependencies>
  <dependency>
    <groupId>some.group</groupId>
    <artifactId>some.artifact</artifactId>
    <exclusions>
       <exclusion>
          <groupId>javax.xml.parsers</groupId>
          <artifactId>jaxp-api</artifactId>
       </exclusion>
    </exclusion>
  </dependency>
</dependencies>
</dependencyManagement>

It's not like both jaxb-xjc and jaxp-api will be excluded from your build. In fact, when the child specifies its exclusion, that exclusion "wins". It overrides any exclusions specified in the parent's dependencyManagement section.

mvn -X [your goals here] helps a lot when trying to debug which dependencies are actually being used in a build of your code. So for instance: mvn -X clean install will dump out diagnostic info about what JVM you are running, as well as an "mvn dependency:tree" type output of the dependencies being used in your build.

Hope this helps someone else banging their heads against the wall trying to figure out why their exclusions aren't working!

Craig, General ,

Support Wikipedia