Jul 19 2009

Radio Silence

Wow – pretty close to a month since I’ve posted last. It’s certainly not like I’m lacking things to write about. Here’s a brief recap of the past few weeks.

At home, I’ve moved, explored the new neighbourhood, planted some herbs on my new patio space, BBQ’d on the first BBQ I’ve ever owned (thanks, Jen!), and nearly ruined my wrists playing Guitar Hero: Metallica. The cat is having a lovely time running up and down the stairs (her first, I believe), it’s wonderful to have in-suite laundry again, and it’s just awesome getting out on the patio, even if it’s just to varnish a shelf. I have yet to name the bird that sings to me every morning on my walk to the bus loop, but that may get done this week.

The commute to work hasn’t been too bad – 45 minutes there, an hour back – and I’ve been playing some awesome emulated games on the way. At work, the team’s been doing really well, garnering a lot of internal and external attention with our efforts. I’ve moved to a kanban system for pull-based scheduling, which I’m hoping will streamline our work flow. This will be especially important early next month, as my team is set to grow by 66%.

Let’s see… I’m quite enjoying playing ultimate, Michael Jackson’s still dead, and I’m tired from a long day of around-the-house busywork. Hopefully I’ll get back to writing regularly sometime soon.


Jun 28 2009

Twenty Questions

Following Jen’s lead, I’m going to try to make up for a recent lack of posting by taking the easy out and doing a meme. Instead of writing it about Mel, it’ll be about me – I’ll ask Mel the questions and write down what she says. Here are the twenty questions, answered by my wife, and my comments on her answers.

1. He is sitting in front of the TV. What is on the screen?

“Video games.”  (No argument there)

2. You’re out to eat; what kind of dressing does he get on his salad?

“Oil & Vinegar.” (Sounds good)

3. What’s one food he doesn’t like?

“Seafood.” (Three for three!)

4. You go out to eat and have a drink. What does he order?

“Gin & Tonic.” (Those are good – her first answer was “beer”, but she changed her mind when I asked her what type of beer. Beer is also a good answer)

5. Where did he go to high school?

“The same place as me.” (Correct!)

6. What size shoe does he wear?

“8?” (Between 8 and 9, depending on the brand. Same size as her, so I’m glad she got this one right!)

7. If he was to collect anything, what would it be?

“Hockey cards.” (I would have said “nothing”, but hockey cards are probably the one thing I’ve ever collected.)

8. What is his favorite type of sandwich?

“Turkey.” (Yeah, that’s what I usually get at Subway. Made by sandwich artists!)

9. What would this person eat every day if he could?

“Nachos.” (Si, señorita).

10. What is his favorite cereal?

“Granola.” (Yes, and yet another answer that’s identical to her choice.)

11. What would he never wear?

“A thong.” (As good an answer as any).

12. What is his favorite sports team?

“Vancouver Canucks.” (Maybe from October to May, but in the summer it’s “How I Hucked Your Mother“, my ultimate team)

13. Who did he vote for?

“NDP.” (Mel Lehan, for the man, not the party)

14. Who is his best friend?

“Me.” (So very, very true)

15. What is something you do that he wishes you wouldn’t do?

“Be clumsy.” (She *does* have a tendency to break the occasional dish while stubbing her toe and knocking over the cat food…)

16. What is his heritage?

“Newfie and Irish.” (I can’t be sure about the Irish, but I heard once that my family can be traced in Newfoundland back to 1770)

17. You bake him a cake for his birthday; what kind of cake?

“Double chocolate or goat’s cheese cheesecake.” (Double good. Now I’m hungry.)

18. Did he play sports in high school?

“No, not unless you count D&D.” (Hey! I didn’t play D&D in highschool, but I did spend 6 years kicking ass in Ju-Jitsu, thank you very much)

19. What could he spend hours doing?

“Sleeping or playing video games.” (Guilty as charged)

20. What is one unique talent he has?

“Confident humility.” (Interesting phrase – I like it. Described to me as knowing what I’m doing but not being too cocky about it)

There we go, 20 questions. There’s a lot going on that I should write about, but I think I’ll wait until everything has blown over before I sit down and commit it to e-paper.


Jun 7 2009

June Already?

I’ve been putting off doing a few larger, structured posts, but I’d like to write something, so here’s a random collection of unrelated thoughts and updates :)

