Monday, 31 December 2007

Goodbye Scott

I just heard that one of my U of O classmates and a friend died last night (2 nights ago?). I'm so sad right now.

It's funny how something like that hits you like a tidal wave and all other issues are instantly swept away. I don't know what I was thinking or doing 30 minutes ago. It doesn't really matter either.

Guilt, sadness, loss...

Goodbye Scott.

Sunday, 30 December 2007

Planning ahead

Yesterday we got an unexpected call. Laura's 3rd grade teacher called us up and wanted to talk to Laura. Someone that she had not spoken to in ~ 20 years. The teacher had seen our wedding announcement that Laura's folks had put into the paper in June. The lady looked up in the phone book Laura's last name and ended up calling Laura's grandmother who told the lady all about what Laura's been doing lately. Including our home phone number. Which the lady called when we were napping (Laura worked over night and I'm training for the Nappy Olympics).

Why did this all happen? The lady's doc is retiring in 5 years and she's looking for a replacement. Wow. What other profession are people looking 5 years ahead?

This brings up a different issue, a social engineering issue and something that most of us (including myself) are guilty of: giving out someone else's phone number. If unknown Person A (PA) calls looking for your Buddy (B), it's much better to take down PA's contact info and pass that along to B rather than just giving PA the contact info for B. Being a middle man in this case is a good thing.

Sunday, 23 December 2007

Photography classes

I was just going to blog about wanting to learn how to take better pictures. Somehow this sounded familiar so I checked: yes, I had blogged about this before, a year ago almost to the day. *sigh* No real progress to report unfortunately.

Every time I try and use the manual settings for the camera I usually end up taking a super over exposed picture so that all you see is white. If I play around with the more basic settings (like macro) I usually end up leaving those "on" so when someone else uses the camera all they get is blurry shots. I feel that I should look for a clue stick and beat myself over the head with it.

If all else fails I'll read the instructions for the camera. :-P

Friday, 21 December 2007

Sense of community

I remember years ago hearing about a study that showed being active in your religion was good for your health. It didn't matter what religion, just that you had one that you were somewhat active in. They attributed this to having a community that you belonged to for support and a sense of self.

I'd describe myself as an agnostic. So what group do I join in order to create a sense of community? "The group going to the bar" doesn't count. I'd almost start going to a church if it wouldn't be the overwhelming feeling of hypocrisy.

Monday, 17 December 2007

Subversion locally with eclipse

It took me a little digging around to get subversion running locally on my mac. No, I'm not a total tool trying to have a versioning system installed locally, I'm doing it so I can work on a bamboo plug-in.

Make sure I am up to date with subversion:
fink update svn

Tell subversion where the repo is:
svnadmin create --fs-type fsfs /path/to/repo

Add your local subversion to eclipse as a repo:
file://localhost/path/to/repo

Pretty easy really... just had to find all the steps.

Rain? Crap.

I just checked out the weather for this week... Saturday has a high of 6 C and 80% chance of rain. Just after 37 cm of snow... craptastic!

Sunday, 16 December 2007

Dripping taps

Our house has drippy taps. It pisses me off to no end. I wanted to look into the cost of a drippy tab. So let's do some math. Correct me if I'm wrong! Coffee hasn't kicked in yet...

From yahoo answers we get the estimation of 20 drops = ~1 ml (0.05 mL). Let's assume that there is a drop per second and there are 31 556 926 seconds per year. That works out to 1 577 846.3 ml / year. So that works to ~ 1 578 L / year, or 1.6 cubic meters. That's a lot of water in drips.

Now looking at the city of Ottawa page for water and sewer charges the price works out to 2.1266 $ / cubic metre (86.8¢ per cubic metre + (0.868 * 145%)).

So over the course of 1 year, each tap will cost us about 3.41 $. Wow. That's a lot less that I thought that it would.

Saturday, 15 December 2007

MT is open source now... to late?

A few years ago when Ryan was installing MoveableType (which this blog runs on), it was one of the leading pieces of blog software. Then they came out with version 3 that wasn't as free. There were restrictions on the number of blogs you could install among others.

That pretty much guaranteed that another piece of software would become the "leader". Now they've moved to totally free again and are trying the only open source business model that I've seen work: paid support. Will they become the leader again? Who knows, but now they have an uphill battle.

Competition is good though. Time will show how this works out for them.

Wednesday, 12 December 2007

Horror stories

One thing that I find funny is how people love to tell horror stories about work. Everyone has a couple of good ones, always about someone else and how they did some dumb thing. 90% of the time it just seems to be because the person didn't know any better. 5% of the time it's because the "customer / user was soooo dumb!" for wanting / needing something. 4% of the time it's because the manager / management was dumb or motivated for the "wrong" reasons.

Then and again you come across a story where it just boggles the mind with how things came about. Those are the truly frightening ones.


In case you didn't guess it, I made up those %'s. People can come up with statistics to prove anything. Forfty percent of all people know that.

Tuesday, 11 December 2007

Ironic... like swiss cheese

Ah, there isn't anything quite as ironic as tool creators not using the tools they create. I noticed this recently with one of the tools that I used so I filed a bug for them to actually use it. Then I checked out other maven reporting plugins: most of them don't report on themselves. The funnest is the clover plugin generating coverage data using cobertura.

You always hear stories like this like with microsoft running unix in an anti-unix campaign. I just don't get why people don't think of eating their own dog food. I know that I've been guilty of this in the past as well. Is it just one of those cases of being too close to the trees to see the forest?

Saturday, 1 December 2007

Finally beat the cat!

Via boingboing, I finally beat the cat. :-) Sad that it took me more than a couple of tries...

The White Knight

I read a short story in high school that I can't get it out of my head, but neither can I find the original story. If you know who it's by or what it's called, please leave a comment. It goes like this:

There was a young, brave knight who wanted to go out and bring truth, justice and happiness to all. He wanted to put a stop to all that would prevent this, namely the black knights. One day he was done all his training, all his gear was in sparkly, shinning white, working order and he set out. It was not long before he saw in the distance a blank knight cresting a hill. The black knight raised his weapon in challenge. The white knight bravely raised his as well and charged the black knight and won. That was the first of many victories.

After many years and many victories the white knight became tired. In the many battles that he had fought for truth, justice and freedom his armor had become dented, tarnished and scored. It had become the colour of soot from the flames of the dragons he had slain. He decided at long last to return home.

As he neared home he crested one of the last hills. In the distance he sees a white knight, with new shinny amour. He feels glad to see a friendly face after so long so he raises his weapon in greeting. The young white knight also raises his weapon. Then the young white knight charges.

Update: Austin Repath left a comment explaining that it was a story by Eric Nicol and even provided a link.

Update Again: Since I'd like a record of this story and don't trust that the other link will stay up indefinally, below is the story copied from the page. 

The White Knight

by Eric Nicol
Once upon a time there was a knight who lived in a little castle on the edge of the forest of life. One day he looked in the mirror and saw that he was a White Knight.  "Lo," he cried, "I am a White Knight and therefore represent good.  I am the champion of virtue and honour and justice and I must ride into the forest and slay the Black Knight who is evil."
    So the White Knight mounted his snow white steed and rode off into forest to find the Black Knight and slay him in single combat.  Many miles he rode the first day, without so much as a glimpse of the Black Knight.  The second day he rode even further, still without sighting the ebony armour of mischief.  Day after day he rode, deeper and deeper into the forest of Life, searching thicket and gulley and even the tree tops.  The Black Knight was nowhere to be found.
    Yet the White Knight found many signs of the Black Knights presence.  Again and again he passed villages where the Black Knight had struck – a baker's shop robbed, a horse stolen, an innkeepers' daughter ravished.  But always he just missed catching the doer of these deeds.
    At last the White Knight had spent all of his gold in the cause of his search.  He was tired and hungry.  Feeling his strength ebbing he was forced to steal some buns from a bakeshop. His horse went lame, so he had to replace silently and at night with another man's horse. And when he stumbled faint and exhausted into an inn, the innkeeper's daughter gave him her bed and because he was the White Knight in shining armour she gave him her love. But when he was strong enough to leave the inn, she cried bitterly because she could not understand that he had to go and find the Black Knight and slay him.
    Through many months, under hot sun and over frosty paths, the White Knight pressed on in his search, yet all the knights he met in the forest were, like himself, fairly white, depending on how long they, too, had been searching. There were knight of varying shades of whiteness depending on how long they, too had been hunting the Black Knight.
    Some were sparkling white. These had just started hunting that same day and they irritated the White Knight by innocently asking the way to the nearest Black Knight. Others were tattle-tale grey. And others were so grubby, horse and rider that the mirror in their castle would never have recognized them.
    Yet the White Knight was shocked the day a knight of gleaming whiteness confronted him suddenly in the forest and with a wild whoop thundered towards him with leveled lance.  The White Knight barely had time to draw his own sword and ducking under the deadly steel plunge his blade into the attacker's breast.
    The White Knight dismounted and kneeled beside his mortally wounded assailant, whose visor had fallen back to reveal blond curls and a youthful face. He heard the words , whispered in anguish, "Is evil then triumphant?"  And holding the dead knight in his arms he saw that beside the bright armour of the youth his own besmirched by the long quest, looked black in the darkness of the forest.
    His heart heavy with horror and grief, the White Knight who was white no more, buried the boy, then slowly stripped off his own soiled armour, turned his grimy horse free to the forest and stood naked and alone in the quiet dusk.
    Before him lay a path which he slowly took that led him back to his castle and closed the door behind him.  He went to the mirror and saw that it no more gave back the image of the White Knight, but only that of a middle aged naked man, a man who had stolen and ravished and killed in pursuit of evil.
    Thereafter when he walked abroad from his castle he wore a coat of simple colours, a cheerful motley and never looked for more than he could see.  And his hair grew slowly white as did his find full beard, and the people all around called him the good white knight.
