# Thursday, December 02, 2004

There seems to be a lot of blog chatter about corporate blogging at the moment; specifically how beneficial it can be. Well Microsoft has managed to make it work but I think they are in a rather unique position. Of the hundreds of Microsoft bloggers, most are blogging about new products and features. This allows them to generate interest and effectively market the new software. Their blogs are very popular and a request for feedback usually gets a number of useful suggestions.

All very good for the customer but blogs are open to the public. Anyone can read them and make use of their content. The use to customers is enormous but competitors can also read and utilise the information. Somasegar is making noises about exposing more Microsoft internals from specifications to daily builds. This must be good news for the competition or is it?

How come Microsoft can do this without giving away all their corporate secrets? I guess the answer is scale. How many developers/tester/program managers are working on a typical product - thousands by all account. Most companies can't muster a fraction of that resource so, even if they did have all the specifications of up and coming products, there is no way they could develop a better product in the same amount of time.

Think about the flip side of this discussion. My company is tiny - I can count the developers on one hand yet we produce enterprise scale applications. What if I were to blog about new features I was working on? How quickly could a larger competitor steal my ideas?

I never understood how bundling a browser with the operating system could be considered anti-competitive because as a customer I like that Windows has lots of additional features bundled and as a developer I can rely on it's presence for my own work. For the first time though I can see how a large company can on one hand be helping its customers and at the same time using that strategy to gain an advantage over it's competitors.

I don't necessarily agree that big company blogging is anti-competitive and I don't agree that small companies can't blog so in a future post I'll talk about finding the right things to blog about.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Thursday, December 02, 2004 9:47:53 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Saturday, November 27, 2004
Here’s a quick guide to code reviews from the Mozilla project. It’s aimed at C++ but most of the principals are language independent.
by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Saturday, November 27, 2004 6:48:32 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Friday, November 26, 2004

Christmas is only four weeks away so as usual I've been asked what I want. I hate this question. Mainly because I never have an answer. I'm very lucky in that I don't usually want for anything as I'm able to just go and buy it. I realise that not everyone is fortunate enough to be in this position. Also if I want a Ferrari I can't afford one but you get the idea.

The best kind of gifts are those that you wouldn't think of buying yourself. By that I mean the kind of gift that never occurred to you. For example, my father is as much a Manchester United supporter as I am and a couple of years ago he was given an old (circa 1930's) replica United football. Genius.

Unfortunately, the reverse is not quite the same. I nearly always ask my family what they want. Is this because I don't want to disappoint? Or maybe I don't know them well enough to come up with something as I've described above. I guess I have a bit of a reputation within my family for buying strange gifts when left to my own devices. The meditation kit I bought my mother a few years back was probably the pinnacle of weird presents but I like to give people the opportunity to try something new.

I guess there is always the usual options that are a good bet for me - DVD's, CD's and books. You can never buy "all you want" with those. For some reason I never receive books though. It's strange as my house if full of them so it's pretty obvious I like to read.

Help me out here, leave a comment with suggestions on how to answer the question above.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Friday, November 26, 2004 10:14:56 PM (GMT Standard Time, UTC+00:00)  #    Comments [2] Trackback
# Sunday, November 21, 2004

I see Hotmail has upgraded my account to 250MB… Gee-thanks… But I’m afraid it’s too late, I already use G-mail as my main internet account. Hotmail is now a just a passport sign-in and junk mail repository. For me to switch back, Hotmail will have to become a lot better than G-mail. Here’s some hints:

  • Hotmail is too slow
  • It’s got too many graphics
  • The search sucks
  • No POP support
  • No permanent tray notification for e-mails (you have to click on the Messenger guy)
  • G-mail has auto-complete in the to: cc: lists
  • It’s file attachment is faster
  • The spell checking is easier to use (although no custom dictionary yet)
  • Labels are a more natural and powerful mechanism than Hotmail folders
  • G-mail filters are excellent
  • I can drive G-mail from the keyboard

Let me know when it’s fixed and I’ll have a look.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Sunday, November 21, 2004 1:28:54 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Thursday, November 18, 2004

