Handy VMware info

Speaking of VMware, while researching some VMX file settings, I came across a very handy page on manually creating VM images. It even includes VMX file templates and pre-made empty VMDK disk image files. Very useful stuff.

CD burning in VMware

Project: Burn a CD in VMware using a Windows guest to a Linux host.
Status: Near total success.

Research on the web led me to believe that it was possible for VMware to let a guest system burn CDs. Perviously, I had attempted this with a Linux guest on a Windows host and met with complete failure. This time, things were different.

On a Linux host, there was really nothing to it. The only configuration required was to set the CD-RW drive's deviceType in the virtual machine's VMX file to "cdrom-raw".

There was one catch, however. It seems that the CD burning wizard built into Windows XP doesn't like working in a VM. When I tried to burn a disc, the wizard was unable to detect any CD in the drive and refused to let me proceed.

The good news is that the other two applications I tested worked without a hitch. I tried burning a data disc with an OEM copy of Nero Express and an audio disc with iTunes. Both worked perfectly. And really, iTunes was the only one I even cared about, so I'd say things worked out pretty well.

More .NET gotchas

I ran into a couple more little "gotchas" in my .NET adventures this afternoon.

First, an ADO.NET gotcha. In my ignorance, while writing a parameterized insert query for a DataAdapter, I assumed that if a certain database field was automatically generated, such as an auto-number primary key, that I didn't need to specify it in the insert query. However, it doesn't work that way. When omitting those fields, on calling the DataAdapter.Update() method, I got a nice error saying I didn't supply enough fields, or something like that (I didn't write it down). Of course, this could be provider-specific (I was using the Jet 4.0 OLEDB provider), but I didn't feel like experimenting with it at the time.

The other gotcha was with the Combobox.AutoCompleteMode property. I had a combobox with AutoCompleteMode set to SuggestAppend with the source set to the drop-down list contents. I couldn't figure out why, for one of the entries, the appended text was cutting off half way through the string. It turns out that this was because the string in question had a slash in it. According to the documentation, "automatic completion appends all characters only up to and including the slash." I'm not sure why, though.

I'm back online

I'm now officially back online! If you tried to access this site during the last three days or so, you may have noticed it was broken and/or unavailable. That's because I got myself new web hosting.

As I mentioned before, I decided to go with the ICDSoft universal hosting plan. It's nice, cheap, and has all the features I need. I'll probably write up a little review of it after I've used it for a while.

I ordered the hosting account Wednesday night and had my login information within half an hour. I sucked down the entire contents of my old hosting account overnight and then changed the DNS on my domain and started uploading to the new host Thursday morning. It turns out that FTP transfers to and from both the old and new hosts were extremely slow. However, I suspect that may have something to do with Time Warner's internet service.

My only problem was a small blog configuration issue. I failed to account for LnBlog's LOCALPATH_TO_URI_MATCH_RE setting. That's the one that changes paths like /home/peter/www/ to URIs like http://somehost/~peter/. The problem was the my new host uses the path /home/yourdomain/www/www/ as the document root, so LnBlog's default setting picked that up as a ~username URL. I noticed that when trying to blog earlier today and getting a 404 on the mangled URL. Easily fixed by adding a line to a configuration file, but I stlil find it annoying that I didn't remember that earlier, what with having written the program myself.

Configuring .NET 2.0 security

I made a rather annoying discovery today: the .NET framework 2.0 redistributable doesn't come with the configuration tool. Versions 1.0 and 1.1 both included the mscorcfg.msc configuration panel that allowed you to do things like change the security settings on assemblies and zones. But not version 2.0. If you want that, you have to install the .NET 2.0 SDK. This makes no sense to me, but that's the way they did it.

Fortunately, this isn't a deal-breaker, because the .NET framework does come with a command-line utility named caspol.exe, which allows you to change the .NET security policies. Unfortunately, the syntax used by caspol isn't exactly obvious. In fact, it's kind of obscure, especially if you just want to do a quick security boost on a perticular zone.