From a high school anthology called And Who Are You?, edited by Austin Repath.

Thursday, 29 November 2007

Clean off your cars!

One thing that really pisses me off is seeing people drive around in cars where they have not bothered to clear the snow off. They just jump in, crack the heat, turn on the wipers to clean some snow and then drive off. As their driving, the snow on their car is obstructing their view, blowing off their car and obstructing other peoples view, making the road wet so more salt gets dumped on the road, ...

It just pisses me off. Just take 1 minute to make your own life, and the lives around you a little safer. It's really not that hard.

Wednesday, 28 November 2007

People never stop amazing me...

This clip is awesome. Just when you think that people can't get dumber, they surprise you.

Wow. I don't feel so bad about my poor spelling now...

Monday, 26 November 2007

A man cold

This man cold video perhaps is a little too close to home. I'm posting it anyways. :-P

Friday, 23 November 2007

Finding the big files in unix

I'm blogging this because I never remember...

report on disk space usage (in unix)
df

figure out where all that usage goes
du -sk * | sort -n

Wednesday, 21 November 2007

Nomenclature of developer types

Let's go through a few types of developers to distract myself from the (literal) pain in my neck.

The Cowboy

This is pretty self descriptive. This is the type of person that doesn't "need" a test suite, documentation, or user testing. They *know* everything and if you just leave them alone they'll be able to do everything. They are also the type of people that break the build, don't implement features properly, and leave the system in a poor state because of lack of documentation. Typically this is the type of developer that you need to just put out to pasture.

The True Believer

This don't imply that they are all for TDD or agile processes. You can have RUP true believer (TB) working in an XP shop. All that it means is that they know and are more comfortable with doing things a certain way and no matter how you ask them to do things, they'll end up doing (or half doing) the way they believe things to be "right". If you have TB's, they had all better subscribe to the same belief.

The Saboteur

Like in the 6th sense, saboteur's don't always know they are saboteur's. They could be this way because of their skill level or because they are trying to change things from the inside, but are doing it poorly. Most often this is because you have a mix of TB's with different beliefs. Saboteur's some times sabotage code, sometimes process, sometimes moral and sometimes meetings.

The Hero

"Save the project, save the world." These types will do whatever it takes to make the project a success. These often are TB's that are picking their battles carefully. It's a fine line between a saboteur and a hero and these can walk it carefully. Process changes come from these people. They are usually "big picture" type of people.

The Code Monkey

These will work on whatever you want, and will work however you want. They're great because they will just implement what you give them. Don't look for process improvement from these people though because they are not the type to rock the boat in any way.

The Heartless

Often these are TB's that have lost too many battles. They've been beaten down so much they've totally given up. They'll do the work, but they just don't care. All they are looking for is the paycheque and for the clock to strike "home time".

Can you think of any?

Tuesday, 20 November 2007

Dev tools out of the box

It's kind of cool all of the tools that leopard comes with, including maven. It looks like they release an older version of maven though (2.0.6) and to use a newer one that doesn't get blown away with an mac update you have to install a parallel one. That sort of defeats the purpose of bundling it with the OS doesn't it?

It would be better if they either:
1) pushed the latest stable version
2) allowed you to configure what version you want
3) didn't blow away any install you put on the box

Update: it looks like they are going to roll maven into eclipse. Pretty soon I won't even had to install it locally... but where's the fun in that? :-P

Ottawa Barcamp 4

I went to Ottawa Barcamp 4 this last weekend. I felt pretty out-nerded at some points. I felt that I should turn in my geek card at the door on the way out. I'm not sure what I expected since it was my first unconference. Overall it was pretty interesting. The most interesting conversations that I was involved in happened outside any of the booked talks.

One of the things that really made me pause was something that Ryan said. He compared where things are with java now wrt to rails and how that's like C++ vs java discussions of memory management. I like java because I don't have to be concerned with the details of memory management. Rails gets rid of like (estimated) 90% of the code I have to write.

So here is the sobering / scary question for myself: have I become "stuck" in my ways after only being out of school for like 5 years? Am I no longer one of the people who "get it"?

Wednesday, 14 November 2007

Silver bullet for code metrics

Yes, I know there is no such thing as a "one true metric" for assessing quality on a (java) project. There is no way that we can generate a score for a project or assign it a quantitative grade like "B". This isn't school.

But what if we wanted it to be?

It's always dangerous to create a metric that you judge code on because the interested parties will just work to maximize that metric, regardless of anything else. I was thinking of this on the bus home today (yes, I took the bus. :-( ) with the phrase "this isn't school" in my head. Well, let's freaking make it like school!

* Code coverage is worth 10 points. So, 75% coverage would give you 7.5 points.
* % of passed builds is worth 10 points.
* 10 points minus 1 point for every major FindBugs bug
* etc.

It would be a great idea to work in checkstyle and complexity analysis tools as well... just don't know how you'd do that right now.

Add up the points, figure out the percent, and give it a grade. Just like in school where it doesn't really mean anything, but it's a good indicator of quality. The only thing is that management would have to care about those metrics.

It's all well and good to be pro-active and provide metrics that you think are valuable, but if no one else does, it's useless. It might be better to just keep this in mind in case someone asks for it. :-/

Wow... grid unit testing...

Something about parallelizing unit tests and running them as a distributed task strikes me as somewhat overkill. I'm sure that for some massive projects this would be a great gain.

But wow...

Monday, 12 November 2007

To P.Eng or not to P.Eng

The other day I figured out that I was coming up on 4 years of being out of school. Nothing too remarkable about that until I noticed that for about 2.5 years of working with P.Eng's. I used to tell myself that it would be great to get that designation so that I could sign passports, but with the Laura's job, that would be redundant. So why would I try for it now? So I can call myself a "professional person"? That would be a crock.

I used to think that I'd never really work with P.Eng's at all so I thought that it would be too difficult to get the required 4 years of experience. Do I think that it would change how much value my opinion carried at work? God no.

I've talked to someone who's been a P.Eng. for a long, long time and he told me that he keeps on thinking of letting his license lapse so he doesn't pay the fees anymore since he doesn't feel he uses it. Again, do I see myself actually using a professional designation? Not really.

But for some reason it has an appeal that I keep coming back to. I'm not sure what I'm going to do. :-/

Expensive but tasty...

The other night we went out to a place that I had never heard of before: allium. It had the general feeling of "less is more" with the clean lines and right size. God, I love good food.

Wonderful, wonderful tasting food. Only downsides are:
1) you must make reservations. We tried to make a table for 6 and it was a no-go. I saw them turn away a couple (2 people!) because they didn't have room - even though they still had empty tables.
2) It's expensive. I'm cheap, so that's always an issue. But god it was tasty...

Like all food I enjoy, I tried to study / remember what I ate so that I would be able to reproduce it when I get home (ya right!). I had:
Surf and Turf - grilled bison with garlic polenta, onion ragout, herb salad -roasted salmon with roasted tomato, red pepper salsa, raspberry and lime dressing


The thing that I like about good food is that they not only blend tasty and contrasting flavours together, but contrasting textures as well. Cruchy and soft, smooth and sharp. It really gives an interesting dance.

Saturday, 10 November 2007

God, I'm glad work isn't that bad...

This is too funny... If They Come, How Will They Build It?. (Nerd Humour)

What would you get people to read?

One thing that is always helpful is for people in a profession to read some "core" books so that people can all be on the same page. I'm not talking about those "learn [some tech] in 24 hours!!" books. It means that when people have said that they've read them, but if they don't follow the books then you have a whole library to hit them upside the head!

For software development, I'd recomend a couple:
- Java - Effective Java by Joshua Bloch
- UI design - Don't Make Me Think by Steve Krug
- general project management - The Mythical Man-Month by Fred Brooks (a summary would be enough...)
- software dev - just about anything by Martin Fowler
- working in the government - Cat Herding and You

That's just a couple off the top of my head. What would you get people to read?

Update: added link for UI design

Thursday, 8 November 2007

Calling mvn clean on all projects

One thing that I was wondering on how to do is "clean" all of my maven projects in my workspace. Here's what I found works for me:
find . -name 'pom.xml' -exec mvn clean -f {} \;

Gmail 2.0

It looks like I now have the new gmail 2.0 version. With my 30 seconds of playing around with it, it seems to be much faster switching around to labels that you have already viewed. It looks like it'd doing more client side caching.

One issue: by clicking around quickly I ended up freezing the interface. Not sure what I did to mess it up since I can't reproduce it. Ah well.

Update: Okay, I'm not liking this new version too much... as above it's already frozen my browser, now it's crashed it as well. :-(

Update: it looks like there it's having troubles while I'm running gmail through https. Humm....

Wednesday, 7 November 2007

Why not anything for me?

