I’ve been very much impressed with the state of the Wine project lately.  It’s gotten to the point where I can assume that a program will work under Wine, rather than assuming that it won’t.

One of the major supporting companies, Codeweavers, has done a great job with packaging up Wine and putting a fair bit of polish into it.  It installs flawlessly (just run their custom installer) and then gives every user their own virtual Windows environment.  It also has support for a system-wide environment, but I haven’t played around with that much. 

We should be seeing them release a 5.0 in early October.  I’ve been keeping a VMware image around for playing with Windows apps every once in a while (about once a month right now), but this might just be the end of that.

I think we’re going to see Wine as major player in the next six months to a year.  Since most applications are written to target Windows ‘98-Windows 2000, Wine becomes a very attractive way of getting them to work.  What I’d like to see someone partner with Codeweavers to create a mixture of a standard Linux distribution with Codeweavers’ Crossover product.  This would allow a company to wholesale replace their Windows desktops with Crossover and keep many of the in-house VB and one-off applications that make it so hard to switch platforms.

As a postscript, the wine-patches list is getting something like 20-30 patches a day!  It’s starting to rival the development activity level of the Linux kernel itself.

Read full post

I’ve been looking briefly at the latest C# 3.0 specification and all I can say is that reading some of those LINQ examples hurt my eyes.

Seriously, who wants to read code that looks like this? What does it do?

public void Linq19() {
    List customers = GetCustomerList();

    var customerOrders =
            (cust, custIndex) =>
            cust.Orders.Select(o => "Customer #" + (custIndex + 1) +
                                    " has an order with OrderID " + o.OrderID) );


I have the same problem with C# 3.0 that I have with Perl. It’s easy to forget what some of the unfamiliar operators do.

I’m disappointed that they aren’t making use of the yield operator and anonymous functions for this stuff instead. I would prefer to read code like this instead (note that this is using a pseudo C# 2.0-syntax):

ICollection result = Collection< String >.Create(
    foreach (c in customers)
      foreach (o in c.orders)
        yield "Customer #" + c.ID + " has an order with OrderID " + o.OrderID; 

A bunch of examples like this are available here.

Read full post

I’m taking the plunge and making Typo my primary blogging engine.

It’s going to take a while to get used to the markup filter method of blogging (vs. the WYSIWYG method I was using before).

Typo gives you three choices for markup:

You also get a live preview of what you are typing (post-markup filter) while you typo. It’s a little unnerving, but helpful when you aren’t familiar with the markup language. It reminds me a bit of hearing an echo of my voice while speaking.

I think I’ll be blogging a lot more with Typo that I was before. It’s more convenient for me to hit a web interface to start a blog post than it was firing up an application that only existed on my home computer.

It’ll take me a little while to redirect all my various pages to this new blog, so bear with me!

Read full post

I think I’ve got my blog converted over to Typo now. It’s going to be a bit of a pain getting my old article archives up and running, but the tough part was just getting the blog ported over.

I’m not going to worry about importing all my old articles into the new blog. I have some mod_rewrite rules set up to ensure that all the articles are redirected from their many old URLs to their new homes.

I have the old news archive available here, but Google is still the best way to find stuff on here.

Read full post

I accidentally posted my last entry while playing around with mo:Blog. It’s very handy to be able to compose a message offline and post it when you please!

The only missing feature is that I can’t seem to set categories per-post. There is an option to set the category per blog, but that’s a big pain to change every time.

I like Typo (and its XML-RPC backend) more and more every day.

Read full post

I took a close look at Edgewall Software’s trac tool today. It’s an integrated bug-tracker, wiki, Subversion repository browser and general project goal management tool, all available in a single web interface. It’s open-source and free for anyone to download.

The tight coupling of all the services seems to be a major win for this tracking tool. All of the components are aware of changes in the other components and can react appropriately. This is apparent in the timeline view that picks out changes from all the modules and puts it into a single project overview.

trac also features an interesting concept for storing its current state – it keeps it in Subversion itself, serialized as XML. This gives you the ability to roll your project back to a previous revision if something goes wrong, as well as giving you direct access to the data itself to modify externally. On top of all this, it’s been designed with a pluggable architecture from the ground up, potentially allowing developers to add custom functionality as necessary.

From what I can tell, they look like they’ve done a lot of work on the new, unreleased version. It’s been a few months since the last release, but this upcoming release should be well worth it.

UPDATE: Fixed the URL.

Read full post

I’ve decided that after nearly a year of very little activity, it’s time to start looking for a new maintainer for nprof.

nprof is pretty much the only open-source .NET profiler on the map. It has support for multi-threaded, multi-appdomained applications and even has basic support for profiling ASP.NET.

I am sad that I have to move on from the project before it hit 1.0, but it’s clear that my limited time isn’t going to change any time soon. With someone that has time to contribute to it at the helm, I’m certain the 1.0 release will be spectacular.

Contact me either via email or on the nprof-developer mailing list if you are interested.

UPDATE: The project has moved to Google Code.

Read full post