Wednesday, March 28, 2007

FIT Wiki = H.O.T. - & JBoss Rules + JavaSpaces = Smiles

Patrick and I had a rather long pairing session today.

We beat our rules module into submission. Turns out that JBoss Rules and JavaSpaces are a pretty good match.

Towards the end of the day, we had the unit tests passing and the integration tests passing. Then it was time for the FIT tests. They busted us proper. Our co-worker Ed was pretty pumped about this. Getting busted when you think you are done by tests you wrote at the outset of a development effort is a great thing. For us, it is one less thing that we will find out when we plug in Flex to our Jini/JavaSpaces back-end. That rocks.

And our FIT tests are plugged straight into our wiki. It is h.o.t.

We also have put JBoss Rules to work with JavaSpaces. It works quite well because it is POJO based and the compiled rules can just be put into the space as Entries. If that isn't h.o.t. I don't know what is. We have a generic worker that takes Entries out of the space & reads the appropriate rules files. It just asserts the Entries directly into the rules engine (they are POJOs too - Entry is just a marker). No XML marshalling / mapping madness etc. Just objects - neat!

JBoss Rules is not as sophisticated as some commercial proprietary rules engines, but appears to be more than adequate for lots of things.

Yay.

Saturday, March 24, 2007

Oracle buys Tangosol

Wow - that was fast.

This was discussed a while back on this TheServerSide thread.

I sure hope Oracle invests in the product and doesn't slow bleed it or margainalize it. Of course that never happens.

I stand by my comment from February (link above) on why commercial proprietary software is at the bottom of my preference list.

. . . Back to GigaSpaces and Tangosol. They both have compelling technology, but both are small vendors. Where will this technology go? Will someone buy it to kill it? Will they buy it to grow it? Will they remain independent? Who knows. If it were open, well it doesn't quite matter. I can happily pay them now and perhaps someone else later - or no one if I can support it myself.

Friday, March 23, 2007

Pair Programming

So I have been a long time doubter of pair programming.

I just spent 2 - 1/2 days pairing with this man.

I have to say - I really enjoyed it. Part of it is that I just love slinging code and I became a technical manager of sorts (in addition to remaining a technologist dude) 7 months ago. Pairing is a great way for me to get my code fix. Even after 7 months of not slinging heaps of code, certain corners of my brain started turning off. It was great to dig back in and light those corners back up. I even came up with a good idea to simplify something and received my "space man merit badge".

Our small team has been experimenting with pair programming for those that want to. It has been very successful.

I think that some of it is the fact that we are dealing with so much new (at least to us) technology. Pairing is (obviously to me now) a great way to spread knowledge, learn, etc.

I certainly don't think that 8 hours of pair programming every day is appropriate - at least for me or probably most people. But it is clearly a great thing to do *at least* a couple times per week or some such. I guess it depends on your role etc.

Anyways, I love it when a long standing belief / opinion of mine changes. It helps me know that I am pushing myself outside of my comfort zone and pushing myself. One thing is obvious (or should be) about the world we all live in now. Those that stop learning are toast. If you aren't learning new things (e.g., about your domain, techniques (e.g., agile, lean, xp, etc.), technology, negotiating/people skills, hospitals/manufacturing) you are going to hit a wall. It is amazing how comfortable you get with this concept once you sign up with life-time learning. I am constantly amazed at how many people don't view the world this way.

Thursday, March 22, 2007

Bike Pics

Is this bike h.o.t. or what!?!? I just rode it home from the bike shop. It is wicked fast.

I deserve it I think. At least that is what I keep telling my lovely wife.

Walking to work every day is great - it probably has kept me from having a heart attack this past year!

But, I need something more and bombing around on this bike is it. I hate the gym and such and don't play hockey or anything any more. Maybe I should start playing tennis again too.

Yay.

Tuesday, March 20, 2007

Java 7 - See Patrick

See Patrick, there is hope for Java besides just JavaSpaces.

Via Buko Obele

Monday, March 19, 2007

New Cyclocross Bike

I finally have pulled the trigger on a new cyclocross bike.

I went to River City a few times this past week. On Saturday, I brought my friend/co-worker Ed came with me to help pick it out.

I ended up getting a Gunnar Cross Hairs.

My brother-in-law works for SRAM so I wisely got their bits on there. The River City dude said that the SRAM bits have been getting good reviews so I'm excited.

I also got some tricked Chris King hubs / wheels.

I'm pretty excited to pick it up this week - they are building it now.

Thursday, March 15, 2007

Spring in Portland

Well, it has been Spring now in Portland for at least 2 weeks.