We went to wally-mart last night to score some drugs (I was jonesing for some cold and sinus advil) and I felt really left out. They have parking spots close to the front doors for people who can't walk far (wheel chairs and the like), and they have places for expectant mothers, but nothing for people who have the sniffles? What the hell's with that???

Then I looked around at the other stores and no one has special parking spots close to the doors for the people who sniffle, or as I like to call them: nasally challenged. It's crazy that in this day and age we can't protect and help the people that can't smell.

Sometimes I don't know what we've come to.

Monday, 5 November 2007

Luckiest Person Ever

It doesn't matter how many hours Laura is working. It doesn't matter how busy she is. When I'm sick, she takes care of me.

I really am the luckiest person ever.

Thursday, 1 November 2007

Don't check in binaries!!!

How difficult is source control to understand??? I can understand keeping libs in source control (I don't agree with that anymore), but why the hell do people check in binaries of the project they are working on? You don't check in the /bin or /target directories (or whatever it is in your project).

Is this a difficult thing to understand? When you're doing a commit and (in the case of java), you see that you are checking in .class files, doesn't that cause you to pause and stop?

Agghhrrrhggh!!!

Wednesday, 31 October 2007

Bwahahaha... come to the dark side...

Every time I am able to set up someone to do unit testing I feel like letting out a loud, evil laugh. I feel like I'm doing something sinister. What I really like about is it that I feel like there potentially one less project where I am going to be brought into to fix... one project less without any test, any power to refactor it...

I feel like I've just gained a new apprentice... "Rise Lord Coder...."

Friday, 26 October 2007

Let's make a little less abstract

My sense of scale is getting all messed up. When I was little I heard the whole "a penny saved is a penny earned" and took it to heart. A dollar was a lot of money and not something that you would spend lightly. Only later did I realize that it took more effort to save that penny than it would be to just throw it away.

Lately I've been thinking of money in terms of people's time. Let's assume that it costs 500 $ per day per person. You've got 2 people working on it and 1 person supervising it (at 50%). That's a small-ish project, but that means you've got a burn rate of 1250 $ per day. That's like 25,000 $ per month. And I think that's a consertive estimate.

Now let's think of something a bit more famous: the gun registry. In total they spent 1 billion $. Now say that slowly:

One. Billion. Dollars.

That makes me angry, but that's pretty abstract. I find it hard to imagine 1 billion dollars. If that was in 20's, would the pile of cash be the size of my car? My house? My street? I've got no idea.

I can think of a lot of better ways to have spent that money. They could have done just about anything and it would have been better than going in the hands of software people... those damn, dirty sofware people. Aside: software is one of those fields in that if you are doing a really good job, most likely you are putting yourself out of a job....

What I would like is for managment to express the cost of their application not in dollars, not in person days, not in "resource units". Nothing that abstract. What I would like is for it to be expressed in vacines.

Let's bring the cost down to something that people can think about a bit more: do you really need that module, or is better to try and save 1000's peoples' lives? Or conversly, if you're a idiot and wasting money / time on something, can you go home and look youself in the mirror? Can you look your partner or kids in the eyes and tell them that you "did good today"? (I know it should be "well" not "good"). Or are you going to go home and say "I prevented 1000 people from getting a vacine today. 50 people will probably die without it."

I've heard (one of) the ideas of the iron ring is to rub against your work as you write as a physical reminder that your work can kill people: so be careful. I only wish that we had such a reminder for waste.

Wednesday, 24 October 2007

My latest silver bullet: tickets

Unit test used to be my favourite silver bullet. Then it was code coverage. Now it's tickets. It's great to be able to be able to track work, tasks, problems... "issues" in general. If you're working on something, create a ticket to track it. When you write tests, reference the ticket. When you check in your code / tests, reference the ticket. If you have a meeting for an issue found in production, why the hell isn't there a ticket to track it??? If you're doing work without a documented reason, then why are you doing it?

Part of it is CYA, part of it is doing your job well.

Tuesday, 23 October 2007

Maven: embrace or feel its wrath

One thing that keeps on coming up on the maven mailing list is the question "I don't want to change my project to fit maven, I want to configure maven to fit my project (like with Ant)". I can't blame people since I've been guilty of this as well in the past, but it comes down to the person not understanding the point. The whole point is to standardize on a common structure for building java apps, standard lifecycle, standard way. If you try to get the benefits of using a standard, without actually using a standard, it won't work out well.

Don't get me wrong: I love maven. It's great to use on new projects. It's great to use on existing projects iff you can make the leap of faith that the pain of retrofitting your app will be worth it. If you're just trying it out, you won't already have that faith. I understand that is a problem.

It reminds me of those energy graphs of exothermic reactions where there is an initial "hump" of energy to put in, but after that your net reaction is more energy is removed. That's my mental image of maven: if you can get over the initial hump, then it's so much easier to manage your dependencies. You just have to have that faith.

Wednesday, 17 October 2007

First JDK bug EVER!

Wow, I have never come across a bug in java before. Today I hit a nice one to do with long file names. Good thing it was fixed like a year ago today. Weird thing is that I wasn't using the version that was a "know issue". Ah well, upgrading worked. ;-)

Monday, 15 October 2007

The right tool for the job

The thing about using tools is not only do you have to know what are the right tools for the job, but you have to know what are the wrong tools and what ones are the poor choices.

Email is a poor choice for issue tracking.
Source being emailed around is a wrong choice.
Being able to build / deploy only locally is the wrong choice.

Just like you'd expect a horrible painting job if you used a screw driver instead of a paint brush, you should expect similar outcomes with using the wrong tools in software development.

What do people think that software is so different from other trades or engineering disciplines?

Friday, 12 October 2007

Junk mail much?

Having has the house for only like 12 days, I find the amount of junk mail staggering. It's scary really. I'm going to throw out my back every 2 weeks tossing out all that crap. So, in dire times like this I turn to our dear and glorious leader: google. It pointed me to an article from the Calgary Herald with info on how to stop the flood of mail. That's another thing on my new and growing TODO list. ;-)

Saturday, 6 October 2007

Painting... the first adventure as a new home owner

We've started to prepare the kitchen at our new house for painting. Laura and I have never *actually* painted a room at all, so this should be interesting. We've been offered a lot of help and advice from people. I'm grateful for all of that, but I sort of want to do this myself. Our home, our kitchen, the walls can suffer from our painting mistakes. I hope we won't make too many, but I can't expect that we'll do it perfectly the first time.

One of the reasons that we're painting the kitchen is because it's very white. The floor is white, the walls are white, the cupboards are white. I can't picture myself working at a workstation like that (I consider a computer desk and a kitchen my 2 workstations).

I'm pulling for us. We're all in this together.

Wednesday, 3 October 2007

Going to miss it...

I'm feeling a bit melancholy now. Maybe it's the weather, I don't know. Either way I'm going to miss the apartment. I'm going to miss the view, the "every day is garbage day", the cozyness, the zero maintenance, the poo canon, ...

Having said all that, I'm sure that I'll love the house and wonder how I was able to deal with the apartment. I'd like to move in now, but good things come to those that wait pack. ;-)

Tuesday, 2 October 2007

Oie...

We're moving, which is really cool. Now the PITA stuff: changing our address for all the places that have that info. It would be awesome if their was a giant cental user repo that all business could tie into, but I'm sure the privacy people would crap themselves. Yes, I know the ontario gov't has a place where you change change all your info with them... that makes it a little easier.

The hard part is when I tell people the new address (and no, I'm not going to mention it on this blog). For each person it seems to take at least one clarification. The systems where I can just enter and fill in my info are the best. Ah well. I'm happy to move, even if it's a bit of a weird street name. :-P

Friday, 28 September 2007

Let me vote for you... it's okay, we're lawmakers

When a friend pointed me to a video of lawmakers voting in Texas, it was just one more thing that makes me glad that I live in Canada. Wow.

Wednesday, 26 September 2007

Journey Leap?

After watching the first episode of Journeyman, Laura pointed out something: the idea of it seems very close to Quantum Leap. In that light, I think that the intro to Journeyman should be changed to have a narrative that goes like this:

Theorizing that one could go about their lives, Dan Vasser stepped into the world and vanished .... He woke to find himself trapped in the past, facing mirror images that were his own and driven by an unknown force to change history for the better. His only guide on this journey is google, an observer from his own time, who appears in the form of a search engine that everyone and Dan can see and hear in 2007. And so Dan finds himself journeying from life to life, striving to put right what once went wrong and hoping each time that his next journey will be the journey home.


Tuesday, 25 September 2007

Bank branches are <i>so</i> last century

While getting ready for the closing day of our new house, I've been dealing with bankers and a lawyer. Mixed reviews for both.

This rant is directed at scotiabank. Don't get me wrong, the staff that I have dealt with have always been nice and helpful within the rules of the bank. The rules / policies are what I have a problem with. And this may be a issue with all of the major banks, I don't know.

The issue: if I open a savings plan at one branch, I should be able to handle any services with that account at any other branch. I shouldn't have to drive 45 minutes each way because I had set up the account at a convenient place for where I lived 5 years ago. I want to be able to go to a place that convenient for me now.

It's not like it's a paper record or anything. If you can see it on the computer screen in front of you, and I can do other services at that bank, I should be able to do all my services transparently.

So, for something that took me about 5 minutes to do at PC financial, it took me about 3 hours to do at scotia. And only because I was being a PITA customer saying things like "I'm sorry, that's not possible", "That doesn't make sense", "Why do I have to come back? Can't we do this now. It's just one form!" (it wasn't for scotia)... you get the idea.

Scotia: please modernize your processes and policies, not just your tools.

Wednesday, 19 September 2007

Ontario election - talk about what you're going to do

One thing that I really don't like about this upcoming election are the attack ad's from the PC party. The liberal party ad's are "we are going to do ...". The PC party ad's are "they other guy didn't do ... last time when he said he would. The liberal leader also kicks puppies."

Those ad's don't help me understand what you're going to do if I elect you. All they do is make me mad at you for bringing more negativity into my life. Having your whole campaign of "we're not the other guys" is a really crappy campaign. That sounds to me that you have no plan past getting elected.

I laugh when I picture that: the PC's winning by a landslide and the next morning looking at each other and saying "now what?" while shrugging their shoulders.

Tuesday, 18 September 2007

Star Wars: The Force Unleashed... Wii!!!

Something I've been talking about with Andrew for a while is how awesome it would be for them to release a Star Wars game for the Wii. Well, it looks like they are going to, Spring 2008. ;-) That alone made me really happy (I'm drinking a beer to celebrate right now). Then I checked out the official site and watched the trailer. I almost peed myself. Wow. That game looks gorgeous. Now, I understand that it won't look that good on the Wii, but it might on the PS3. If the PS3 wasn't like 600 $, and if Laura wouldn't kill me for buying one, I might just have bought one for that one game.

I'm off to watch that trailer again...

Saturday, 15 September 2007

Filter gmail without clogging your inbox

I was going to write a post about regretting signing up for the maven mailing lists when I noticed a sponsor link in gmail: Gmail eats your Bacn. The more that I use gmail the less patience I have for other mail clients. OutLook, I'm talking to you!

Automount a drive in a mac

Wow. I fully expected it to be a bit difficult to get used to some things in a mac, but I figured that to do anything it would be easier. Perhaps not.

I store my music on a NAS drive so I don't have to fill up my macbook with a whole bunch of mp3's, and I have iTunes to manage it. For some reason when I sleep my computer it doesn't try to reconnect any drives I mount. Well, it's a mac so there must be a check box somewhere I can say "try and reconnect" like was on windows, what 95?. There are a couple of different posts with how you can create a script or install / buy and application to do this. Woah, I have to do what to reconnect to a shared drive? That's just nuts.

I might understand that if we're talking about linux, but this is a mac where everything is supposed to be automagical and wonderful. What happened? Where is this basic feature? Hopefully someone will be able to tell me.

Since my music is all managed on iTunes and iTunes couldn't see that since the last time it tried to start up, my whole library is got that little picture of the exclamation mark (!) so it won't try and play those songs. Unless there is another way that I don't know of (very likely), I'll have to go through and click on all the songs so that iTunes can "see" them again. Grrrrr.....

I'm enjoying my macbook for the most part, but I'm not apple fanboy. Time for another coffee.

Friday, 14 September 2007

Frick, that's annoying...

Since moving to using a mac for my home computer there have been some joys and some pains. Some things that I just have to get used to I guess because it's "the mac way", others just rub me the wrong way.

For instance, if I am using a piece of software that has a window's and mac version, I expect that they will work the same way. I understand that this is a really difficult thing to do. The "feature" that set off this rant / post is the fact that when I "open in new tab" for firefox, a lot of links open in a new window and open in a new tab. When I look at the code for the links, the end of the onClick event has a "return false". That normally works. Not so in FF on a mac.

*sigh* I'll look for the bug report later.

Update: I've been thinking about this a bit more. I guess it's a difference between what fires the onclick event from browser to browser. In my mac, if I right click on do "open in a new tab", it just opens in a new tab. If I command-click, it fires the onclick event and opens in a new tab. If anyone knows what bug that would correspond to, let me know.

Wednesday, 12 September 2007

Showing the apartment? I don't care

Now that we are moving soon, minto is showing our apartment to prospective new tenants. The first time, we totally cleaned, made sure that things were nice and sparkly. The second time, we cleaned up to lesser extent, not as sparkly.

What did we do when we found a notice they put really early this morning / late last night? Not much. Just hid the dishwasher we're not supposed to have. It just comes down to the fact that my GAF factor is low when I feel like I'm being asked to do someone a favour with short notice.

Wednesday, 5 September 2007

Calm. Peaceful. Happy.

This summer has been crazy busy. Laura finished school and all that went along with that, we got married, did the honeymoon thing, went to other people's weddings, bought a house, I did a "there and back again" thing with my job, went to see Phantom of the Opera (3rd row center! Felt the blast of heat from the pyrotechnics!), bought a new computer, bought a new bike, packing for a move, went camping, went camping some more...

A lot went on. It's been a really busy summer and it looks like things are going to calm down... just in time for Christmas. *shrug*

For all that's gone on, all the crazy stuff that's happened and is still to happen, I feel very relaxed and happy right now. The only thing that's nagging at me is that because this summer has been so nuts, I feel that I've neglected my friends. There isn't really any excuse for it, it just sort of sucks. Time management is something that I still need much work on. :-/

Saturday, 1 September 2007

Getters and setters: a rant of anti-patterns

It's been at least a couple of days since my last rant, so I figure that it's time again to show a couple of things that I consider to be anti-patterns. First off, let me tell you that I get annoyed by getter and setter methods that are not just an mutator for the class. I understand that rules are made to be broken, but they should only be broken in special cases: not as the "default".

"Helpful" getter methods:
public List getFoo() {
if (this.foo == null) {
foo = new ArrayList();
}
return foo;
}

I do not think that a "getter" should change the internal state of an object. A null list isn't the same thing as an empty list. If you want to initialize it, do that in the declaration or in the constructor, not in the getter method. If for whatever reason it's not valid to have the member be null, init it and then guard against it being set to null in the setter. If you're lazy like me and you use something like Commons Lang for your equals and hashcode impl, then if you call the getter on an object, it will no longer be equal.


I had it all planned to write at least one more "issue", but I can't think of it right now. One thing at a time. ;-)

Wednesday, 29 August 2007

Triage

One of the things that I think is important to do with any ticketing system is to triage any issues. What issues are we working on, what are we putting off until later, what ones have been discussed and are not going to be fixed. Be clear what's actually being done.

I think that this is a hard thing to do well. It takes time and dedication. Not only do you have to triage new tickets, but you have to occasionally check older tickets to address them if their status has changed: is it no longer relevant? Should the status / priority be escalated? Let's call this "re-triage".

I find that people are more often frustrated with lack of information than with lack of action. Knowing where in the queue you are is a comfort.

Having said that, you can't queue people's issue forever. But that's where the re-triage comes in. ;-)

Tuesday, 28 August 2007

CLI and me

The other day I asked Ryan what is a good GUI based ftp client for a mac. Why graphical? Since I've used windows for so long that's just my first thought.

I don't know why exactly and I'm sort of ashamed as a developer that is the case.

I'm using OS X. Based on unix. I use cygwin on windows.

I had never used ftp via command line, but that learning curve on that one was about 1 minute (mget damnit!).

*sigh*

Monday, 27 August 2007

Toasty warm!

I figured out how to make sure that I'm warm with my macbook: run "fink update-all".

That's hot.

Wow.

Too funny. And that's all I have to say about that.

Saturday, 25 August 2007

My notes on "What makes code beautiful?"

I'm blogging some notes here so that I can remember some key points from the 65 minute presentation What makes code beautiful? (via Hey! Heads Up)

"You should write code like the person maintaining your code is a homicidal maniac and knows where you live."

PIC: Proportion, Integrity, and Clarity is the theme of what makes code beautiful.

Negative laws are easier to follow, eg. "don't kill", "don't steal", etc. These allow anything else to be allowed, which provides more freedom since the original authors can't think of everything. Along those lines, it might be a lot easier to follow the maxim "don't write ugly code" rather than "write beautiful code".

In the end, it's just KISS.

How far does style go before it's "wrong"

While thinking about Kibbee's post (which is a response to Ryan's post) I was thinking about how dumb users are. Like Kibbee was saying when you ask for feedback on functionality, and all they can "see" are the fonts, colours, and other things that are really not that "important".

Let me digress for a moment. People generally recognize minor differences of how people act as dress as "style". No one agrees on style, but there is a pseudo "safe area" that people are able to slightly deviate from before it's "wrong". Let me provide some examples:
- wearing a baseball hat sideways is "style", wearing it on your foot is "wrong"
- wearing sandals to work is "style", wearing them with socks is "wrong"
These things are "wrong" because they are far enough away from my definition of style.

When I come across code to understand it, it has to conform to what I consider "correct" (or close enough) for me to understand it. I guess some people would call it style since the code could work the same way (from the api level) as something that I'd write. However, if the style of code is far enough out of my comfort zone, all I can see is "wrongness". If someone asks me to just ignore that "unimportant" thing, I have can't.

So when you're dealing with alpha testers, it may not be that they don't "get it" when it comes to providing quality feedback, it might just be that what you are showing them is so far out of their comfort zone that all they see is "wrongness". I can see how it's easy to get bogged down with the little tweaks, but if those are what is causing the barrier that's preventing your testers from giving useful feedback you're got 2 options: 1) get other testers or 2) just do the tweak. I suspect doing the tweak will take much less time than finding new testers.

Thursday, 23 August 2007

That bug was groovy! Yay!

It is awesome to be able to access the code to figure out problems. I was playing around with using the maven groovy plugin and tried to follow the examples to execute a local script. No dice. It barfed on me with an exception that didn't really help me out. So I took at look at the source and took a guess at how it should be working. Bingo.

Of course I opened a bug so that 1) google searches will turn up better results than I got and 2) so the developers can actually fix the problem. ;-)