I’ve been reading through the Dune series of books (thanks to Jeremy for lending them to me!). I hadn’t read fiction in a while, especially science fiction, so it’s been good to let the mind relax and take in the interesting world that Frank Herbert has created. I’ve just started the third book in series, and so far it seems to be as good as the first two, but it’s worth pointing out that all of the books break the fictional rule of thumb.

I’m currently playing through Lost Odyssey for XBOX 360, and it’s gorgeous. The level of detail is stunning, the music is great, and the story is compelling. It’s even got a fairly interesting (if somewhat conventional) battle system. It’s games like this that make me believe that the quest for better and better graphics hasn’t completely destroyed the pursuit of other aspects of video games.

For the month of June, I’ve decided to not drink any caffeine at all. I usually have one coffee in the morning each day at work, but in the past month or so I’ve found that I’m often having a second cup in the afternoon. I’d also started having coffee or tea on the weekends, where previously I’d go caffeine-free Saturday and Sunday. This doesn’t really concern me, but for some reason it seemed like a good idea to go without for the month of June. I’ll let you know how it goes.

I’ve also decided to not drink any alcohol for the month of June, but I’m wavering on this one. I don’t drink very often at all, and almost always it’s with food. This week was interesting, making me realize that alcohol is a lot more prevalent when the days are warmer and longer. I found it quite easy to resist the beer at our weekly ultimate game (except for an I-just-had-to mouthful of Bud Light Lime*), and it took no willpower to turn down a sip from the keg of beer at Friday’s rooftop office party. The real challenge came this morning, when I had to turn down a wonderful mimosa with breakfast (after drinking a third of it before remembering this month’s goal). I did okay with that, but the thought of attending a BBQ tonight, having a wonderful buffalo burger, and NOT opening the bottle of 2004 Gray Monk Gamay Noir that I’ve had for a few years – that was much harder. I may end up updating my decision – perhaps I’ll move on to having a glass of wine with dinner but not doing any non-meal drinking. We’ll see how that goes.

There are a few other exiting things going on, but I’ll wait until they solidify before I write about them. I hope everyone reading this is enjoying their summer :)

* For those who are curious, Bud Light Lime is actually not too bad. The trick is to not think of it as a beer – it’s a horrible beer. As a fruity, refreshing summertime drink, it’s drinkable.


May 30 2009

Sunny Days

Some silence from me recently, so here’s a quick update.

I went to Ucluelet a few weeks back, which was nice and relaxing (full post upcoming). I’m currently sitting at my parents’ place in Penticton, enjoying the 30º weather. Today I’m having lunch with my parents and brother and sister-in-law, then heading up to Kamloops to spend some time with my brother and Mel’s sister.

May has been a bit of a crazy month for various reasons that I won’t get into, but it’s looking like June will be a bit more easy-going (and sunny!). Hopefully I’ll get back into more of a regular writing flow as well.

Enjoy the nice weather, everyone!


May 11 2009

April Wrapup

In the spirit of my February Wrapup, here are some things that have been going in the last month or so.

An explanation of some recent entries on my Twitter feed:

I am the Jenga king (April 4)

We had an end-of-fiscal-year party at work, which ended up being a ton of fun. I was part of a 3-person team who ended up winning the giant-jenga tournament. One of my turns took about 5 minutes, but I got that brick out! Here’s what it looked like:

Very proud of my wife right now (April 8 )

In the past few months my wife Melanie has taken the training to become a doula, gone to additional training courses, and become involved in the Doula Services Association of B.C. – it’s been a busy spring! I believe this tweet was made about an hour after she went to work her first shift as a doula, which happened to be an overnight shift.

I held a 320-year-old book this weekend. It was *cool* (April 14)

Visiting Mel’s grandparents’ place on Vancouver Island is always a treat – good food, interesting stories, and the chance to explore their awesome old house. After looking through various bookshelves, I found a copy of The First Book of Architecture,  by Andrea Palladio, an original copy from 1692. There were also a lot of early-print Kipling books, some cool war books, and a lot more that I’ll look through on my next visit.

The perfect is the enemy of the good. (April 24)