It really is shocking to me still - after living in the Midwest previously my entire life, how early Spring comes and how long Spring stays here. I was reminded of this by my mother today. She said the snow has almost melted in Grand Rapids, Michigan (where I grew up). I was like, "that's nice - we have had pink flower trees for 2 weeks!".

These pink trees are everywhere here - they just start going off. For me, when I see the pink trees, I know that I'm going to be ok. Because it is no joke, it does rain here - a lot. But compared to what!? It rarely gets below 40F here and there is no snow, sleet, etc. And the sun peeps through at least a bit most days.

I guess if you compare it to San Diego, the weather is not great. But I like seasons. The weather in the Pacific Northwest is my favorite.

I took the picture below in 2002 - my first "it is going to be ok because of the pink trees moment". The picture doesn't do it justice - these trees are everywhere and there are other flowers etc.

Hopefully Spring will come to you soon too.

It will be ok - I promise.

Sunday, March 11, 2007

Deschutes Fly Fish Day

I finally got to go fishing today. I wish I could do it more. Portland is great - you can get to the Deschutes in a little over 2 hours. The trout are native (called Redside trout) and are great fighters. Nothing like seeing one of them nail your dry fly. I caught three.

I went solo so I didn't take any pictures of the trout. But I did take pictures of some deer on a cliff looking at the river at dawn, a hawk, and the Deschutes river canyon in general.

Below the pictures I included some stuff on the symbolism of deer that my mom sent me last summer when we saw another deer family. Makes me feel bad for liking venison.

Update 12-MAR-2007 My mom read this blog post and sent me stuff on symbolism of the hawk! Work has been crazy busy & stressful and recently a bit sad/disappointing so it's nice to see there are some good signs out there. I added it beneath the symbolism of the deer.

Deer Family (you probably have to click it to see them - it was cool - I need a telebooya lens)

Symbolism of the Deer Deer blend very well with their environment but are very sensitive to every sound or movement. Often twins, even triplets, are born in the spring. Does and bucks live in separate groups until the mating season. The white-tailed deer are moderately gregarious, and family members forage food together along with other family groups, giving the appearance of a large herd. People with Deer Medicine are often described as being swift and alert. They are intuitive, often appearing to have well developed, even extrasensory perceptions. Sometimes their thoughts seem to race ahead, and they appear not to be listening. Deer's medicine includes gentleness in word, thought and touch, ability to listen, grace and appreciation for the beauty of balance, understanding of what's necessary for survival, power of gratitude and giving, ability to sacrifice for the higher good, connection to the woodland spirits, alternative paths to a goal . The gentleness of Deer is the heart-space of the Great Spirit which embodies His love for us all. Deer teaches us to find the gentleness of spirit that heals all wounds, to stop pushing to get others to change and to love and accept them as they are. The only true balance to power is love and compassion.

The Deer. Hunting prey animal, sacrificial and sometimes mentioned as "first helper" in a few emergence stories, also family protection and of course speed.

Deer - Love, gentleness, kindness, gracefulness, sensitivity, purity of purpose, walking in the light, swift, nimble, meek, gentle, meditation, love, longevity, wealth.

Deer and Stags represent swiftness, gentleness, grace and balance. They teach us the ability to listen and to sacrifice for the greater good

Symbolism of the Hawk Air Animal Totems have a penchant for assisting us in matters of higher knowledge. Air being the most ethereal of elements, it's understandable that the creatures who inhabit it are able to lend the best understanding of its invisible ways. Closest to the heavens, air animals are our best allies as they herald our desires to the Great Spirit.

Air animal totems are also symbols of strength (both physical and mental) and sovereignty. Very important traits, particularly when we are experiencing new transitions or surroundings in our lives.

If air animal totems are catching your attention, you should feel very heartened by their presence. Allow their spirit to boost your confidence, and remind you that the ultimate power is within this present, unseen moment. Air animals are good omens, and their appearance is like a wink from God.

The hawk is the great messanger and observer of the sky.

Hawk - Nobility, recollection, cleansing, observer, clarity, discrimination, inspiration, intuition, victory, healing, visionary power, and guardianship.

The hawk is the great messenger and observer of the sky. Hawks are fearless birds who will even face off with poisonous snakes if necessary. Hawks' piercing shriek tears through the air. In its shrill cry lies an important message which represents illumination. Hawk teaches us to scope out the situation and focus on our talents, trying to draw them out. Hawk learns to see the big picture in order to understand the past, present, and future. Hawk asks us to be observant of surroundings so we won't get distracted from our path by others. It also reminds us not to get caught up in minor annoyances so we can maintain our inner balance.

Monday, March 05, 2007