Well I've just completed the campaign and I agree with Eric Gunnerson - it's a bit of an anti-climax at the end. You just finish a level (with obligatory level boss) and you get a quick cut scene and the credits. Do let the credits run as there is a bit more video at the end though.

The game is excellent but I'm left wondering if wasn't easier than the previous version. It only took a week this time instead of two or three. Hopefully the live games can prolong the interest.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Thursday, November 18, 2004 11:00:49 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Wednesday, November 17, 2004

I took the next step last night - to try and connect to Xbox Live... Not an easy problem because the router is upstairs (Xbox is downstairs), so I've bought a Wireless-G adapter. The adapter was easy to setup but connecting wasn't - reboot the router, modify the firewall, install a firmware upgrade (and panic when I then lost the internet completely).

I did manage to get connected but I think the delay on my broadband (it's via satellite) is going to cause issues. Whenever I play I get massive lag so as I move along I'll find myself back where I was a couple of seconds previously. I'm at a distinct disadvantage when going one-on-one with another player as I'll be shooting at their position 2 seconds prior.

I get two months of free trial so I'll see how things go. Hopefully everything will work OK because I guess I'll have completed the game in a few days and will need something to continue the interest. Check back in a month or so for progress.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Wednesday, November 17, 2004 9:09:04 PM (GMT Standard Time, UTC+00:00)  #    Comments [2] Trackback
# Sunday, November 14, 2004

At the beginning of October I was starting to get referral spam so I implemented a blacklist to help remove anything that wasn't a true referrer. Well over a month on and I now have 10 times the amount of referral spam. It's not just the same stuff either - they are really clever with their domain names containing none of the keywords I'd previously picked. This means I have to login each day, checks the logs and add a new set of keywords to the list.

So I've coded up yet another change. This time I've inverted the functionality to only show referrers that I have configured. The code turns out to be cleaner and the site is far less maintenance for me so hopefully this should solve my problems for a while.

[Edit: I've sent the code to Omar so this should make it into the 1.7 release]

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Sunday, November 14, 2004 10:31:33 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Saturday, November 13, 2004

Ian Griffiths posted an article on "How To Stop a Thread in .NET", but as Richard Blewett pointed out "...the thread has to be able to check the flag to know it has to bring itself down...".

Richard's solution is better but I prefer another for a number of reasons:

  • The code could be waiting for 2 seconds before the Sleep gets interrupted
  • We can get rid a a few lines of code
  • I think this solution is clearer

What both articles are talking about is a shutdown event. In which case why not use the timeout for a sleep? So modifying Richard's code we have:

static ManualResetEvent
    shutdownEvent = new ManualResetEvent(false);

static void Main(string[] args)
{
    Thread t = new Thread(new ThreadStart(Func));
    t.Start();

    Console.ReadLine();

    // set the event to get the thread to come down cleanly
    shutdownEvent.Set();

    // wait for it to terminate
    t.Join();
}

static void Func()
{
    // open some resource that requires clean up
    using(FileStream fs =
                File.OpenWrite(@"C:\foo.txt"))
    {
        // check the event
        while(!shutdownEvent.WaitOne(10000, true))
        {
            // use the resource
            fs.WriteByte(0);
        }
    }
}

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Saturday, November 13, 2004 2:03:02 PM (GMT Standard Time, UTC+00:00)  #    Comments [2] Trackback

I apologise, this blog has been a little quiet this week. The reason is that I've got a copy of Halo 2. For some reason whenever I start playing I lose about six hours. It's very immersive. I won't spoil anything but I can say I love the details:

  • In a vacuum the sound changes as if your ears have 'popped'
  • The sniper rifle scope (when not zoomed) shows the landscape it's pointing at
  • The "story" adds to the game which is unusual for video games

Oh and I'm glad that you don't need to wait until later levels to access the cool gear like the original - the writers assume you have already played the first one.

That's all, I'm off for another six hours.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Saturday, November 13, 2004 12:00:13 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Sunday, November 07, 2004

The primary reason for writing this article is I've managed to make exactly the same mistake on two separate occasions. A third time would be careless...

For this particular recipe you need:

  • A .NET application that uses COM interop (any should do but I'm using SQLServer DSO)
  • A Visual Studio installer project

First add the output of your COM interop project to the installer project and, as if my magic, the COM DLL that your interop is using will be added to the installer. Next build your solution and install your new application. Then spend a couple of hours trying to work out why nothing works and you get strange error messages like "Could not find msmdso.rll" whenever the COM object is instantiated. This is especially difficult if your application happens to be running as a service and COM DLL displays the message in a message box (hint: listen for the unmistakable "ding" of the message box sound).

What has happened? Well when the COM DLL was automatically detected and added to the installer project it was flagged as "vsdrfCOMSelfReg" which causes the new copy of the DLL to registered at install time zapping the original COM registration. As for the message box, nothing you can do if it's DSO like mine unless you happen to work for Microsoft.

For some reason setting the flag back to "vsdrfDoNotRegister" still causes issues and the best approach is to set the "Exclude" property to true and completely remove the DLL from the installer.

One last tip. If you manage to do this with DSO then you can avoid reinstalling Analysis Server by executing the following:

cd "C:\Program Files\Common Files\Microsoft Shared\DSO"
for %i in (*.dll) do regsvr32 %i
by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Sunday, November 07, 2004 7:44:14 PM (GMT Standard Time, UTC+00:00)  #    Comments [2] Trackback
# Thursday, November 04, 2004

There are quite a number of Exony bloggers and on average a new one starts each week. This is great for the bloggers and great for the company but I've noticed that the first couple of articles usually contain content thats a little too "open". As we don't yet have a corporate blogging policy I would suggest that new bloggers bear the following points in mind:

  • Anything that's on the internet is public and the correct Google search can find what you've written in a second.
  • Don't talk about new features until they are announced publicly. Even Microsoft bloggers are completely silent until a formal announcement has been made - we didn't hear about Visual Studio Team System until the Tech-Ed announcement, nor did we hear about the Express Editions until Tech-Ed Europe.
  • Strategy and road-maps are best left to the marketing team.
  • Once a feature is out in the open (e.g. press release) blogging about it is probably good publicity but be aware that your words can be twisted by unscrupulous people. Write carefully.
  • Prospective customers might use your blog to decide on a purchase. If you write badly with spelling mistakes and poor content then they are likely to assume the whole company is run the same way.
  • Exony is valued on it's IPR. Don't give it away.
  • You are running a community - your readers. Treat them with respect.
  • Full text feeds please. I don't generally read anything that can't be downloaded to my aggregator and read off-line.
  • Linking is good. What better way to show us what you're reading? It brings relevant content together and provides a better picture.
  • If in doubt, I'll be happy to take a look at your draft before you post it.

For additional guidelines, I recommend the Sun Policy on Public Discourse.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Thursday, November 04, 2004 10:42:53 PM (GMT Standard Time, UTC+00:00)  #    Comments [2] Trackback
# Tuesday, November 02, 2004

I've been really busy with work lately which means no time to investigate bloggable things. It's a shame because I'm doing some really interesting work with Excel, Web Services and OLAP. Maybe when it's released I'll be able to find something that doesn't give away Exony IPR.

In the meantime, I was trying to remember a time when I had nothing to do. Not just work wise - I have a permanent backlog of things I want to look into or code up. New API's, new technologies, new techniques, new books are all stacking up. Add that to the Golf Web Application I'm writing and the 200+ feeds I'm subscribed to and I think I have enough to keep me busy for the foreseeable future. I think I have a solution though - apply Scrum techniques. The backlog of things is large but the priority of individual items varies depending on an number of external forces. Sometimes they may no longer be relevant when I get around to doing them. I constantly re-prioritise anyway but having a sprint goal will help give a measure of progress and avoid being overwhelmed by the full list. Four weeks is too long for a personal process so I'll start with a single week at a time and see how things go.

As a separate note, why is Halo 2 being released in the UK two days after the US? We Brits are going to have to listen to the Yanks harping on about it for a full 48 hours - torture!

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Tuesday, November 02, 2004 8:11:47 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback