New year, new habits

nofacebookI’m doing a bit of technology/social network housekeeping. I’m juggling too many accounts on too many computers, so I’m going to spend some time over the Christmas break fixing some accumulated cruft in my personal technology stack.

Get off Facebook. I haven’t posted anything in a few months, and I find my time is spent mindlessly looking at the status updates of those few people that I haven’t blocked from my wall. I’m not going to delete my account – some people use it for party invites – but I’m going to log out and count on email messages to warn me when there’s something I need to worry about.

Continue reading


How the Bay fucked our Saturday

A couple of weeks ago, we bought a bed at the Bay (Yonge and Bloor). We scheduled a delivery for today. The window that we were given was noon to 6pm. That’s a big window, but we were hoping that we’d luck out and get an early delivery and then get on with our day.

By 5pm, there was no sign of a delivery. We cancelled our pre-dinner plans (sorry Scott and Shawn, no time for drinks!) and called the Bay’s service centre, in hopes of finding out where our bed was and when it would arrive. All that they could tell us was that the bed was supposed to be delivered by 6pm.

Continue reading


6 – 1 x 0 + 2 / 2

Oh, for fuck’s sake.

This is why I should just get off Facebook. A friend linked this question in his feed, and I made the mistake of reading some of the answers. Right now it’s got nearly 39,000 answers, and at least half of them seem to be wrong. Actually, more than half – maybe one in five gets it right. The answer is 7:  multiplication and division have higher precedence than addition and subtraction.

The part that gets me is that every single person arguing for another answer is convinced they’re right. I hate to appeal to authority, but typing the string into Google returns the expected answer.

Continue reading


Aspects of software quality

A little while ago we were doing a lot of hiring on my project team. I got a little tired of asking all the same interview questions and mixed it up a bit. One of the questions I came up with was:

Code should be correct, efficient, maintainable, and testable. Rank those four qualities in order of importance.

I consider one of them a gimme: efficiency, or optimization, or performance, whatever,  should generally be the last thing that you look at. There are exceptions to this, but you generally don’t see them in corporate environments. Ranking the other three can be an interesting exercise.

Continue reading


Family history

William Walter Reed

While I was working on a personal project, I ran across this picture. It immediately captured my attention – there’s something about it that both my wife and I really liked. We had no idea who the men were, but we immediately made a copy of the picture so we’d be able to hang it up in the house.

I eventually reached out to my Uncle Barry, hoping that he might be able to shed some light on the identity of the men. He was able to help me out, and filled in some biographical details.

Continue reading


Outsmarted by spammers

For a long time, I’ve been giving out unique email addresses to anyone that’s not a real person. For example, my LinkedIn email is linkedin@example.com. I started doing this to track who was passing email addresses around, as well as being able to “turn off” any email addresses that start attracting undue amounts of spam. I generally only give out my “real” address to friends.

The way I’ve done this until today is to have a “catch-all” address set up on my mail server. Most hosting places provide this feature, although DreamHost does warn that it’s often a bad idea. The way it works is that any mail received is set to that one address, which is then forwarded to my main address. So when I start using an new website, say ordering from Swiss Chalet, I just use swisschalet@example.com and the email gets delivered to my main address. The beauty of this is that I can just make up new addresses on the fly and I don’t have to worry about activating them on my server. And in those cases that the address gets compromised or starts attracting spam, I can just instruct the server to delete the message without bouncing.
Continue reading


Blog re-organization

Since all my posts recently have been about the 4-Hour Body, I’ve moved them to their own section. Eventually I want the front page to be all technical articles, and I’ll move the bitching and other posts to their own page as well.

The 4-Hour Body posts can be found here.


And then the Bixi rep implied my wife was an idiot.

On the way to see The Avengers today, my wife suggested that we rent Bixis and see if we liked them. Here’s what we liked:

  • it was easy to pay for our bikes

Here’s what we didn’t like:

  • we couldn’t actually get both bikes, so we ended up walking

We had the convenience of paying for the bikes, plus the added exercise of walking the whole way. And since we didn’t get the bikes, we didn’t have the hassle of returning them. So I guess that’s a win?

Continue reading


Spring testing framework: how to load the application context from the file system

While attempting to standardize the testing of a code base, I’ve been trying to enable Spring’s test-level transaction management. In a nutshell, if you run a properly configured test within Spring’s test transaction framework then then the test does not actually commit anything to a database.

It should be as easy as annotating your test class like this:

@ContextConfiguration(locations="application-context.xml")
@TestExecutionListeners({TransactionalTestExecutionListener.class})
@TransactionConfiguration(transactionManager="myTxManager")
@Transactional

This loads the application context from the classpath and then manipulates the transaction manager named myTxManager to roll back the database transaction when the test is complete. The problem I have is that the application context file isn’t on the classpath. To make it even more interesting, it’s stored on a different place on each developer workstation. There’s already a utility to discover the file, I just need to hook it into the context loader.

Continue reading


On leaving a job after 11 years

After nearly eleven years, I recently left Intelliware and have accepted a new position at Autodesk. It’s a weird thing in today’s environment to work anywhere for as long as that, and it’s doubly weird to leave after that time.

It works for me, though. I’m a good fit for the new position, and the challenge will be good for me. It’s tough to leave a small company like Intelliware, where I felt (and still feel) real kinship with the management and ownership teams. I knew my work made a difference, but it kind of feels like a big-fish-in-small-pond situation. I’d like to see what I can do in a much larger company.

Continue reading