grack.com

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’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 =
        customers.SelectMany(
            (cust, custIndex) =>
            cust.Orders.Select(o => "Customer #" + (custIndex + 1) +
                                    " has an order with OrderID " + o.OrderID) );

    ObjectDumper.Write(customerOrders);
}

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(
  delegate() 
  {
    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’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 went looking for something like this a few months ago but I seemed to miss the USB-over-IP project over at Sourceforge.  This project implements a virtual USB stack on one side that receives USB events from another system.

This would be a great project to combine with a Linksys NSLU2: a USB-over-IP server for less than $100.

Read full post

Just got myself a Treo 650 last week off Ebay.  It’s an aftermarket-unlocked, Cingular-branded phone, about $100 cheaper than purchasing an unlocked GSM phone directly from palmOne.

This device is very cool.  It supports a form of dial-up-over-USB through its virtual serial port.  Under Linux, I just need to point pppd at the /dev/ttyUSB0 device and the device gets itself a nice internet connection:

pppd /dev/ttyUSB1 :192.168.145.200 ms-dns 192.168.145.2 nodetach proxyarp

If you’re running Windows, it looks like Softick’s PPP client does the same thing.

It also includes support for syncing and surfing over Bluetooth. I’ll probably end up purchasing a little Bluetooth USB adapter so I don’t need to fiddle with cables to have it sync.

Read full post