Saturday, 5 January 2008

Herbert.NET

This is just a quick post for anyone who stumbles across this blog and happens to be competing in the Algorithm competition of the Imagine Cup 2008. I've written an interpreter library and visualizer for the Herbert game. It's to a large degree for my own uses, but I've released the source code (and binaries) publicly for anyone who might find them helpful (especially the visualizer). You can also download text files for the levels of matches 1 to 3. Also, please feel free to send me feedback, as I'll be maintaining the project in some way at least until Imagine Cup 2008 ends.

Sunday, 2 December 2007

Fix for error when opening web pages in Firefox on Windows

Many of you may have come across the "Windows cannot find <url or path to file>" error when opening Internet shortcuts/HTML pages using Firefox as your default browser. Windows will open the link/page fine for you, but will always display this annoying notification if you don't have any previous instances of Firefox running. The error is described here and Mozilla is well aware of it, but it still has not been fixed (as of version 2.0.0.11). Unfortunately, if you perform the fix as suggested on the linked page, you will remove the error temporarily but it will return when the next revision of Firefox gets installed. Until we all get an official fix, I've created a little Powershell script that might be handy to remove the error. Just run it once after each update of Firefox and the irritating message should go away. Administrator privileges should *not* be required since it only changes the registry for the current user.

(Warning: I've only tested the script on Vista, but I'm confident it should work equally well on XP.)

Monday, 5 November 2007

Visual Studio Express

I finally can't resist a quick rant about VS Express...

I'm currently in the process of designing a fairly complicated website and as part of this it became necessary that I develop a custom ASP.NET Server Control as a component to be used by a couple pages within the site. Now, I read my way through a few tutorials about this (including some of the MSDN docs), and concluding it was simple enough I created a simple class inheriting from WebControl and specifying the ToolboxData attribute, but soon ran into problems. It seems that another annoying limitation of the Express editions of Visual Studio is that you can't develop a website and an associated library (a control library in this case) side by side, since Visual Web Developer locks the DLL file when running its web server. This of course means you can't build any referenced library while the web server is running. Okay, so this by itself is expected (albeit irritating) behaviour and there's probably little anyone could do about it - but then I thought that I would at least be able to build the referenced library once I'd stopped the web server. To my regret I found that Visual WD maintains the lock on the referenced DLL, forcing me to completely close off the IDE before I can rebuild the helper library (in VB.NET or VC# Express), and then reload the IDE and restart the webserver before I can continue testing! Well I think you see the point by now...

I've always been quite pleased since Microsoft made available their main programming languages to those of us (mainly students) who can't afford the paid editions or aren't inclined to get it over BitTorrent. However, I am surely starting to lament the absence of a .NET IDE that can handle multiple language/project types...

Monday, 22 October 2007

Angel Messenger website launched

This is just a quick post to let you know that the website for Angel Messenger, my .NET graphical client for the Messenger.NET MSN messaging library, has been launched. The website currently does not contain much, but we are hoping to expand and provide online documentation and support forums. Long-term, I am also considereing making a Silverlight/AJAX interface, Angel Web Messenger, which will become part of the website. As part of this, I'm looking for someone to create some graphics for both the website and client, so if anyone is interested, please reply to this blog or via the SourceForge project. The team should be announcing the v0.2.1 and soon after the v0.3.0 releases, so please check the website for any news. In the meanwhile, I would be glad to hear your thoughts and suggestions on the latest release of the client!

Sunday, 14 October 2007

Messenger.NET - version 0.2.0

The second releases of Messenger.NET, a .NET 2.0 library and client for accessing the MSN messaging services, are now available for download. We (the team) have added numerous new features to version 0.2.0, and a lot of important bug fixes. This version, though still in the alpha stages, can probably be considered desktop-usable (though I warn you it has a limited number of features still!). You can check out the release notes/change logs here (for the library) and here (for the client). We're hoping to make the v0.2.1 and v0.2.2 releases very soon, hopefully with the help of your feedback and bug reports.

I'm also now announcing that the client, previously named Messenger.NET (as is the library), will be renamed to Angel Messenger for the v0.3.0/v0.4.0 releases. A website for the client, www.angel-messenger.com, is also in development - we hope to include some basic online (and also local) documentation for the next releases of the client. In the meantime, feel free to use the forums on SourceForge.net.

Saturday, 29 September 2007

WiX

It's been a long time since my last post, and if I've any excuse it's being busy with several of my projects (among other things), about which I hope to make some blog posts soon, but for the moment I have a bit of promoting to do for WiX. If you haven't come across it before, it stands for Windows Installer XML and is a toolset for creating Windows Installer packages (probably best known to you in the context of MSI setups) from XML source. It's an official Microsoft product but it's hosted on SourceForge, so it's open source and has dedicated developer base. In the past I've experimented with Inno Setup before and I know many developers use this tool or other popular ones like Nullsoft to create their setup packages. Despite their advantages of being well supported and simple to use programs to create installers, I've found WiX has a lot to offer. Here's a few of the reasons I've switched over:
  • WiX takes a declarative approach to installing packages on a system, rather than the traditional imperative approach taken by most installer systems on Windows. This basically means that instead of telling the system what to do in a step-by-step fashion, it tells it what state the system should end up in after installation: this includes files, shortcuts, registry entries, and all the other possible tasks you might want your installer to perform. The sorts of problems like unused files and shortcuts remaining on the user's system become virtually non-existent when taking this approach. As soon as you start learning WiX, you'll also soon see why XML is the perfect language for this. Admittedly, it is a slight downside that you have to write your installer source by hand, but a huge advantage is its powerful integrated build support. (I'm just using Powershell scripts to build the installer, but as a friend suggested you could take it the whole way and integrate it with the MSBuild XML files if you're using Visual Studio). Even so, the XML format is surprisingly simple and there are detailed schemas to help write the code accurately. If you still prefer to develop installers by GUI (although I'd probably recommend against it as it may limit you in some ways and hide the true versatility of WiX), there's a few GUI interfaces currently being developed.
  • Developers of the installer can independently write their own WXS source files, and then compile and link them without any moving around of XML code.
  • Great support for localisation/custom languages, as far as I can see - though I must admit I've only read sections about it and not actually tested it out yet.
  • I was amazed to read that the entire installer for MS Office 2007 was created using WiX - there really shouldn't be any reason to doubt its power!
  • If you need more convincing, try reading the tutorial (it assumes you're a complete beginner, and probably explains some of the points here better than me) or even glancing at the manual.

This is just a brief outline of what WiX can do. I strongly recommend you head over to the site, download the toolset (v2.0 is probably best for now, considering it's the most stable and the tutorial is written specifically for it). You can find the tutorial here, but also as a link on the page along with the official documentation. I'm still a total beginner at WiX myself - reading the tutorial, experimenting with a few of its more simple features, and looking at some interesting blog posts about it - but I can already undoubtedly say it's a good move away from the typical unreliable setup.exe installers that have plagued Windows users in the past.

Friday, 24 August 2007

Messenger.NET - first releases!

Please head over here to download the first releases (v0.1.0 alpha) of both my client and library of Messenger.NET.

The library provides access to most of the standard features of the MSN messenger services in a simple interface. The client supports sign in (with multiple accounts through multiple instances of the program), manipulation of the contact list, and basic IM conversations. For full information on the features of the client and library, please view the release notes. I'm looking to improve both hugely in the near future, so look forward to more releases very soon! Also, I'm welcoming anyone with a good knowledge of network or GUI programming in VB.NET on to the team, so please reply to this post if you're interested.