Update: it turns out that since at work maven pulls from snapshot repos, I was using an alpha version. Mental note to myself: always use the version that's documented on the site.

Update 2: Well, as it turned out I was using the wrong groupId as well as the wrong version. How could I have confused org.codehaus.mojo with org.codehaus.mojo.groovy, I mean really!?! Well, I changed the groupId and the version and then just ran into another bug (that now appears to be fixed?). Who knows. I'll just use the old groupId with the alpha and the config that I know to work. There is a reason why they call it the "bleeding edge" :-/

Software development: art or science?

There's a ton of discussions about if software development / engineering is "art" or "science". I've always sided on the "science" side of the debate. There's no splashy colours, or impressionist applications, it's gotta be science.

Recently I heard an argument that really made me think. It went something like this: "Software development is like sculpting: you get a team of skilled craftsmen (people, whatever), give them a client and a huge block of marble. They use their tools to chisel away at the block until you have your sculpture."

That was one of the best analogy's that I've heard for making software.

So let's assume that it is an "art" (with quotes). Like art, you have some naturally skilled people, people who can be taught / mentored to be skilled, and others that no matter what you do, they won't ever be a star. And like art, so many of an application's qualities are difficult to quantify.

From now on you may address me as The Artist Formally Known As Jim.

Tuesday, 21 August 2007