Software License Categories & My Preferences

I wish all software was FOSS. But this is not the case. I deal with many flavors of software licensing. Here are the categories that I am aware of in the order of my preference (1-3 are interchangeable). Am I missing any?

  1. Commercial Open Source

    Must meet requirements of the OSI OSS Definition. Just has a commercial entity behind it that offers support etc.

  2. FOSS - Free Software

    Must meet requirements of the OSI OSS Definition. May have a commercial entity behind it, may not, key is that it is free or can be free

  3. Community Source

    Examples include Sakai and Kuali. I am convinced/hopeful that this will be the next big thing for vertical industries as I predicted.

  4. Developer Source

    This DOES NOT meet the OSI OSS Definition. But it sure beats the heck out of commercial proprietary. Examples of this model are Caucho, Some Jive Software products - including their new Clearspace (some of their products are FOSS), and Atlassian. Although I'd prefer FOSS, these are typically very innovative and open companies (e.g., publicly accessible enhancement requests/defects/forums) who take their customers very seriously. Typically customers of these companies are fanatical about using these products. I think that the fact that getting access to the source upon purchase sans escrow account is a big statement - it says that the company is proud of their code and has no problem with you seeing it and extending it as you wish.

  5. Shared Source

    This is a MSFT thing - better than nothing I suppose. I want to be able to see the source.

  6. Shareware

    If it's proprietary it might as well be free.

  7. Commercial Proprietary + Escrow

    If it is proprietary, I might as well have the source in escrow so if you go out of business I am not completely screwed. I hope you included a build script and instructions . . .

  8. Commercial Proprietary

    This is of course my least favorite. As Matt Asay says:

    Let us be clear. Whatever the merits of proprietary software, they are purely vendor-favoring. There is no customer reason to make software proprietary. None. There is no customer benefit that attaches to proprietary software. There is only a vendor's ability to temporarily monopolize a piece of software and thereby profit from it.

Sunday, March 04, 2007

Cygwin, Rake, Flex, Bleh & Work Instructions

Cygwin makes Windows barely workable. If it wasn't for the insanity of the backslashes, spaces in directories, equality of upper and lower cases, etc. Just how many months of an average developer's life is spent on this type of minutia? Class paths, environment variables, blah blah blah. On *nix of course, it all just works.

I spent too many hours yesterday trying to beat Cygwin and Rake into submission. All because of the horror of backslashes etc.

Cygwin mostly works, but there are always corner cases. Well Flex seems to be one of them. I am by no means a Cygwin expert - perhaps I should learn more.

Anyways, here is a tip. Don't even try to feed the Flex compiler (mxmlc) path names like /cygdrive/c/flex_2_sdk_2 or path it any config file references using this style.

You must instead do things like:

export FLEX_HOME="C:/tools/flex_sdk_2"

Anyways, no big deal of course.

This type of panic is only typically an issue when you are dealing with a new tool. This is why I love the project "Work Instructions" wiki page. This is the step by step instructions for the new developer (or you when you get a new machine) that tells you exactly what to do to get productive quick. Even better - a team starter VmWare image or some such.

Thursday, March 01, 2007

Cappuccino Milk Frother

Some day I am going to drop like 5-10K on an uber espresso machine.

As I have little spare coinage these days, that day is a long, long way off.

I currently have a FrancisFrancis !X5. It is ok. It makes espresso fine, but its milk steamer is pretty weak. I'm of course comparing it to what you would find at a proper coffee shop.

As I don't have the coinage now to upgrade to anything that would be significantly better, I went searching for a cheap alternative.

I found something that suits me and the Mrs. (I make the coffee around here) just fine.

It is no frills, but it works better than my crappy X5 steamer and is easy to clean. And it is dirt cheap. You can find them at various places imagine - I don't even remember where I got mine. But it looks like this. Mine looks like the one that is second from the left. The one to the right of it looks good too.

Wednesday, February 28, 2007

iGel

More panic than usual at the panic factory.

We have had some methodology panic. Not so much disagreements, but more:

em, we have to release this in a little bit and we have to collaborate more so we better agree on how we are going to work together now so we can deliver and not look lame/dumb/hand-waver-ish

type of stuff. We are transitioning from doing a lot of throw away semi-functional POCs where collaboration was optional to building 1 skeleton system where we must collaborate heavily or we will slip.

These types of transitions are tough. But if they don't kill you, they only make you stronger.

You can be on the best team in the world (I actually think I am on one of them - no joke) and until you have been through the ringer and shipped something with that team, it doesn't matter much what you have done before with other teams. You have to make it work with this team. It can be hard to get the rhythm building - especially when so much has to be bootstrapped to get that first story tested and working.

