Mathias Brandewinder on .NET, F#, VSTO and Excel development, and quantitative analysis / machine learning.
30. March 2009 10:06

Among my new year resolutions, I vowed to have a working version of my first application by the end of the first quarter 2009. Fortunately, I have had plenty of consulting work recently, but as a result, finding time for the “Blue Lobster” project has been tricky. In the end, it may have been a blessing in disguise, because it forced me to narrow down the scope to the essential features – and I made it: “Blue Lobster” version 0.1.0 was ready on March 29th. It is a working proof-of-concept; it’s also my first pure WPF project (the M-V-VM workshop came in very handy), and I am very proud of it!

My next target is to release by end-April a beta to a few selected testers, get feedback and fine-tune it before the grand opening. I don’t want to talk too much until the legal stuff is in order, so until then, the project will be known as “Blue Lobster” (and yes, there is a reason for that name other than the incredible coolness of blue lobsters), and the only thing I will say is that if you work with Excel files, have version control issues, use a PC, and would be interested in being a beta tester, you are encouraged to shoot an email to blue-lobster@clear-lines.com.

26. March 2009 12:32

I have been following Eric Lippert‘s blog for a bit, but I had not realized that he had co-authored a book on VSTO with Eric Carter until the second edition came out recently. I needed a good reference book on VSTO, so I went ahead and purchased it. And because the second edition is focused exclusively on Office 2007, but a good part of my VSTO work revolves around Excel 2003, I figured I might as well get the first edition, too.

I received my package from Amazon 2 days ago, and I must say, this is massive. As in, about 2000 pages total. I began skimming though, and so far I really like it. I have been learning VSTO mostly by grabbing pieces of knowledge here and there, and as a result my understanding lacks a bit of cohesion – which is where a book usually helps, by providing a comprehensive and structured approach to a topic. A friend of mine asked me today if I planned to read it all: probably not all in detail, but I’ll try to skim through everything. You don’t know what you don’t know, and glancing at everything quickly can prove surprisingly helpful.

15. March 2009 09:46

I was writing some code yesterday, and need to generate different "names" for objects. Rather than using Guid.NewGuid(), I decided (for no clear reason) to append a random int generated by System.Random, with code looking something like that:

public string CreateRandomName()
{
Random randomizer = new Random();
return randomizer.Next().ToString();
}

All looked great, until I wrote code like this:

[Test]
public void CreateInstancesWithDifferentNames()
{
var firstInstance = new MyClass();
firstInstance.Name = CreateRandomName();
var secondInstance = new MyClass();
secondInstance.Name = CreateRandomName();
Assert.AreNotEqual(firstInstance.Name, secondInstance.Name);
}


I expected each instance to have a different name, but the test fails miserably. Both instances get a random number, but... they get the same random number.

More...

12. March 2009 14:27

One positive aspect of this whole financial crisis debacle is that I keep receiving amazing discounts for hardware, and after resisting for a while (maybe waiting for an even-better offer?) I went for it, and replaced my desktop with a big bad Dell workstation - and this time, dual screen! A long time back, someone remarked to me that we spend a good quarter of our lives in bed, and therefore putting some good dollars into a top-quality bed was a good investment. By the same token, I do spend another good quarter of my days in front of my computer, so there is no point in being cheap there! Next step will probably be an Aeron chair...

9. March 2009 13:39

No concept seems too esoteric or complex for comic strips! (from xkcd.com)

#### Need help with F#?

The premier team for
F# training & consulting.