Finding all property files on the classpath

Property files are widely used in java applications for internationalization. This usually means several files have to have their keys kept in sync. There are other pitfalls with property files as well: duplicate keys within the same file, trailing white space after the line continuation character and other wonderful things that I am sure will come up at some point.

I've got a test class that will take a directory on the classpath and look for all property files there and do comparisons and checks on them. The very first version of this tool used hard coded, absolute paths to the file, but that was close to 4 years ago. In recent version I pumped up logging on it and noticed that it ran fine in eclipse, but when you run it in maven it wasn't finding any of the files if the same directory existed in the src/test/resources as in src/main/resources (or if you just were looking at the "root" of src/main/resources). Like most PITA things in java, it was a classpath issue.

Maven's pretty smart. The path of the classloader (for surefire) is src/test first, then anything in src/main, then the dependencies. That makes sense. After running mvn eclipse:eclipse, the .classpath it's src/main first. Wonderful. :-(

The way the code ran before asked the testing class for the resource like this:
URL url = getClass().getResource(resource);
That worked great in eclipse... not so great in maven.

Then I thought "oh course! The classpath is a system variable!" and tried code like this:
String classpath = System.getProperty("java.class.path");
String[] paths = classpath.split(File.pathSeparator);

No luck either. When surefire runs it does not include any of the project's folder in the classpath. Only the .jar files of the dependencies.

Then after much fruitless digging on forums (where this question seems to have been asked many different ways and times), I found the solution. You have use the classloader of the testing class in order to get the proper paths:
Enumeration<URL> enumeration = getClass().getClassLoader().getResources(resource);
In my testing so far that works both in eclipse and maven and will give you the target/test-classes/ and target/classes/ folders.

The thing that frustrated me was that there are many different ways to get the classloader, and only this one seemed to work the way that I was expecting. I'm just glad that I can move on from this issue that's been hanging on far longer than it needed to.

Friday, 17 August 2007

Right or wrong, I am still the Captain!

The title of the post is something that I never understood for years. When I was little, there was a key chain attached to the key of the boat at the cottage. When you're 8, you don't understand things like that. Only later did I realize that it was along the lines of "either way I'm in command and you have to do what I tell you". Only later in life do you realize how important that can be.

In life most people don't have that kind of military discipline drilled into them. They key to getting things done as you want is to find people who will do it that way by default. That's something that I figured out when we were doing all the work for the wedding. For example, Laura wanted tulips for the wedding, but most flower people we spoke to tried to re-direct us to some other type of flower. We didn't go with those flower people. We spoke to several photographers and discussed how we wanted quick, informal pictures. One photographer said that he typically wants 3-5 hours to take pictures. We didn't choose him. We went with someone who described what they do and it matched what we wanted.

If you don't want to fight the people you interact with, find people who share the same goals and methods. Life is a lot easier when you can do that.

There are always exceptions. Sometimes you are able to teach people and they adopt the same goals and methods as you. I owe my passion for testing to Ryan who showed me the light. I was part of the interview team for one of the more test driven people I work with. I asked him about unit testing to which he said that he didn't like it and thought that it was a waste of time. I thought that I could get him to drink the testing kool-aid and I was right. But I think that situations like those are rare.

Working in a team is always a tricky thing. You have to account for the fact that people are in the end, still people, with ego's and all the other rest. But for a team to be efficient, the players need to be working toward the same goal, using the same means. When you look for new people to integrate into the team, you should be looking for people that already "line up" with the other members to ensure a smooth integration. Likewise, when you are in a team you must make sure that your goals and how to achieve them line up with the other members. You must follow what the leader is saying and work accordingly. If you have any concerns or ideas, you bring them up, but in the end it's still the "Captain" that has the final call. Then there are 2 choices: follow the rules that have been set down or get out.

In the end it's pretty simple.

Thursday, 16 August 2007

Mood

I'm not sure if the weather reflects my mood, or my mood reflects the weather. Either way it's a gray, miserable day. :-(

Update: throughout the day there was storms, thunder and lightning. It was very, very frightening. Then it ended up sunny and nice. Both my mood and weather.

Wednesday, 15 August 2007

Mocking interfaces that use generics

Something that I had trouble today was writing a test case for an interface that uses generics. I wanted to mock out the object that uses the interface using EasyMock. Since I find examples are the best, here goes. First the interface under test then the test code.


public interface DataAccessService {
public <T> List<T> findResultsByNamedQuery(String namedQuery);
}

public class MyTest {
@Test
public UseMockDataSource() {
TomJones request = new TomJones();
List<TomJones> requests = new ArrayList<TomJones>();
requests.add(request);

// mock out the data source
DataAccessService mockDAS = createMock(DataAccessService.class);
requestPreProcessor.setDataAccessService(mockDAS);
expect(mockDAS.<TomJones> findResultsByNamedQuery("request.findByStatus")).andReturn(requests);
replay(mockDAS);
...
}
}


Through trial and error I figured out where to put the generic declaration. :-/

Update: I'm a dummy and forgot to escape the less than and greater than signs so they would show up in html. Ooops.

Tuesday, 14 August 2007

Chinese acrobatics

Chinese acrobatics are awesome. Check out the video from this site.

Sunday, 12 August 2007

Classic Rock

Something that I've never noticed until this summer: the music that came out while I was in high school is now called "classic rock". Nothing else has ever made me feel old quite like that. Getting married, being in the working world, having nieces and nephews, buying a house... none of those had the effect of hearing a radio announcer say the music I was listening to (and remembered so fondly) was "classic rock". Classic rock is something that old people listen to and talk about how it came out while they where in high school. I'm still hip, I'm cool... tucka, tucka, tucka...

*sigh* Ah well. I just hope that when we move into the house the neighborhood kids will stay off my lawn. If not I'll just shout "Damn kids stay off my lawn!!" and then I'll shake my fists at them.

Friday, 10 August 2007

Old man bike

I went out today and bought a new bike. It's a Giant Cypress which looks like an old man bike. Why? Well, because it is. I don't go on dirt trails, so there isn't any point in getting a mountain bike. I don't need the super speed of a race bike. I just use the bike to get to work 'cause it's cheaper than taking the bus and I enjoy it so much more.

I even got fenders and a back rack for it. Totally ridiculous. If you see me biking around, feel free to point and laugh. I'll be laughing too.

Wednesday, 8 August 2007

That's a paddling...

In one of the simpson's episodes the character Jasper Beardley is brought in to the school as a supply teacher. He gives a speech that goes like this:
Talking out of turn...that's a paddling. Looking out the window...that's a paddling. Staring at my sandals...that's a paddling. Paddling the school canoe...ooh, you better believe that's a paddling.


On my last co-op my manager took me aside at the start and gave me his "speech". He had 3 rules, and if you broke them, he'd fire you. They were 1) looking at porn at work 2) you had to come to work in presentable clothes. Jeans were okay, just not shredded ones and 3) come to work clean (shower, etc)

Both of those situations might seem a little ridiculous, but I think that they are both wonderful for what they are trying to do: establish ground rules at the start so that everyone is on the same page. After that you have an idea what is acceptable and what is not. I think that doing that is a great practice.

Think for a second before reading on what your "that's a paddling" list would be. What would you make the ground rules for your job?

Mine would include the following. It's funnier if you say "... that's a paddling" after each point:
  • commenting out relevant test cases
  • being abusive to your co-workers
  • breaking the build
  • merging out your co-workers code
  • dumbassery in general
  • breaking windows (see theory)
  • not fixing broken windows that you come across
  • not doing the best that you currently know how to do
  • not being open to new ideas
  • not doing your best to help your co-workers
  • not writing tests


The list goes on... I'd love to give a speech like that...

QotD - 2007-08-08

Too clever is dumb. -- Ogden Nash

Tuesday, 7 August 2007

Common code leads to common tests

Since I can't seem to think of a good way to explain this problem in conversation tone, I'll just explain it the clearest way that I can think of.

Notes:
1) this is computer stuff, so if you're not a programmer you might as well stop reading now.
2) this is discussion of a java project being built with maven.