This turns out to be a quote by Voltaire, though I didn’t know it at the time. I hadn’t heard it before, but it immediately appealed to me, and since hearing it I’ve seen how applicable it is to many situations. The main thrust is not to let the difficulty of perfection prevent you from improving. For example, take a look at the whole STV issue currently going on in BC – some people say that because it’s got some flaws we shouldn’t adopt it, and instead wait to come up with something perfect. If you always strive for the perfect without allowing yourself to settle for the good, you may not accomplish much.

Going to see a ‘ukulele grandmaster tonight. James Hill’s gonna rock! (April 30)

James Hill and I go way back – we were in a musical together in my first year of university, and I was in a short-lived funk band with him (check here for a review of the band’s only album, under “The People vs. Funk” – I can probably get a copy of the tracks for anyone who’s interested). He’s a musical genius, a string virtuoso, and an all-around nice guy, so I was pleased to hear that he was coming back to his native Vancouver to rock out on the ‘ukulele (yes, it’s possible). A great show!

How has your spring been so far?


May 6 2009

GMake it Happen: Build Improvements and Parallelization

Finally, a post on something that’s potentially interesting to software folk! After attending Eric Ries‘ talk on the Lean Startup, I started thinking about how to work towards continuous deployment within Sophos. Note that I say “work towards” and not “achieve” – for my product lines, at least, achieving continuous deployment would involve a very large and fundamental re-architecture, so that’s not in my plans at the minute. However, I believe that in working towards continuous deployment it is possibly to obtain some very real benefits, so I decided to take some first steps.

We’ve already made great improvements since the early days of our projects. One such change was the componentization of our builds. Rather than have to rebuild absolutely everything whenever anything in the entire product changes (leading to statements like “I changed the wording in the help file, so now it’s going to take two hours to rebuild the operating system”), we’ve broken things out into logical components. In the Sophos Email Appliance, for example, these components include:

* os (our custom hardened version of FreeBSD)
* sophox (core system tools that are separate from the os)
* pmx (the appliance version of PureMessage, the core mail filtering software)
* apps (third-party things such as the database, MTA, CPAN modules, etc.)
* ui (all code related to the browser-based GUI of the product)

Almost everything has to rebuild if you change the OS, but hardly anything builds if you only change the UI. This didn’t do anything for our worst-case build time, of course, but it’s certainly cut down our average build time quite a bit. Starting with version 5.5, PureMessage for Unix has adopted this componentized build system as well (much to the team’s relief).

To repeatedly get software out quickly, you need to be confident your code base and automated tests. If every change requires a week-long manual test pass, you’re never going to be releasing every 3 days – the numbers just don’t add up. So, we want a lot of automated tests, but this can get to be slow as well (our current nightly regression suite takes about 10 hours, mostly due to having to set up and tear down browsers). Unit testing things can help mitigate this, as often unit tests are much speedier than full end-to-end UI tests due to their limited scope, and we have several thousand unit tests in our product. But now, since we run unit tests (with coverage!) on every build, it can take up to several hours to build the entire system. So, are we stuck with a time vs. quality trade off?

As it turns out, there’s still a lot of room for improvement. In the last week, we’ve made a few relatively easy changes that have cut the build time on several key components by over 50%. There was no new hardware purchased, and nothing was rewritten. What we did was take advantage our existing hardware and the lack of dependence in most our packages by adding some parallelism to the build. This started out with me toying around with the ‘-j’ option for Test::Harness, which runs all unit tests in parallel. This mostly worked, except for a few straggling .t files that didn’t use process-specific temporary directories. Over the weekend, a fellow development manager took these ideas, fixed up all the tests, and actually got parallel tests in the build – a big win! However, he wasn’t done. After realizing that a lot of the build time is spent running “make” in all of our sub-directories (as every “make test” first runs “make”), he changed our builds to take advantage of yet another ‘-j’ option, this time for gmake. Once this was in the build, all packages were built simultaneously, and all tests within a package were run simultaneously. This really makes our build boxes work – all 4 cores are now being used – but it cuts build times in half.

Continuous deployment is still miles away, but we’ve halved the amount of time that it takes to get a change validated in a real build. It’s a start!


Apr 24 2009

Old is the New New: Cross-Generational Learning

In the past few months I’ve been noticing that a lot of “old” knowledge is coming back into use. By old knowledge, I mean information, techniques and ideas that have been around for some time but have been pushed aside, forgotten, or seemingly discredited. Perhaps some examples would be useful.