Luckily, a Google search brought up the exact command I needed:
caspol -machine -chggroup LocalIntranet_Zone FullTrust
This one simply elevates the Intranet zone to full trust. That allows my program to do little things like read it's configuration file from the network share directory. It's kind of hard to query the database when you can't read the file with the connection string and SQL statements.

E-mail woes

It seems my web host is doing funny things with the mail server. Last week, when trying to send an e-mail, I got a strange error message - something about an unauthorized server, which I didn't bother to write down. Anyway, a quick Google search revealed that the fix was to switch KMail to using authenticated SMTP.

Tonight, I try to send a message, and what do I get? An error message saying I'm already authenticated. So I turn off authentication and my message goes out. What the heck is going on?

Incidentally, I think I might have decided on a new web host: ICDSoft. Their personal hosting plan is only $6/month and they're currently ranked #4 on Web Hosting Jury. They seem to be a fairly no-nonsense kind of hosting operation, which appeals to me. Their plans don't offer the big numbers and huge feature sets of companies like Lunarpages or DreamHost, but they have a lot more than my current host and they meets my needs.

I actually view the smaller numbers, i.e. 1GB storage and 20GB bandwidth, as a selling point. Most web hosts these days seriously oversell their disk space and bandwidth on the premise that most sites will only use a small fraction of it. However, with the really big numbers, you have to be skeptical of the company's ability to make good on the service. For example, can DreamHost really give any significant proportion of its customers the 200GB of storage ahd 2TB of bandwidth they promise? Their service may be very good, but they're basically claiming they can host Slashdot for $8/month. Sounds too good to be true if you ask me.

Let me just edit my Google ranking...

I guess this should be filed under "too funny to make up." It seems that some crazy person has been threatening one Dean Hunt because his blog is ranked too high on Google. Apparently Dean's site ranks higher for the same of some product that the crazy guy is selling and he wants Dean to do something about that, by God. There's a short and humorous summary at Search Engine Journal.

Now, I think we can all agree that this unnamed merchant doesn't have a clue. The fact that he would even make a bizarre request like this proves beyond a shadow of a doubt that he has no idea how Google works and probably hasn't worked too hard on his site's SEO.

However, I don't think Dean's response was really appropriate. While the merchant's request was certainly misguided and unreasonable, it was apparently made in earnest. As such, I think the obvious contempt in Dean's response was a little much. It certainly didn't do anything to resolve the situation.

This kind of attitude is how "computer geeks" get a reputation for being arrogant. When someone makes an unreasonable request, there's no need to say or imply that they're stupid. Instead, give the person the benefit of the doubt. You don't have to devote hours to patient explanation of the underlying concepts, just politely say that it simply doesn't work that way and there's nothing you can do about it. If the person continues to be unreasonable after that, then just walk away. Insults and alienation are seldom productive (unless you're goal is to piss people off).

Why don't they validate?

You know what I noticed in my hosting company research? Nobody's home page is valid. Of the few dozen I've looked at so far, not a single one has had a home page that goes throught the W3C's HTML validator cleanly.

To me, that's a real turn-off. I know that the vast majority of web sites in existence are, frankly, complete and total garbage from a coding standpoint. I can accept that. I can even accept that many of them have a good reason for being complete and total garbage, like a sickeningly expensive legacy CMS. But for tech companies that exist almost entirely on the web, and many of which offer web design services, this is just disgraceful. To me, it indicates that they just don't take their web design work seriously.

And you know what? It's not the fact that some of them have crappy markup that bothers me. It's not even the fact that most of them have crappy markup. It's that all of them do. Out of all those sites, I would have expected at least a couple of them to have valid markup.

Is this really too much to ask? I mean, it's almost 2007, for crying out loud! Get with the program, people! At the very least, take a little damn pride in your work and put up a site with half-decent code. Remember, just because it looks good doesn't mean it is good.

Looking for new hosting

For the last few weeks, I've been looking into new web hosting. My current host is, frankly, a bit crappy and I'm looking to trade up. The service hasn't been bad, but it hasn't been great either, and they don't really offer much in the way of features. In particular, I'm looking for subdomains and imap e-mail, which they don't offer.

