Category Archives: programming

My favorite Raymond Chen quote

This is my favorite Raymond Chen quote, and I’m putting it here so I can find it faster in the future:

Good advice comes with a rationale so you can tell when it becomes bad advice. If you don’t understanding why something should be done, then you’ve fallen into the trap of cargo cult programming, and you’ll keep doing it even when it’s no longer necessary or even becomes deleterious.


Aero.Wizard and Aero.Controls code pack released

I’m pleased to announce the first stage of my roadmap to fully open Default Programs Editor with the release of Aero.Wizard and Aero.Controls.

What are Aero.Wizard and Aero.Controls?

Aero.Wizard is an WinForms implementation of an Aero Wizard Dialog. Aero.Controls is a package of a half dozen WinForms controls, intended for use with an Aero Wizard Dialog. These are some of the components I wrote for the creation of Default Programs Editor 2.0 with the revised user interface, and I’m now freely releasing them to the public.


Aero Wizard Info Screenshot

Aero.Wizard Info Screenshot

Aero.Wizard Features:

  • History/Navigation handled automatically
  • Page contents are children of separate container controls, which can be created in design time like a regular Windows form
  • Glass title area degrades gracefully when running a theme without glass, or on XP
  • Blank Wizard Page template included
  • Use with Aero.Controls pack to make Windows UX Guidelines compatible user interfaces


Aero.Controls Info Screenshot

Aero.Controls Info Screenshot

Aero.Controls Includes:

Both of these projects strive to adhere to the Windows User Experience Guidelines, freely available documentation from Microsoft which provided the basis for the DPE 2.0 restructuring.


I debated for some time on this issue, trying to figure out a permissive license where I could retain some amount of ownership without being overbearing. I settled on BSD, which in my opinion is very permissive and seems to be low-friction for other developers to use this code in their projects.


Both projects are hosted on Bitbucket (Mercurial) and you can either clone the repositories, or download the latest revision as a zip file. I encourage anyone to contribute bug fixes or report issues on each project’s public issue ticketing system.

Aero.Wizard on Bitbucket

Aero.Controls on Bitbucket

What’s next?

With the release of this code pack, my plan for fully releasing Default Programs Editor is underway. It is now possible to fully replicate the UI with this release. The next step is for me to continue refining and documenting the base file association library the project is built on, then release that as well as the UI logic for the program itself. Be looking for that in the next few months.

I have fallen in love…

…with source control!

This music artist loves source control so much she sang songs about it

This music artist loves source control so much she sang songs about it

Previously in my programming experience, I “branched” the code by making a copy of the directory. And my loss paranoia nearing the 2.0 release of Default Programs Editor was so great that I zipped up the Solution folder every day and uploaded it to Dropbox (referral link = symmetric space bonus!). Needless to say, this is pretty ridiculous. I had tried to set up svn on my webhost, but since it’s a shared account, that wasn’t going to be possible for a public repository. After awhile, I gave up on it. But then came BitBucket. I first discovered BitBucket when I contributed a bit of code to SkyBot, and I’ve totally fallen in love. A free account gets you 150MB of public repositories and 1 private repository… there’s no reason not to sign up!

Mercurial Logo

Mercurial Logo

So now I’m in the process of moving my projects into source control. Everything new I’m writing gets a repository straight away. So far this has only been a couple of quick utilities (background and Desktop Peak Tweak), but my current in-progress project is SimpleSnap, a better screenshot program (it’s my private repo). Once that reaches an acceptable place, I’ll make that public as well. I’m looking forward to publicly moving everything I’ve release to BitBucket, including Default Programs Editor, the file association library I created along with it, and the Aero styled WinForms controls I wrote to build the new interface. However before that happens, I’m going to have to spend some time documenting my public methods with a little more than code comments to better facilitate a knowledge transfer from me to whoever wants to look at or use my code in the future. But it’s coming, I promise!

Follow me on BitBucket!