I have been using Scrum for quite a while - at least 5 years on and off (mostly on). I like it because it is easy. The teams I have been on that have used it were always successful enough - mainly because all Scrum really says is you have a backlog, a sprint/iteration planning meeting, a daily scrum meeting, a sprint retrospective meeting and you have short iterations where you can course correct.

Within Scrum I have been a part of various analysis approaches. I have been a programmer / analyst and have been on teams that have had dedicated analysts who do insanely large Use Cases. Now I am on a team with 1 analyst who just churns out epics /stories like they are going out of style. She "gets it". I like people that "get it". I have been helping here prioritize / size the backlog lately.

On this project we are amping it up a bit and embracing things like Epics, stories, heavy TDD (Test Driven Development), and gasp ... a little pair programming (strictly voluntary for us). It really helps when you have an iGel Ninja around. You don't even have to listen to him talk - you just watch his hands and you understand (mostly). Come to think of it, we have 2 - we also have an Irish one. He isn't so much with the hands, but when he is the smoothest swearer I have ever met. It doesn't offend anyone when he does it even if it is a f-bomb. Dropping an occasional f-bomb is crucial to iGel success IMHO.

I have tried and failed too many times to count at TDD. But this time I am on a team that has the will and desire to succeed. I know many of the things that make it fail or rot on the vine. It basically comes down to discipline and no broken windows.

Our wiki is quite helpful in all of this as usual. I would jump out the window if someone took the wiki away.

Sunday, February 25, 2007

Flex Links

A couple pro Flex links I liked below. I don't have much to say lately. Too much panic I suppose. You can find anti Flex links on your own. I wasn't convinced by them. For me to go with a commercial proprietary product I have to really like the vendor and the product has to be trending towards openness. I am not an Open Source zealot. Anyhoo, time will tell. I do think that it is exciting that user interfaces are poised for a new round of innovation. I likes the innovation.

Flex vs. Ajax Revisited

10 Reasons We Love Flex 2

How truly open is Flash? Do we need "Open Flash"?

Wednesday, February 21, 2007

New The Shins

I have been listening to the new The Shins, "Wincing The Night Away" all day. My bro-in-law Kevin gave it to me.

It just hit me that this album is as good as their previous albums.

Not an easy feat (spoken from someone who took harmonica lessons from a Franciscan nun - so I know a lot about this). ;)

I love that moment when it hits you that you really like something.

Sometimes it feels like it is random the things we remember our parents saying. I distinctly remember my mother saying to me, "You have to celebrate and embrace joy wherever you see it." Her point of course was that there is so much in the world that is hard, sad etc. and you should cherish the joyous parts. I only remember her saying that once, but I have thought of it thousands of times since then.

Monday, February 19, 2007

Channeling Powerbuilder via Flex

I did a little Powerbuilder programming 12 years or so ago. I also at one point (gasp) did some Lotus Domino development. It was even simpler to use and crank out applications with.

As this article describes:

They [Powerbuilder programmers] could do stuff quickly, or using the modern jargon, they were agile programmers without even knowing it.