I recently traveled to Vancouver Island to spend time with my grandparents-in-law. While eating lunch at a local pub, I was telling them about how urban gardening is really picking up steam in Vancouver (and other places, of course, but Vancouver is what I know best). Sales of seeds and other gardening-related gear are way up, and a lot of the uptake is in the growing-your-own-food market. Empty lots in the downtown core are filling with garden plots, while rooftop gardens are a big trend in new condo development. Today at work, I visited our support department on the 5th floor, only to find a windowsill herb garden. Growing some of your own food is hardly a new concept (something like 40% of Canadians grew their own food in WW2), but its only recently that it’s been regarded as a trendy thing to do.

While we were having this conversation, Mel was having a seemingly unrelated conversation with her mother about doulas, midwives, and the institutionalization of the birthing process. Since Mel has recently become a postpartum doula, she’s really learned a lot in the past few months about the role that doulas play in many cultures, and how only recently that role has started to be recognized as very important in this country (other countries already know this – in Europe, some countries cover doula costs as part of their national health care system). Midwives are still relatively rare (10 seats per year at the UBC School of Midwifery), but it’s an improvement from 15 years ago, when Canada became the last developed country to recognize midwifery. Once again, old wisdom, that is, women and children benefit from having knowledgeable help available around childbirth, is starting to once again be practiced.

The big daddy of revisited old knowledge is the entire Green movement. Sure, there’s modern science telling us that monocultures are bad, global climate change is almost certainly real, and the ocean is filling with plastic. But if you go back far enough, you find that there aren’t a lot of new concepts. With food production, people are starting to realize that perhaps it’s not the best idea to feed cattle corn, plant only one crop on a large area of land, or spray food with poisonous chemicals. With building design, the concept of having a central brick wall to retain heat is regaining popularity, as are old-time practical things such as rainwater collection, smart plant selection to improve air quality, and designing awnings in such a way that they’ll let in more light in the winter months and less in the summer. Then there’s the whole drive towards resource conservation and pollution reduction, which never really went away but is certainly getting more and more popular.

So, has anyone else noticed this? Am I just seeing confirmation bias in action?


Apr 22 2009

Lean Development for Lean Times

Yesterday I was able to attend a mini-conference entitled “Lean Development for Lean Times”, put on by Agile Vancouver. The conference consisted of 3 speakers in two rooms, each speaking twice over the course of three time slots, allowing everyone to see every speaker (or one speaker twice, if they so desired). As you know, my company has been investigating lean development practices, and my manager was one of the conference organizers, so there ended up being about 10 people from Sophos there. Thankfully, there was a mix of software developers, managers, product management, and even the VP of development, which I believe increases our chances of adopting lean.

The first speaker I took in was Silicon Valley veteran Eric Ries, who gave a rapid-fire talk on the Lean Startup. The talk was quite informative, my favourite of the three, even though I have no desire to start or join a startup – the ideas and methods he gave are applicable to startup-like teams within large organizations as well. I took extensive notes, and I’ll likely end up doing a separate post just on this talk (unless my writing duplicates Eric’s website, which I have yet to read in-depth).

The second talk was given by Corey Ladas entitled “Scrumban: Lean Thinking for Agile Process Evolution”. Scrumban is a portmanteau of Scrum, an implementation of the agile software methodology, and kanban, a japanese word translated roughly as “sign board”. Scrumban is the idea of taking kanban cards, an idea borrowed directly from lean manufacturing, and integrating them into the standard agile task board as a way of implementing pull scheduling. This is an idea that I’m likely going to try out with my team, so I’ll talk more about the concept once I’ve had a bit of experience with it.

The last talk of the day was “An Introduction to Lean Product Development” by Katherine Radeka. True to its name, it was an introductory talk on lean development principles, how lean development differs from lean manufacturing, and the nature of waste. Having read a few books on lean recently, there was nothing too groundbreaking here for me, although I did enjoy the Q&A and participatory aspects of the talk.

I quite enjoyed the conference, and it was interesting to see the reactions of people to some of the claims being put forth by the presenters (as well as from others in the audience). Hopefully I’ll get to try out some of these techniques at work, and I’ll definitely post about any successes or failures that result.