So we have a common module (common) that is being used by 2 other modules (desktop and web). We want to put some helpers for generating filled out model classes in our common project where the model is, but we don't want to include that code in our production build. So we put that code in src/test/java. Now we want to reuse that code in our desktop and web module, but since it's not in the src/main/java branch, the code is never put into the final jar.

One (bad) solution is to just move this code into src/main/java, but like most things with maven there is an easier way to do it. We simply create a test-jar using the jar plugin as shown in the guide to using attached tests.

One "gotcha" that I found was I tried to quickly get this going so I used the switch -Dmaven.test.skip=true. This switch doesn't compile or run the tests. However, if you don't at least compile the tests, when you package them up you'll not have them in the test jar! So, if you have the unfortunate situation of having failing tests you can use the switch -Dmaven.test.failure.ignore=true.

Squeak, squeak, clunk

Lately I've been having a harder and harder time biking. I was wondering if I was out of shape or something, but that didn't make sense. I didn't really know what it was until I was biking home on Friday and my rear wheel feel off. Well, I guess the wheel just came apart from the axle, but it sucks when you have to walk your bike home.

I guess that the difficulty biking should have indicated to me that the bearing was going. I don't seem to pick up on these types of things until I have gone through it once. :-/ It's probably time that I buy a new(er) bike that will use all the gears and be able to brake well. My plan right now is to strip down the other bike, repaint it and build it up with new parts. It's a super comfy frame for me, it's just the parts on it are not super. Now I have a winter project and I'll have a house this winter to do the work in. :-D

Sunday, 29 July 2007

Mac OS X keyboard shortcuts... yay!

I have finally figured out how to use the keyboard shortcut to access the app menu bar. Nice. That and now I've also changed it so that when I tab through a form, it doesn't skip dropdowns etc. By default it only goes to the text areas and lists. Why? I've got no idea.

The more that I use OS X, the more I am able to do with it. There is still some weirdness between the same apps (like FireFox) that throws me off, but other than it's going well.

One thing that I don't like is even if I do find the equivalent key combo for doing something in OS X that I do in windows, is that it's usually awkward. Like what I just found for putting focus on the menu, in my macbook it's fn-ctrl-F2. F2 also brightens the screen, so every time I use that, my screen brightens a notch which is annoying.

Moving from windows in the same "app" was weird too until I found command-tildy did the trick. Weird, but comfortable since it's close to command-tab.

Having said all that, it's hard not to love my macbook since it's so fast and pretty... :-)

House hunting: got one

We have been hunting for a house for a while. We saw one last one last week (let's call it "U") and we ended up comparing all houses we saw after that to U. It's been nagging on us since we saw it that they it might be picked up by someone else.

Then they dropped the price on the house.

They are having an "open house" today, but we didn't want to wait. We contacted our real estate agent yesterday and pushed her a bit for us to see the house. Then we put in an offer and it was accepted. There was other people putting in an offer at the same time, so we were sneaky and put in a late offer that was only good for like 2 hours.

They accepted it. :-D

Now, we have to finalize financing and do a house inspection. If those are good, we start packing. Woo-freaking-hoo! Don't get me wrong, I love our apartment and I'll be sad to leave, but it's time.

Friday, 27 July 2007

Ahhggghhh!!!

Sometimes I wish that something like this would happen. How's that for a short feedback cycle?

Thursday, 26 July 2007

The approach defines the outcome

One thing that I have noticed is that it is most important how you accept feedback / ideas, and less of what the outcome is. If you get buy-in and the people suggesting ideas feel that they are on the same side, rather than an "us vs them", everyone will be happy and addressing the ideas will progress in a collaborative way.

If you bring up an idea and someone says "wow, that's the dumbest idea I've ever heard", that gets your back up even if it's true. This also means the idea dies before it can really be explored which doesn't help anyone.

A co-worker of mine takes the opposite route. If I brought up an idea like "let's put salt in our eyes to make it rain!" I can picture him saying "That's an interesting idea. I had not looked at the problem from that angle before", and then you work through the pro's and con's together. With that first sentence he gets buy-in and instantly you are on the same team and are addressing the problem together.

The outcome might be the same for both, but one divides teams, the other builds them.

Wednesday, 25 July 2007

You think?

The headline says it all: Celebratory gunfire kills 3 in Baghdad. Wow. You'd think that people understand when the bullets go up, eventually they come down. Kills 3, wounds 50 others. *shakes head*

It's the little things

It sounds really stupid, but to feel better about having had to slug through a particular difficult problem, all it takes sometimes is a "Well Done!" at the end. Another thing that I've found works too is bribes: 5$ in Tim Horton's gift certificates goes a long way to feeling about addressing peoples problems.

It's not much, but it makes the day just a little bit better. ;-)

Tuesday, 24 July 2007

Eat your own dog food once and a while

The other day I was working on a testing library that I use to help check for system.out/err, .printStacktrace() and other "non production ready" types of code. Mumbling under my breath about how I couldn't believe that people would be checking in that kind of code at all. Then I paused: I don't remember if I was using logging properly in my testing library. Sure enough, I point the code checker tests at its own project and it fails. Ooops. First step is ensure that the library that checks for "bad" code doesn't contain any, then I can bug other people about it too. :-/

Sunday, 22 July 2007

I'm starting to like it...

Purging that is. I've always had a hard time throwing "stuff" out. Now I'm starting to slowly get used to the idea. If I have not used it in the last year or 2, toss it. It can't be that important.

I find that a lack of clutter to be quite calming. That's also a super hard state to keep things in, so it takes a lot of work and I'm not really there yet. So far it's been somewhat easier because the things we've tossed have not been worth much. I'm going to have a harder time when I toss out things like text books even though I never look at them.

Next time I get a set of book shelves, I'm getting ones with doors so that even if I have a lot of things that would normally look cluttered, I won't see it and it won't bother me. The hard part has been keeping everything in "its place" while in a small apartment since every time you have to access something, it seems that you have to move 3 things first. Ah well. I guess this is why we're house shopping. ;-)

Thursday, 19 July 2007

I give up... for now

I've been trying to get GnuCash working on my new macbook to no avail. I've tried to follow the instructions that the gnu wiki links to, but I keep on getting:

checking if (www main) is available... no
checking for gconf-2.0 >= "2.0"... no
Package gconf-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gconf-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gconf-2.0' found
configure: error: Library requirements (gconf-2.0 >= "2.0") not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.


I've tried to install the missing lib with fink, but all that I have found is frustration. My idea was to get gnucash working so that I can do my business taxes this year with real tax software, but I think that I'm just going to use what I did last year: spreadsheet software. Yay Open Office!

Monday, 16 July 2007

Who's pictures are those?

Something that happened today is really bothering me, and I'm not sure that it should. But it does. A friend took some of the pictures that we had put on flickr and uploaded them to facebook. Now, it's not like the pictures were not on the 'net already. It's not like we don't share the pictures with everyone, including friends, anyways.

I don't get why it bothers me so much. At best it feels like bad etiquette, at worst it feels like stealing... Part of me thinks that's an irrational thought. I still can't get over it though.

We asked our friend to take the pictures down. I feel like an ass for asking, but it's going to bother me if we didn't.

Friday, 13 July 2007

Ewww... gritty!

I don't mind getting wet when biking if it's raining. I don't mind getting gritty when it's dusty and dry out. What I do mind is when it's wet and gritty. Gross.

On my way in I hid under the queensway bridge by Lees while the worst of the downpour was on, but at some point I had to venture out again to make it to work. I wish that I had something other than soaking sandals to wear today though. *grumble*

Thursday, 12 July 2007

Slowly getting used to it

I am starting to get used to my new macbook. The biggest issue I have so far other than finally getting wireless working (hint: the wrong wep key was saved in the key chain and was not being overridden when I typed it in) is figuring out the keyboard shortcuts. I use shortcuts. A lot. So discovering when I use ctrl, when to use the weird apple key, and when OS X still keeps it secrets from me is frustrating. I'll figure it out eventually.

Ahhggrrhh!!!

Crappy. I just broke my headphones while at work... my ear buds are at home. I tried to tape them together, but no luck. Then I stabbed myself in the neck with the broken plastic. Ouch.

It's definably shopping night tonight.

Thursday, 5 July 2007

Macbook come to meeeee!!!

The other day I finally ordered a macbook. Got some memory upgrades and a slightly larger hard disk. Currently FedEx says that it's in Anchorage, AK. I'm very excited about not using slow hardware. Now I just have to figure out what to do with my old "waffle iron" laptop.

In case anyone is wondering what 'ol waffly is, it's a Toshiba Satellite something-or-other from like 2002. It had a smallish hd then (20G), smallish memory (256M) for the time it was bought. I've been using this constantly for everything. Often the cpu is near maxing out, the hd is thrashing because there is no space left and there is no free memory. Needless to say, it runs hot most of the time.

After all the load I've put it under, the battery still holds power for close to 3 hours, I have not had a major failure (knock on wood), and it's still kicking along. Now that I am thinking about it, I'm actually really impressed. It's not pretty, light, fast or cool, but it's worked pretty consistently for 5 years without wiping the disk. I hope that my new macbook will do as well.

