Operations Database Talk at Agile Vancouver

I’ll be talking about leveraging operations databases to bridge the gap between development and production at tomorrow night’s Agile Vancouver meeting at Sierra Systems. See you there.

Tags: ,
Filed under agile : Comments (0) : May 26th, 2008

Continuous Monitoring on Hanselminutes

While at DevTeach, I was interviewed by Scott Hanselman for his Hanselminutes Podcast. We started out talking about the history of the CruiseControl.NET project, but I opted to segue into discussing Continuous Monitoring. Continuous Monitoring focuses on providing continuous feedback to a team by leveraging visible dashboard displays to ambiently communicate information about the health and state of their project. I intend to write more about the practice here on this blog, but for now the podcast is the best place to learn more about it. I will be presenting about it at Agile 2008 and if you are interested in joining the discussion, feel free to join the Continuous Monitoring group.

Corrections:
There are a few statistics that I cited incorrectly off the top of my head during the podcast:

  • The CruiseControl.NET project has consumed over 46 person years of effort - at least based on what oloh can divine from our subversion repository.
  • The CruiseControl.NET project has had over 800,000 downloads - not 80,000 as I said during the interview. I was off by an order of magnitude. Oh and this doesn’t include all of the direct downloads from CCNetLive

Tags: , ,
Filed under .net, agile, technology : Comments (0) : May 20th, 2008

DevTeach Toronto Wrap-up

Last week I was out in Toronto presenting at DevTeach. I gave 3 presentations:

Unfortunately I ended up attending relatively few of the sessions as I was pretty busy preparing the materials for my presentations. But what I did see was quite good. I particularly liked Derek Hatcher’s Leveraging the Amazon Platform (EC2 and S3) and Greg Young’s DDDD, Unshackle Your Domain.

What I enjoyed most about the conference was getting to know and learn from some of the experts in a new technology circle. I missed last year’s DevTeach in Vancouver as I was in China at the time but I was glad to have made it out this one.

Tags: , , , ,
Filed under .net, agile, technology : Comments (3) : May 20th, 2008

Using the MacBook Pro Remote Control under Windows

This past week I’ve been conducting a number of .NET-related presentations for the DevTeach Toronto conference. Unfortunately, the MacBook remote does not work by default in Windows and I wasn’t looking forward to the prospect of keying my way through my PowerPoint deck.

Fortuitously, I came across this handy little utility called EventGhost. EventGhost hangs out in your system tray, intercepts events from external devices and then allows you to script the response to the event. It comes with a plugin for intercepting events from the MacBook IR receiver which you can then map onto keystrokes.

To get going with Event Ghost, you need to add a plugin for HID: Aple Computer, Inc. IR Receiver. Clicking the buttons on the remote control will then allow you to see the names for the various events. Next create a macro for each event type and then choose the Emulate Keystrokes action to produce the right response. The screenshot below shows the settings that I use.

Event Ghost Configuration for MacBook IR remote control

Tags: , ,
Filed under mac : Comments (0) : May 16th, 2008

Disabling Caps Lock under OSX

I hate the Caps Lock key. I really don’t understand why it continues to be a prominent fixture on computer keyboards. I mean - who uses it anyway? It just gets in the way when you mean to hit the Shift or Tab keys and then you have to delete the text that’s now shouting back at you.

For many years, I’ve used a little Freeware Windows utility called BoldFinger. It sits in your system tray and intercepts any Caps Lock keystrokes. If you hover over the BoldFinger icon it tells you how many times it’s “saved” you from the Caps Lock key.

Now that I’ve switched to a Mac, I was happy to discover the OSX has built a way to disable the Caps Lock key directly into the OS. Just go to System Preferences -> Keyboard & Mouse and then click the Modifier Keys button on the Keyboard tab. Set the Caps Lock key dropdown to No Action and you won’t be bothered by that pesky key ever again.

capslock.png

Tags: , ,
Filed under mac : Comments (0) : May 16th, 2008

China Quake

I have been reading with horror the unfolding news of the major earthquake that struck China’s Sichuan province earlier this week. Having just returned from 6 months living in China — in Xi’an, more precisely, which is not too far from epicenter of the quake — the news of the aftermath hits much closer to home. Living and growing up in Vancouver, the threat of a major earthquake is never that far away, and the idea of something like this striking Vancouver is unimaginable.

Reading the public reaction, at least here Canada, to the devastation has been challenging. The quake happened right at a time when criticism of China’s human rights policies and policy towards Tibet in the lead up to the Olympics was at its peak. Underlying this criticism there is also an unstated fear of China’s growing economic dominance as North American economies head further into recession. Watching people struggle to switch from China bashing to sympathy for those affected by the earthquake is to get a sense of how complex and tangled these issues are. At least in China, unlike in Burma, people are supported by a strong military and a central government that is acting in the interests of its people. On the other hand, this self-sufficiency makes me feel powerless to do anything to help.

