While Driving

For Christmas, Jennifer bought me a subscription to Simply Audio Books which has positively changed my commute. Now, instead of dreading a dreary drive I generally look forward to catching up on my latest edition of whatever I left dangling. I'm alternaing between fact (Getting Things Done, The Universe in a Nutshell) and fiction (Star Wars radio play, etc.). I've gotten positively hooked on Stephen King's 'Dark Tower' series, more on that another day. I only get 2 sets of CD's at a time, so I'm sometimes out of CD's for a little while. To pass the vacant air, I'm burning CD's of podcasts of the professional development variety. My favourite being HanselMinutes. Jennifer told me one night: "I was driving in your car and thinking to myself, 'CBC really sucks tonight', then I realized I was listening to one of Peter's geek CD's'.

Sigh. At least she wasn't listening to the one where Scott stumble into someone's office at Microsoft and during their convesation exclaims "ObjectDataSource? That was you? Yaaaaa I love ObjectDataSource".

And people call me a geek.


My shiny new gmail account.

Jennifer invited me to get a gmail account, with the intention that we would use it to have a shared calendar (I think she got tired of me asking her when I was free). Now that I got one, I'm very impressed. I personally disklike any web interface for editing and composing emails, the restriction of only using the right mouse button bothers me most. What I like best is the fact that I can log into google from anywhere and have all the services I use.

1. Bookmarks. I've been using the google toolbar mainly for searching for awhile now. It's always been a bit of a pain to keep home and work synchronized. Worse, since Jennifer is usually logged in at home, I usually don't want to bother logging out and logging back in as myself just to check email, etc. Now my bookmarks travel with me.

2. Reader. The RSS agregator. I try to follow a bunch of blogs and I've tried various solutions with varying degrees of satisfaction. Now, I seem to have a solution I like. The best feature is the gadget that shows me the unread posts on the personalized homepage. Which brings me to:

3. Personalized Home Page. I really like this. I've added gadgets that show me the recents posts to my RSS feeds, my most recent entries in my (sadly small) list of gmail emails, todays weather, Wikipedia search, and more!

4. Calendar. The reason I got the darn thing. We've got a shared calendar that now means I don't have to call Jennifer up every time I need to know if I'm going out tonight.


What does "Application Customization" mean?

One of the buzzwords that we use a lot at work is "customization". One of the problems is that we have is that we often aren't precise to what we mean. Dave Froslie has made a post that clears things up for me a bit: A Modification Taxonomy for Application Customization

Scrum at Microsoft

Here's a few interesting posts regarding Scrum at Microsoft:

Darrell Norton's Blog [MVP] : Scrum at Microsoft

Dave Froslie - Microsoft Development on the Prairie


Back to C++

After a long hiatus, I'm back programming in C++. It turns out that I didn't miss it. I used to be really into becomming a better C++ programmer, read the newsgroups , the journals, the books by the gurus - Herb, Andrei, Bjarne, etc. and loved it. I've spent the last two and a half years programming in other languges, first Tcl/Tk, then C#. I give the Tcl experience mixed reviews, maybe I'll write more about that in another post, but I loved my C# experience. Going back to C++ was more painful than I expected. Some things you can go back to and they seem easy, some things you go back to and they seem hard. I also found that my programming style in C++ has changed, and probably for the better. So what don't I like about C++ anymore:

1. Syntax. C# seems to have a nice unified syntax. You create an object, you call new for everything. Calling new for value types seemed wierd at first, but now seems natural. The syntax for casts are plain ugly (I know that's partly by design, you should strive not to use them, but sometimes real life gets in the way). I don't like the scope resolution operator (::).

2. Resource Management. I miss garbage collection in C#. More and more I tend to avoid dynamic memory in C++ as much as possible but there's more resources to worry about. I also have to keep looking up the obscure rules like what you cannot do in DLLMain() (which makes cleaning up singletons interesting. It's painful to have to go back writing a constructor, destructor, copy constructor, assingment operator, and usually a Swap function as well.

3. Multiple overlapping libraries. One of my favourite things about .NET is the rich library that comes with it. Nice as the STL is, the main parts I use are the collection classes, the filestreams, and the string class. In my current C++ project I need an XML parser, so I'm using MSXML. This of course introduces COM types. So in my (relatively small) code base, I've got C strings (char*), C++ std::string, BSTR, _bstr_t, and since I'm using NUnit to test my C++ DLL (there's a reason I didn't use cppunit that I won't get into) I'm also dealing with managed strings. Each string has a different interface, and I have to deal with each one. It gets complicated! Also, for my needs I required a round function to convert a float to an integer. .NET has a nice Math.Round method that always "rounds to even". There is no standard round funciton in the C or C++ libraries that I could find. A number of times I found myself writing code that I would prefer to just reuse.

4. GUI programming. Part of the problem is the design of MFC. The bigger problem is that I need more lines of code to make a simple dialog.

5. Exception handling. Making C++ code correct in the face of exceptions usually means using RAII. I had to write a few of my own little classes to release my resources. I do like the try/finally in C#, or even better the using statement. I find that it improves the locality of the code (is that a real quality?). I also like the very dynamic aspect of the laguage, where all exceptions derive from a common base class. In my C++ code, I don't want any exceptions propagating beyound my DLL boundary so I ended up adding a catch(...) clause, which just makes me feel dirty.

That said, for my task I still think C++ was the right choice. I'm providing a DLL that is to be used by applications that do not depend on .NET, and the customers would be rather unhappy about (would not accept) having to suck in a big dependency just to get our functionality. I would still rather program in C#.


The Christmas Party is coming


Last (first?) post was in October. I keep meaning to maintain this better.

I'm looking foreward to our Christmas party coming on Saturday. 30 people are due to show.

I suppose I should figure out some purpose for this site... In the future I hope to scribble down my musings about my carrer as a programmer for the company I work for, Cedera Software. Cedara's a medical imaging company, and I've been fortunate enough to have been a part of a number of resarch type projects, and to have been exposed to a number of cool technologies. More musings on this later, but I've got to be careful what I say. I know things. Things that The Company does not want you to know.