One of the smartest people I know, my co-worker Erik Onnen recently tried every Ajax framework available and tore his hair out trying to deal with browser issues (don't even think about IE 6). This is not some browser neophyte. He knows JavaScript, JSON, CSS etc. inside and out.

Every Ajax intesive site I have been on besides Gmail locks up, bombs out and as another co-worker of mind (Ed Copony) says, "Ajax apps. make your computer fan go insane".

But I want to build a RIA app! I just don't want all the panic!

4-5 years ago building Flash GUI's was the rage for a bit. I never got a chance to do it & was admittedly against it in general. But suffering through Ajax makes one take another look. It is of course called Adobe Flex today & it seems to have come a long way. Certainly seems like a *productive* way to build RIAs. Sure you have to get past a couple hang ups, but that is life in the big city.

Hmmm, what can you do with Flex + JavaSpaces + Caching ... hmmm ...

Thursday, February 15, 2007

REST JSR 311

Yay - should be interesting to see where this goes.

via Dan Diephouse.

Here are some other links: Marc Hadley example

Tim Bray

Steve Loughran begs them to keep it simple

Hopefully the expert group will resist the temptation to trick it out too much & will just keep it simple. I think there are benefits of doing this - will help spread the REST goodness if done correctly. Please oh please have a firm red line between message framing and message body (i.e., don't slow boil REST into insanity by making things "easy").

Good to see that some genuine REST experts are piling onto the expert group. Keep an eye on the big vendors. I'm sure the individuals are fine, but the people behind them who will start asking questions about how to "monetize" it probably are not. That is what got us into the WS-* mess. Standards as a gateway drug to pushing product is the root of all evil.

And we all know that sometimes people join standards committees to subvert them. I'm certainly not saying that this is the case, I'm just saying . . .

I'm crossing my fingers that this will lead to good things.

Wednesday, February 07, 2007

Hiring Green Beans

Are you a recent graduate or do you know one?

Are they smart?

Do they want an IT job within an information intensive company that never ever runs out of hard problems to solve?

Go here if you want to learn more.

Job Req: 26939BR

Many openings across the country including:

  • NH-Dover
  • NH-Exeter
  • NH-Portsmouth
  • OR-Portland
  • WI-Wausau
  • CO-Denver
  • IN-Indianapolis

You do NOT have to have a technical degree. You do have to bring something to the table.

Monday, February 05, 2007

Shallow vs. Deep Entry Models & Mapping

Ok so guess what - JavaSpaces isn't a silver bullet! Shocker.

I am fond of talking of two big problems I have had in the past with ESB style architectures: excessive mapping and issues managing state (active/transient state vs. steady state/long-lived storage).

The mapping you deal with in an ESB includes object to XML (OX) and object to relational (OR) and various object to object mappings. Update (few hours later) - forgot one: And if it is a message-centric ESB, active/transient state to your destination names (e.g., hierarchical Topic names).

It isn't surprising, but I'm finding that all of the same object to object mapping is still there with JavaSpaces + an object to object equivalent of OX.

The ESB systems I have worked on in the past had a canonical message format. All messages that bounced around the ESB conformed to this model. Some of the messages were small validations of particular data (e.g., address scrub). The main work flows, however, were large XML documents loosely following the ACORD XML standard (insurance industry XML guideline).

With JavaSpaces, the patterns you read about use distributed data structures. Instead of having a large Entry in the space you have many that are related to each other. You do this for transactional reasons, serialization reasons, flexibility reasons etc. Some of the objects I deal with are indeed very large. Doing a take on a large object only to navigate the object graph and flip a bit and do another write isn't performant or flexible.

So the "shallow" model (lots of small interrelated Entries) works great for UI input, address validation etc.

But there are also areas of the system (some key work flows) that would benefit from a canonical form - the "deep" Entry model. Rather than having each worker gather all the Entries up to make sense of them, you do this once and then write the deep Entry to the space and let various workers use it to walk it through a work flow.

But now you have to render it back to your UI that expects a shallow representation.

So the deeper I get the more I realize that JavaSpaces do not make the mapping angst I have encountered go away. The mapping is still there. It is certainly improved because it is object to object mapping that is easy to write unit tests for etc., but it is still there. Update (few hours later) And there isn't any active/transient state mapping to destination names so at least one is eliminated entirely :)

These same issues are also present with a distributed caching solution I believe.

Do I have this right or am I missing something?

Sunday, February 04, 2007

Transparency

Here is another example of why I think that transparency for analysts should be required. Same thing with political contributions. I don't have any problem with anybody sponsoring any report or anyone contributing anything to a political party. I think that is free speech & I think that trying to control it (e.g., McCain Feingold) is a complete waste of time and just muddles things even more. Just make it black and white and in front of people is all I say.

I don't question the integrity of anyone per say, by making one's constituents known, however, there is a bit of omnipresent sunshine that generally forces people to be more honest and objective.

Until this is dealt with, there will always be people like me snickering about industry reports like this.

Via Simon Phipps. By the way - I don't think this is a problem just with Microsoft. Perhaps Sun could lead the charge on this type of thing by having a policy of having their name on all studies that they fund. Perhaps they already do this?

Saturday, February 03, 2007

People are Talking

People are Talking. Talking about JavaSpaces & distributed caching.

As my co-worker Ed would say, the future is coming!! And so when are the big boys going to notice that the future is coming? Hmmmmm.

Perhaps this technology will be in a few Plan B MRDs this year.

Did Cameron really say this:

Our reason for considering the introduction of JavaSpaces into Coherence is to allow programmers to use the spaces model and the JavaSpaces API to code parts of those transactions. While JavaSpaces is not an effective data management API (i.e. it's not good for replacing a database), it is an effective data processing API (i.e. it can easily be used for computational processing in a grid). So Coherence can certainly bring those two concepts together (data managed by a database and processed using a spaces approach).

Peace,

Cameron Purdy Tangosol Coherence: The Java Data Grid

Yes he did! He authenticated it with the "Peace" key!

Should be interesting to watch - perhaps embedding Blitz? Why don't you OSS Coherence while you are at it? People still need support. Look at JBoss.