Apr 18 2009

First Steps With Lean Software Development

The latest buzzword right now in software development (as well as many other industries) is “Lean”. My company has recently started adopting some lean principles, and a lot of my reading in the past few weeks is either directly or indirectly related to lean, so I thought it would be good to write a bit about what I’ve learned so far.

First of all, a little history to know what we’re dealing with. Lean software development is primarily an application of lean manufacturing principles to the software industry. In the manufacturing world, lean is starting to be widely accepted as a Really Good Way to Do Things. Toyota was the first company to really embrace lean (in fact, they helped develop it), and although they’ve been hit by this recent economic storm, they’re doing worlds better than the Detroit Three, thanks in no small part to lean principles.

I’ve mentioned “lean principles” a few times, so I should at least list them. The seven lean principles are:

Eliminate Waste
Build Quality In
Create Knowledge
Defer Commitment
Deliver Fast
Respect People
Optimize the Whole

I plan on doing a post on each of these, with a short definition followed by how I’m trying to adhere to these principles with my team. I don’t claim to be an expert (or even proficient) in lean development, but I find that writing helps me solidify thoughts, and I’d love to hear any questions anyone has about lean. Stay tuned for a discussion on the first lean principle: Eliminate Waste. In the meantime, if you’re interested in learning more, check out the Wikipedia page on Lean software development or pick up a few lean books.


Apr 13 2009

Backlog

For me, media seems to come in waves. I’ll have nothing at all to watch on TV for a while, then I’ll get a hold of boxed sets of Firefly, Extras, Torchwood, and The F Word (my current list of things-to-watch). However, television is rarely something I prioritize, so I’m not usually concerned with having this backlog.

Books and video games, however, are things I do prioritize. That’s not to say I consider video games to be a high priority, but I do enjoy them quite a bit and look forward to the limited amount of time I have to play them (usually otherwise wasted time such as an hour before bedtime). I consider reading to be fairly important, but I’m often at a loss to figure out what I want to read. There’s just so much out there that I haven’t read, and I’ll never read it all, so I usually I end up not particularly interested in anything for a while, and then something will trigger and I’ll get a backlog.

I’m in such a backlog situation right now. Before December, I was reading rather sporadically, maybe a book every 2 months, and it was quite often that I wasn’t reading anything at all. Before getting my Xbox 360 in October I hadn’t played much at all over the previous 6 months. Now, I’ve got quite the queue.

For books, I’ve recently finished off a few books on Lean Development, as well as Zen and the Art of Motorcycle Maintenance (look at that – Geek and Philosophy next to each other!). I plowed through The Goal, which was quite enjoyable and hopefully useful. Next up is a bit of lighter reading, with Randy Pausch’s The Last Lecture, followed by pop non-fiction in the form of Malcolm Gladwell’s Outliers. After that, I was going to move on to Frank Herbert’s Dune series (the first two books of which I borrowed from Jeremy), as I haven’t read fiction in quite some time. However, both ZatAoMM and The Goal have mentioned the Socratic Dialogues in a positive light, so I may have to turn in that direction next, although I’ve just borrowed Obama’s second book, The Audacity of Hope, from my mother-in-law, so who knows where I’ll go.

In the electronic entertainment realm, my usual habit of getting into a console late is paying off yet again. Most of my friends own an Xbox 360, so I’ve been able to borrow most of the high profile games I’ve wanted to play (namely Grand Theft Auto 4, Half-Life 2, and Bioshock). Several friends have also owned the original Xbox (with which the 360 is backwards compatible, for the most part), so I’ve been able to get quite a few original Xbox games as well. Here’s the current stack of games I have to play, only the bottom of which I actually own:

Games backlog

Worth noting is that at least 5 of these games are expected to weigh in at 50 hours each. There are also a few other games that I plan to borrow (Oblivion, Fallout 3, Fable 2), which should mean that it’ll be well into 2010 before I have any need to buy a video game.

I’ve got a great Library plugin that lets me keep track of what I’ve read (and when I’ve read it) and do up little reviews. I haven’t been able to find something similar for games – I could modify the library plugin, I guess, but I’m not much of a php coder and that would take valuable time away from my reading and playing :)

Does anybody else notice their media list go from drought to flood? Know any good way to represent games played in wordpress? Let me know!