So now I'm in the middle of the daunting task of picking a new host. I'm finding it quite difficult to locate reliable-sounding information on how good any of these companies are. After all, half of them promise you the moon on a stick for $5 a month with 99.9% uptime and the Dalai Lama working the support line, so it's not like you can take their word.

There are lots of hosting review sites, but many of them appear to be full of shills, with short, useless positive "reviews" that inspire no confidence. So far, Web Hosting Jury is one of the more credible looking review sites I've come across. The reviews tend to be a bit longer and there are lots of highly negative reviews (which means they're not shills). They also have dates and IP addresses attached to the posted reviews, which adds a bit of confidence.

Right now, I'm leaning toward the Lunarpages basic hosting plan. It includes basically everything I want and is pertty well rated. I'm going to be doing a little more research, though, as the last three hosts I thought I'd decided on ended up looking not so great on closer inspection.

Data access mess explained

Thanks to the Daily Grind, today I found the (begining of an) answer to a question I've wondered about for some time: why does Microsoft have so damn many data access APIs? The answer is being provided in a series of blog entries by Mike Pizzo of the Microsoft Data Programmability team. I'm adding him to my RSS aggregator.

If you've been a Visual Basic programmer for any length of time, you know all about this. Between DAO, RDO, ADO, ADO.NET, and so forth, it feels like Microsoft is reinventing data access every couple of years. Some of these are real, genuine improvements (I quite like ADO.NET, now that I'm used to it), but a lot of it seems completely superfluous. It's almost like the data access guys ran out of things to do and are trying to justify the fact that they're still getting pay checks.

So far, I like the explainations. I even learned something, like what the purpose of RDO was. The summary so far is:
ODBC = Standard C-style Call Level Interface for RDBMSs.
DAO = Access database scripting.
RDO = Like DAO, but without going through Jet (the Access database engine).
ODBCDirect = A mode in DAO to avoid the overhead of using ODBC through DAO.
So, in other words, RDO and ODBCDirect seem to be a bit redundant. They both appear to be work-arounds for VB not being able to do ODBC in a performant way, i.e. other than through Jet.

I'll be looking forward to the next installment. So how is ADO going to fit into this mix?

New phones and fun

Wednesday was fun. First, it was Sarah's birthday. Second, and on a more technical note, it was time to renew my Verizon Wireless contract, which means new phones.

I went to pick up the new phones and sign the new contract right after work, while I was waiting for Sarah to get home. This time, instead of going to the actual Verizon store, I went to the local Wireless World on Market St., which is an authorized Verizon dealer. I found this to have a number of benefits;

  1. It's closer - Wireless World is across town, whereas the Verizon store is a 10 mile drive.
  2. The Wireless World wasn't too busy, whereas the Verizon store is always mobbed.
  3. Wireless World has a deal with my employer, so I got a 20% discount on accessories.
  4. The guy I worked with actually knew what he was doing, as opposed to the Verizon sales people who are usually clueless.


Suffice it to say that in the future, I'll be going to Wireless World for my Verizon dealings.

I had actually been hoping to renew my contract a little early, in order to avoid the inevitable Christmas shopping season rush at the Verizon store, but it turns out that wasn't allowed. It worked out quite well, though, because I ended up getting a better deal than I was planning to. Instead of the RAZR or SCH-a930 like I was planning on, I ended up getting a pair of LG VX8300s. It turns out that they had comparable features and verizon was doing a "buy one, get one free" deal on them. (Note: that was actually "free after rebate," but it's still a better deal.)

I didn't get to play with the new phones until later that night. After getting home, it was time to do some tiling in the kitchen. After that, it was back to Market St. for a lovely dinner with Sarah at the London Underground. A bit expensive, but very good.

When I got a chance to do a little research, I was peasantly surprised to find I got even more features than I bargained for. The main features I wanted were a (relatively) high-resolution digital camera, Bluetooth support, full-duplex speaker phone, and a microSD card slot. The VX8300 has all these. However, after a little research, I discovered that the VX8300 also has real MP3 support. It's not even hard to enable - it's an option in the service menu. Contrast this to the RAZR V3m, which requires using unsupported firmware.

of course, I won't really know how well it works until later this week, when my new data cable comes in. Then we'll see what this model can really do.