Monday, 2 July 2007

It's the warm cream

I've been playing around with different types of coffee, different brewing ways (drip, french press, "pod", store bought) and I've found that there is only one thing that really "makes" a coffee for me: using cream and not milk. 1% milk just doesn't cut it.

In restaurants out east they had 18% cream. Wow, did those coffees taste good. I bought coffee cream the other day from loblaws and it's only 10% and it was much better than using milk, but still not super. Here 18% is whipping cream. Mmmm...

Will I keep cream in the fridge just for making coffee? Sure. I think that my happiness is worth that. ;-)

Thursday, 28 June 2007

The Great Purge '07

One of the things that has been on my TODO list for a long time (3 years?) is to get rid of all the old clothes that I don't wear anymore. Get rid of all of the things that I have been keeping as "I'll use this some day..." things.

Now, for most people I think that this is a lot easier than for me. It just feels wrong to throw things out if they can be used some time later. Wrong if someone else could use them soon. However, I think that I have stepped over the line of ridiculous for the size of our small apartment. :-/

So, today I'll be working on making a bag for good-will and a rag bag. I'm not allowed to ask anyone if they need a bag (or 2) or rags and it's killing me. So I'm not asking. I'm just blogging about it. *cough*

I'm also extending this purge to my computer. While I bide my time until I get a new one, and before I wipe the whole computer, I'm trying it out with uninstalling everything that I can. No development tools, no databases, no Norton (the worse offender for memory!)...

Let it begin.

Tuesday, 26 June 2007

Shopping for a new phone / provider

Our cell phone is getting old (for a cell phone) and it's getting difficult to charge it. I'm starting to look around for a new provider / phones for both of us. I know that this isn't the best time of year to shop for a phone, so that part sucks.

Currently we're doing pre-paid with Bell, but I am open to any suggestions.

Anyone have any phone / plan / prepaid option that they like to use?

Monday, 25 June 2007

I went so far east in Canada people were speaking with Irish accents

There are quiet a few things that I learned traveling this summer that would be useful to know.

1) Newfoundland (NL) is not included in the "maritime provinces". I guess that it joined Canada too late to get in on that

2) In NL they don't have "lakes". Everything is a "pond" even if it is huge.

3) Eastern Canada is really, really pretty. I had no idea. I didn't know that NL had fjords... It's like BC but with a LOT less people.

4) Moose are pretty laid back. They won't run off like deer will, they're chill while they eat and walk past you.

5) The song I's the b'y that builds the boat... is about NL, with mentions of towns like Fogo (Island) where they speak with Irish accents. Really.

6) In Nova Scotia they call scenic views "lookoffs" where in Ontario I'm used to calling them "lookouts"

7) In NL: the roads are as bad as they say (or worse) and the people are as friendly as they say (or better).

8) In every prov east of Ontario, provincial pride seems huge. People fly their prov flag and identify with being from "Nova Scotia" or "Newfoundland" or "Quebec". In Ontario, I only see the Canadian flag, never the prov.

9) I never want to travel again without a Lonely Planet travel book. We ended up buying one from a used book store about 3/4 through our trip.

10) Icebergs are full of bubbles. They make a fizzing sound as they melt if you get close enough to the small ones. The big ones are dangerous since a large piece and break off and swamp your boat. It's also really hard (compressed) ice. Great for keeping your drink cold. ;-)

Thursday, 31 May 2007

Flickr

I have been frustrated with the flickr uploadr tool lately. It kept on saying that it was done, even if the upload failed. I ended up looking into other possible ways to upload pictures, and I created a script that I could use to do this.

#!/bin/sh

tags=$1
description=$2
emailAddress="myFlickrUploadAccount@flickr.com"

# For emailing all jpg's from current directory, using a case insensitive pattern match

for i in `find . -iname "*.jpg"`
do
echo "$description" | mail -s "tag:$tags" -a $i $emailAddress
echo "Emailing file: $i"
done

echo "Done all files."


The only problem with that: it worked where I developed the script, but where I wanted to run it from, it didn't. Mail on bluehost didn't have the attachment option. :-( Not only that, but apparently bluehost limits the number of emails per hour to prevent spammers, so using email to bulk upload files wasn't the best idea.

So I looked into ruby and python scripts. Not a lot of luck with either. I was starting to get really frustrated. The solution that seems to have be working (so far) is that I just installed the latest version of the uploadr.

I'm happy that it's working now, but it's frustrating that it could have been working a lot sooner. I guess it just comes back to me being pissed off when an app doesn't self-update.

Wednesday, 30 May 2007

Marriage isn't taking too well

Well, it's not the marriage, it's the ring. After I showered the other day with it on, it started to bother my finger, so much so that I have not really been able to wear it since. I'm pretty disappointed since I was looking forward to it being on my finger. *sigh*

I hope that I won't have to, but I might have to change the ring to something else. I wonder if I could get a whistle on the new one... :-P

Monday, 21 May 2007

Getting on the crackbook bandwagon

I did it. I joined facebook. Now I can try that "social networking" I've heard the kids talking about. So far, so good.

I'm looking forward to changing my relationship status from "engaged" to "married" and wait eagerly for Laura to approve the change. Ah, romance...

Friday, 18 May 2007

Lead by a piper

After going to Laura's graduation the other day I've decided that I want to be lead by a piper where ever I go. How cool would that be? You wouldn't be able to sneak up on anyone, but that would turn heads a lot more than a fancy sports car ever would. That and a fancy hat with a big feather in it. Not that anyone had that at Laura's graduation, but I think that would be awesome. I'd call the hat "macaroni". ;-)

Friday, 11 May 2007

Nerves

Most people wouldn't know it, but I can be a very nervous person. Like not being able to sleep before going to the cottage for the weekend. Now I am getting married in 15 days... oh boy. I think what's keeping me from totally freaking out is being so busy lately.

The dumb part about being nervous? I feel that it's going to go wonderful. I just get how to calm down and relax. Maybe the solution is just to go 100% up until just before the wedding so I'm tired all the time, and then have a couple of relaxing days before the "day". Ah well.

*deep breaths*

Friday, 4 May 2007

Happy Star Wars Day 2007!!

To anyone that celebrates, Happy Star Wars Day!! You know... "may the forth be with you!"

It's funny that Spider-man 3 is being released today... I guess it really is a "nerd day".

Thursday, 3 May 2007

Best of Luck!!!

To everyone that is writing a test tomorrow, the best of luck!!!

Update managers

One thing that I see now as a requirement for desktop software is the ability for it to update itself. It should be harder to not update the software then to leave it running with an old version. This is not a new idea, however I only feel that it has really started to come to the forefront in the last couple of years.

Using the latest software is better for everyone: users are using the version with (hopefully) the most bug fixes; the software crashes less so the perception of quality is higher; developers have to worry about less versions to support; etc.

Operating systems can do the same kinds of updates, but commercial ones want you to buy a new version. This leads to a less linear update path which is harder since people upgrade like Win98 -> WinXP. Open source projects pretty much want everyone using the latest and greatest so you get update managers that will upgrade the whole system (link via octonary). I sure that microsoft could make it so that you could update your whole OS, but that's not in their best interest.

I hope that in 10 years the "oh, I've got to update my software" won't be heard. The systems will download, update, and configure themselves based on how you use the computer. We'll notice the tools a lot less because they will all *just work*.

Wednesday, 2 May 2007

Ubuntu live cd not so live for me

I tried out the ubuntu live cd to assess if it would work okay with my laptop before doing anything drastic like wiping out the computer. I'm assuming that because it's just running in memory, only 250 Mb at that, it's having too hard a time. To say that it wasn't too responsive is an understatement. I tried to open the "Network" app so that I could try and configure wireless. At not seeing the clock change for 10 minutes on my computer, I rebooted it.

I did a disk check, and that reported the cd I burned is okay. I did a memory check and let that run for 15 minutes, and that didn't find any problems my my ram. *sigh*

Either way I think that I am going to wipe my laptop. Either windows is going to be reinstalled or some flavour of linux. I just can't stand it any more. I'm planning to make sure that all my external drives are read / writable from linux before moving on, then make sure that I can use my scanner / camera with linux and upload the pics to flickr. If I have too much trouble, then it'll be XP going onto my laptop, not linux.

Oh, if a non-techy person asks what you mean by a "flavour of linux", tell them that you are trying to decide between "salty-sweet" and "chocolate". Those are the popular flavours.

Monday, 30 April 2007

A guys day

My brothers took me out yesterday to the "Guy Show" at Lansdowne. Pretty cool... lots and lots of expensive toys like jet skis, boats, trucks, bikes, and 4 wheelers. I took a picture of a dinner room table that you can remove the top and it's a pool table. Awesome. I always find that those shows are more about dreams than reality, but they are cool none the less.

After that we went over to top karting in hull. I can still smell the gas fumes when I think of it. I had no idea how physically hard it is. My muscles are killing me today. Not that I am a super good driver, my brothers lapped me twice. Then for dinner I got yummy ribs as we reviewed how to drive the track.

So, it was a good day. ;-)

Saturday, 28 April 2007

Can I wait?