Tags: ,
Filed under life : Comments (0) : May 15th, 2008

Scaling Continuous Integration paper

I wrote Garmisch-Partenkirchen. While it is a bit dated, most of the advice in it is still relevant.

I’m in Toronto this week speaking at DevTeach. One of the sessions that I will be doing is on Recommended Practices for Continuous Integration and I’ll be referring this paper.

Tags: ,
Filed under .net, agile, technology : Comments (1) : May 13th, 2008

Ani and a xylophone

Last Monday night, we went and saw Ani DiFranco at the UBC Chan Centre. I’ve seen Ani in concert 5 times, and this time was definitely not a disappointment. She played a lot of material from her forthcoming album and it was truly excellent. I think that it’s pretty rare to see an artist in concert and like their new material just as much as their old songs — especially for a musician as prolific as Ani DiFranco.

Her new band consists of an upright base, drums, acoustic guitar and a xylophone. I wasn’t sure how the xylophone would work, but it sounded great and it was a nice enhancement to the sound of her older material.

Tags:
Filed under life : Comments (0) : Apr 28th, 2008

Earth Hour

At 8pm Saturday March 29th, people around the world turned out the lights in support of Earth Hour. Earth Hour is a campaign organized by the WWF to raise awareness of the connection between energy use and global climate change. The event encourages people to take action by turning off their lights and power to any non-essential devices for the 60 minutes between 8pm and 9pm.

This year’s Earth Hour was a very busy event for me and my new company Small Energy Group. In partnership with the University of British Columbia, Vancouver City Hall, and the Village of Hartley Bay, we monitored the energy use over the day for each site to quantify and make visible the energy savings impact of their actions. UBC had committed to powering down non-essential services over the entire day; City Hall shut off the floodlights lighting the art deco facade for the building; and in Hartley Bay, they turned off the diesel generator that supplies power to the whole community plunging the village into darkness.

You can see the results of the savings achieved by each site by checking out the web site: http://earthhour.smallenergygroup.com/.

Tags: , ,
Filed under environment, life, technology : Comments (0) : Apr 10th, 2008

Agile Vancouver Tech Talk #2 - TDD vs BDD

Last Monday night, Skye and I hosted the second Agile Vancouver tech talk. This month’s topic was test-driven development (TDD) vs. behaviour-driven development (BDD). The goal of the session was to give participants some hands-on experience with TDD and a bit of exposure to BDD. Participants were encouraged to bring laptops to the session if they had them or pair/partner up with others if they didn’t.

About 50 participants showed up for the session. Most people worked in Java using JUnit (with one pair using TestNG), another handful used C# (using NUnit) and one group worked in Perl and Python. I wrote my tests using JBehave and showed my solution on the projector to give beginners a bit of a jump start.

For the problem, I built some scenarios from my weekend’s trip to the grocery store. Participants were encouraged to write a solution for calculating the total of a shopping receipt from a list of items. I presented the following 10 scenarios:

  1. 1 x EnviroKidz Waffles - $3.79
  2. 2 x Unsalted Rice Cakes - $2.99
  3. 1.16kg Broccoli @ 2.82/kg
  4. 1 x Happy Planet Strawberry Banana Juice - $3.50 + $0.20 Deposit +
    $0.03 Enviro fee
    • 1. 1 x EnviroKidz Waffles - $3.79
    • 2 x Unsalted Rice Cakes - $2.99
    • 1.16kg Broccoli @ 2.82/kg
  5. Same as 5. but with a $0.05 No plastic bag discount
  6. 2 x Amy’s Organic Soup - $2.99 / $2.79 for Club members (Club #000104991)
  7. Calculate frequent shopper points for previous order, where new points = floor(total * 3)
  8. Calculate new total of frequent shopper points for the previous scenario. Customer Club #000104991 currently has 933 points.
  9. Non-groceries have 5% GST applied. Calculate the total for:
    • 1 x EnviroKidz Waffles - $3.79
    • 1 x Economist - $7.50

We spent an hour working on coding up the scenarios, where most participants made it up to scenario #5. This was followed by 30 minutes of discussion where participants presented their code. The most interesting solution IMO was produced by the Perl group who wrote a simple Regex parser for the items and started implementing a wiki-style DSL for specifying test scenarios.

On the whole, I think that the session went quite well, and most participants enjoyed having the opportunity to sit down and directly try out TDD. I think that we will try to do more hands-on sessions for subsequent tech-talk gatherings, potentially building on what we worked on in this session.

If you attended Monday night’s session and would like to post your solution to the scenarios, please feel free to leave a comment on this post linking to your code. I intend to post my solution for these scenarios at some point soon.

Tags: , , , ,
Filed under agile : Comments (0) : Mar 14th, 2008