Tuesday, February 28, 2006


Microsoft Outlook 2003 error 0x80004005-0x0004b9-0x000501 and 0x80070005

I have had at lot of "strange" errors lately when I try to send mails:
    Exchange user on 16/02/2006 21.19
          This message could not be sent. Try sending the message again later, or contact your network administrator.  Error is [0x80070005-00000000-00000000].

    Exchange user on 16/02/2006 12.28
          This message could not be sent. Try sending the message again later, or contact your network administrator. The client operation failed. Error is [0x80004005-0x0004b9-0x000501].

I work in offline cached mode so Outlook connects to Exchange via HTTPS to synchronize changes. The first mail I sent usually failed but the second mail worked some times. Other times I could try to send the same mail many times in a row without success. Some of the mails even arrived to some of the recipients,  which is just weird as they are on the same Exchange server as I am...

I found the cause of the problem earlier this week while synchronizing my office mail using my Pocket PC.. ActiveSync shows me a web page asking me if I want to change my password as it is about to expire. I changed my password and the errors went away.

Monday, February 27, 2006


CodeKeep Visual Studio 2005 plugin

I love the idea behind the CodeKeep. It lets you to search for, and publish, sniplets of code. I tried it last year but I was not too impressed. The latest version is a different story. CodeKeep (i.e. Dave Donaldson) has paid a lot of attention to community feedback. All my suggestions improvements have been implemented and several other features have been added.

  • It works on Visual Studio 2005

  • Search the source code as well as the title/description

  • View and provide feedback on published code

  • Browse the published code

The Visual Studio 2005 Add-in works with all versions of Visual Studio 2005, including Visual Studio Team Systems, and the search window is a lot simpler than the previous version:

Double click a sniplet to get the details

Other new features in the Visual Studio 2005 version:

  • Dockable tool windows for "My Snippets", "Browse Snippets", and "Search Snippets".

  • Drag & drop for "My Snippets", "Browse Snippets", and "Search Snippets"

Keep up the great work Dave!

Wednesday, February 22, 2006


.NET Community Days 2006

Community Days 2006 is an initiative by several Italian communities; ASPItalia.com, UGIdotNET.org, Visual Basic Tips&Tricks and WinFXItalia.com. The free event takes place in Milano Wednesday April 12th and Thursday April 13th.

There are are two parallel tracks each day.

Agenda Wednesday 12 April  2006
Web track

  • ASP201 - ASP.NET Fundamentals
  • ASP301 - ASP.NET Databinding
  • ASP302 - ASP.NET HttpRuntime
  • ASP401 - ASP.NET Security
  • ASP303 - AJAX and ATLAS Overview

WinForms track

  • WIN201 - Da VB 6.0 a VB 2005
  • WIN301 - WinForms Databinding
  • WIN302 - No Touch Deployment and ClickOnce
  • WIN303 - .NET Compact Framework 2.0
  • WIN304 - Windows Presentation Foundation Overview

Agenda Thursday 13 April 2006
Application Servers track

  • SVR301 - SQL Server 2005 from a developer perspective
  • SVR302 - SQL Server 2005 Reporting Services
  • SVR303 - IIS 7.0 Preview
  • SVR304 - Progettare web services con ASP.NET 2.0, WSE e WCF
  • SVR305 - Visual Studio 2005 Tools for Office

Extreme track

  • EXT301 - Visual Studio 2005 Team System Overview
  • EXT401 - Real world .NET architectures
  • EXT402 - Async Programming
  • EXT403 - Provider Model Overview
  • EXT404 - Code Access Security

I know ASP.NET and SQL pretty well so I plan to follow the WinForms and Extreme tracks. See you there?

Thanks for the tip Marco

Wednesday, February 15, 2006


Learn C# the fun way implementing a 3D video game

Learn to Write C# the Fun Way is a series of eleven free webcasts:

Learn the concepts of 3-D video game production … using Microsoft Visual C# 2005 Express Edition. Learn how to handle backgrounds, objects, and collisions. In addition, these webcasts provide a primer for handling artificial intelligence in your game, along with multiple levels and additional character functionality.

The following sessions are available online

  • Introduction to 3-D Games (Part 1 of 11) (Level 200)

  • The 3-D Engine (Part 2 of 11) (Level 200)

  • The 3-D Engine (Part 3 of 11) (Level 200)

  • Importing Background and Objects (Part 4 of 11) (Level 200)

  • Importing Background and Objects (Part 5 of 11) (Level 200)

  • Understanding and Handling Collisions (Part 6 of 11) (Level 200)

  • Artificial Intelligence (AI) (Part 7 of 11) (Level 200)

  • Multiple Levels and Additional Character Functionality (Part 8 of 11) (Level 200)

  • Game Play (Part 9 of 11) (Level 200)

  • User Interface (UI) (Part 10 of 11) (Level 200)

  • Gaming and Miscellaneous Effects (Part 11 of 11) (Level 200)

Sessions on 2D development are also available

Friday, February 10, 2006


Free 3 day conference on Microsoft SQL Server 2005

Microsoft Italy is organizing a free conference in Milano on Microsoft SQL Server 2005. The three day long conference has been scheduled over three weeks which is great as it a lot simpler to find time

I will attend the first and last day for sure but it is unlikely that will attend the second day.

See you there?

Thursday, February 9, 2006


How to ignore invalid SSL certificates with MSXML

I frequently use VBScript and MSXML for troubleshooting web sites as I can control all the HTTP headers and easily log the returned results without launching a network sniffer. I had a problem earlier with a web site that returned an expired, and therefore, invalid certificate. In Internet Explorer you get a popup dialog where you can tell the browser to ignore the error but MSXML refused to execute my request and returned this error:

msxml4.dll: The date in the certificate is invalid or has expired

The fix is to tell MSXML to ignore errors like this:

Dim oXMLRequest

Set oXMLRequest = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0");

Updated: Added error message

Thursday, February 2, 2006


poShoplist: A simple shoppling list manager for the Pocket PC

I used a shoppling list manager on the Palm Pilot that had a very simple, but effective, GUI. It had one list with three views;

  • All: All items configured in the list
  • Have: display the items I have
  • Need: display all the items I need, i.e. I have to buy

.NET CF does not have a list box with check boxes so this was my first experience writing a “custom control“ for the pocket PC.

You may notice that there is a lot of space between each item in the list. It wastes a bit of screen space but it allows me to check items with the finger tip without having to extract the pen to tick of each time.

Download poShoplist.


Free downloads on egilh

Finding the latest version of a tool in a set of cross linked posts can be difficult so I have put up a dedicated download area for my free tools. At the moment you can find the following:

  • COM+ call time tracker: monitor the com+ call times as you see them in the COM+ Admin console. Example client programs shows how to shut down components with high call times.
  • Pocket Outlook Wrapper: Complete wrapper for the Pocket Outlook Object Model (POOM) in .NET CF. Comes with full source code.
  • poSecrets: password manager for Pocket PC and PC that uses a shared database

I have a lot more tools that I have not blogged about but that I will post in the downloads area when I have time to write a few words about them.

Don't expect fancy GUIs with loads of graphics. I have written the tools for every day use for myself so they are as fast and light weight as possible using a the standard windows/pocket pc GUI.



Pocket Outlook Object Model wrapper for .NET CF

I organize my work (and a fair bit of my life) with the Outlook task list. In Outlook I have a customized view that shows all tasks due today, grouped by priority. This feature does not exist on the Pocket PC so I implemented a simple task manager with embedded VB which I used a lot on my old iPAQ.

 I didn't want to install the VB runtime on my new iPAQ 4150 so I decided to rewrite it in .NET CF. .NET CF 1.* does not support calling COM components so I had to write my own POOM wrapper.

You can download the POOM wrapper with full source code here. I will release the app I built with it one day.