My computer is driving me nuts. It's sooooooooo slow. Really, all that I can do with it is use firefox. If that's all I'm doing, it's okay. I was waiting for leopard to come out so that I wouldn't have to pay for the upgrade. I'm not sure that I can wait till September. Is my sanity worth the cost of just getting a new computer now and eating the cost of the upgrade?

Right now I am scanning some old family photos... it's very slow going. A lot of time just waiting for the computer to respond back. For example, in windows explorer, right clicking, I have to wait 15-20 seconds for the menu to show up. Never mind the time it takes to scan the photo.

*sigh* I may break down in the next while and just buy a mac. I don't think I'm going to go cheap either. Lots of memory, lots of disk space. We'll see.

Friday, 27 April 2007

Social networking

Lately I've been getting a lot of invites from friends for me to join crackbook and LinkedIn. So far I have resisted joining the "social networking scene" for fear that it would eat up more of my free time. Granted, I always find ways to use up time when I should be doing other things (eg. blogging instead of making dinner). Am I missing out on why these sites are so good? Probably.

Currently my online presence is email, this blog, and flickr. No more icq or msn for me. I just sort of lost interest. Am I being antisocial? Perhaps. At this point I figure that I'll just break down one day and make an account... probably in the summer sometime.

Damn kids and their new fangled social networking...

Thursday, 26 April 2007

Exercise prevents crazy

In higher stress times, exercise is a great way to reduce the amount of crazy. No exercise? More than enough crazy to go around...

On an unrelated note, I get married one month from today.

Wednesday, 25 April 2007

i18n in a java web app

There are at least a few strategies for supporting different languages (i18n) in a web app. These strategies are for non-constant data the the user controls which could change from request to request. For text that doesn't really change, it's best to use whatever i18n strategy that the MVC you are using recommends (ResourceBundles). I'm going to outline a few with the pro's and con's of each.

1) Walk the model
When you are passing the model to the view, you "walk" all of the objects, telling them what language they are supposed to display. The jsp is simple because you have just one "write" tag that is language agnostic. The bad part is that for every request you have to make sure you walk everything that's in every scope and make sure the model knows what language the request is. Not easy, and very error prone.

2) View knows what what it speaks
The objects have methods for every language it supports. This means that the jsp's know what language the request is, and for every language that it supports there is a if / else clause to print out the correct text. This isn't so bad if you are supporting 2 languages. It's not something that you could use if you were supporting many languages though. It leads to messy jsp's and having to test the view for every language to ensure that it is rendering correctly.

3) Threading? Keep it local.
Using a static member is out since that would be shared across the jvm, not something you want for a multi threaded app. However, there is something that allows you to use static-like access while still being thread safe: ThreadLocal. This means that you can leave your view clean, and you don't have the complicated task of of walking the model. Through a filter, you can set what the language is and then you are just coupling the model to a "language helper" that has a ThreadLocal member. One downside is that each model object will have logic for every language to support, for every field. Not too bad, since you have to put it somewhere, and with this method you only do it in one place.

I've always used #2, but have never really been happy with it. I have not used #3 yet, but I have seen it used. When I saw it I had one of those "why didn't I think of that!" type of moments. I'm looking forward to making my code cleaner. ;-)

Dry humour

I don't think that I would have been so cool if my performance was interrupted like Mike Daisey's was. I think that it's funny that he asked the protesters to stay and discuss why they were not happy. Well, it looks like those protesters just helped make him famous. What's the line: "I don't care what you write about me, just spell my name right"?

Tuesday, 24 April 2007

The Machine is Us/ing Us

The other day at work I saw a really cool video and thought that I would share. It's worth 5 minutes.

Monday, 23 April 2007

Windy enough for ya?

Ya, the wind is pretty strong. A street light was blown down on my path home and the wind almost blew me off my bike a couple of times. It's a weird thing biking on flat grown, braking at a medium pace and actually accelerating. I didn't know if I would be able to stop at the intersection. Yay spring storms. :-/

Sunday, 22 April 2007

Sudden Spring

You know that spring has come up suddenly when you have winter boots and sandals by the front door, and you're not sure if you should put either away.

Sunday, 15 April 2007

Wedding dress vs. a Tux

One thing that I find really funny is how different the experience shopping for clothes is for me and for Laura for the wedding. Men rent their outfit, women have to buy it. Cost for a guy, less than 150 $ for everything: shirt, pants, jacket, shoes, ... A wedding dress (just the dress) is hundreds, if not thousands of dollars.

When Laura picked out a dress, they ordered the dress and I think that she's gone in for like 3 fittings with more to come. For a guy, one measurement, try on an outfit with the same size and the assumption that when you an order something of a size, that's what you will get. And it's not like you can see the whole piece of clothing. For a vest: you get a bunch of 1/4 vests on a binder ring and you pick them out like you'd pick out a paint colour for a room.

For a woman, the wedding dress is supposed to be the most important part of the wedding. The man is supposed to show up in something clean. Well, honestly, the guy is supposed to be in whatever the the woman wants him to be in. I was told "no" to wearing jeans, that's how I know that.

I'm just amused by the huge difference between what is expected of a man and a woman for a wedding.

Friday, 13 April 2007

This is Why You Shouldn't Clean Your HDTV with Windex

Wow. I never knew how much you could screw up your tv by using a liquid cleaner on it until I saw this. Sucks to be that guy. I think that I'll follow his lead and just yell at anyone who gets too close to the tv. As it is, I'm not using the power button on the tv itself for fear of zapping it (again).

Next thing you know I'll be yelling at those damn kids to stay off my lawn!

Thursday, 12 April 2007

Is it too late?

Sometimes /. has some pretty powerful comments. I like this one and someone's follow up.

Governments lately are scaring me more and more. With them being able to report on every aspect of our lives, does that really prevent terrorism or just increases people in power's ability to stay in power. Was Orwell just off by 20 or 30 years?

Orwell's London neighborhood covered in spy-cameras
Korean War hero branded a terrorist

Update: another interesting link: what Lee Iacocca thinks about what's happening in the states now.

Friday, 6 April 2007

I can't hunt ducks anymore

I'm a bit sad since I can no longer hunt ducks, using duck hunt of course. Our old crt tv bit the dust close to 2 months ago and we got a lcd tv. I'm not sure what makes it unusable, if the tv's response time is too slow or what, but it doesn't work. I guess that I'll just have to keep on playing Dr. Mario on the NES. If I want to play duck hunt again I guess that I'll have to pick up wii play. But Super Paper Mario will come first. ;-)

Wednesday, 4 April 2007

Getting back into the spin of things

Yesterday was the first day of my biking commute season. Wow, it's a lot harder than how I left it off last season. It's remarkable how fast you can get out of shape. Ah well. Pretty soon I'll get back up to where I was and it'll be all good.

No biking today as it's like 6 degrees C and pouring rain. Ah, spring...

Saturday, 31 March 2007

Right foot in, right foot out...

Do things ever seem like the hokey pokey to anyone else? There is a lot happening to keep people busy, but nothing is actually getting done?

*sigh*

And that's all I have to say about that.

Wednesday, 28 March 2007

You just don't get it, do you Scott?

A couple of times lately I have felt like Dr. Evil in that scene where he puts Austin in a room with a slow death machine and will just assume that he will be killed. His son Scott wants to get a gun and just kill him to make sure he doesn't get away.

"You just don't get it, do you Scott?"

There is a difference between being able to do something and understanding why you should be doing it.

This is why I think that people who make design choices should be made to implement them. It's like a developer that doesn't move into a maintainer role on their code: you don't ever learn how what you did at the start effects the end of the project.

I'm sure that I'm guilty of a lack on comprehension from time to time but I like it when someone helps me see the light. It makes me better. ;-)

Saturday, 24 March 2007

Red cape and goggles!

Man, I knew that I was missing something. All this time I was missing my red cape and goggles!

Wednesday, 21 March 2007

Hibernate 3.2.2 GA

I tried to upgrade an app I am working on from using Hibernate 3.1.3 to 3.2.2. It didn't go nearly as smoothly as I thought that it would. First thing is that they no longer default a cache impl. If you had not specified a hibernate.cache.provider_class property before, it will just die. Shocking, but not difficult to get around when I found the problem. Cool. So I changed that and ran my tests to see all these NPE's. *sigh* Apparently I found another unfixed bug.

Short story: I reverted back. I'll figure out another way to get the feature that I was looking for when I upgraded. :-(

Monday, 19 March 2007

Effective <del>lying</del> storytelling

A couple of weeks back I was talking to a guy and he was telling that there is a simple formula for lying. Personally I think that it's better suited to "creative storytelling", but it's all how you look at it.

His theory was that you had to ensure that your lie contained a: who, what, where, when, and why. If you're able to quickly put 5 facts that seem to link up, that's a lot more convincing than just one. Here's an example:
During the American civil war (when), Colonel Sanders (who) was able to have his troops march faster on the hard road from Alabama to Kentucky (where) by relying on fried chicken for rations instead of beef (what). The frying process allowed the food to keep longer since the grease sealed the meat from the air and bacteria which would cause it to go bad (why).


This is clearly bs and just something that I made up on the spot (perhaps because I am hungry). However, if you are able to quickly throw linked facts at someone, all of a sudden your argument seems more credible. Why? Probably because coming up with 5 linked lies is harder than coming up with one. I have found that this technique works well in combination with holding a straight face. If you can do those 2 things, those will help you on the way to being sneaky. So very sneaky. :-)