Microsoft vs. TestDriven.Net

I came across a post (from TheServerSide.net) regarding an issue between TestDriven.Net and Microsoft.

I think this typifies the general difference between 'open source' development platforms and 'closed source'. Microsoft's main concern here appears to be driving people to purchase full versions of Visual Studio by handicapping Visual Studio Express (which is free) as much as possible. You could argue it was 'nice' of them to release it at all as a free option, but who am I to give Microsoft credit. :)

Even if Microsoft is legally correct here (which I think the intent is, but the language is VAGUE), it just seems like a stupid move. Microsoft is successful because they own the platform. The Operating System, Office, Exchange, Etc. It all ties together and is of course optimized to work with all the Microsoft tools.

If you look at Microsoft's revenue breakdown for 2006, you will see that 'Servers and Tools' make up 22%. I believe (but have no specific facts) that the tools portion of this is a minor part.
Microsoft would be better served to just release all the developer tools for FREE and drive people to use their platform. By upsetting and criminalizing their developers because they develop useful tool for the 'free' version is just wrongheaded. Even if they don't release them for free, it doesn't seem to make sense to actively pursue this fringe revenue.

After all, I thought it was all about the developers.

Palm announces Foleo

Palm today announced their long awaited 'mystery device'. It turns out to be a full size keyboard/monitor for your smartphone. My first reaction was a big yawn.

However, it reminded me of a conversation I'd had several years ago about the future of computing. In that conversation, I suggested that the ideal situation would be for everyone to carry around a 'wearable' computer. This block would contain a basic processor and data store. There would then be a universal protocol to allow this data block to be plugged into other devices. A basic 'laptop' device would immediately become your computer. If you needed to do 'heavy lifting' you could plug it into a workstation with big monitors and supplemental processing power, etc.

The Foleo is not a realization of that dream, but it is much more interesting if you view it as a first step down that path. Your smartphone becomes your primary local data store, and your gateway to 'the cloud', which stores the rest of your data, etc.

However, at this point I have to say I don't find it compelling. For road warriors without laptops (are there any?) it may be a cheaper alternative to the main functionality they need, but I'd rather use my smarthphone as a modem and actually work on my laptop.

Moving from CVS to Subversion at SourceForge

I host several open source projects at SourceForge. For the most part, the service is effective and it is a great service. They have certainly had periods where they've been overwhelmed but for a free service I've been fine with it. I'm excusing the fact that their site design hasn't really changed in 5+ years and it isn't the most usable site.

I do seem to recall that I used to be able to 'press a button' and have my CVS repostory converted to SVN. That was great and I did it for several of my projects. However it now seems that that option is gone and I need to download the entire CVS repository and run the conversion script myself.

Not fun. Anyone have any turn-key options, or am I missing anything at SourceForge?

(Edited 5/30 - Updated Title, thanks Rich)

ReadyNAS Dynamic DNS Hack

I found a pretty interesting hack to get your ReadyNAS to serve as a dynamic DNS client.

I have not tried it out as it looks like you can only schedule it to run up to every 4 hours, and I'm not ready to commit to a 4 hour outage if my IP changes at the wrong time. But, if that were the last service I needed before I shut down one of my servers I'd jump on it.

In theory the next version (4.0) of the ReadyNAS software will open up SSH/Admin access, which would allow you to do just about anything. I'll hold out hope for that for now.

Shared iTunes LIbrary

I've finally found a way to setup iTunes to share write access to a single library.

I maintain a single integrated iTunes library for my family. However, everyone wants to maintain and edit their own playlists. iTunes' built in sharing allows you to play from a single library, but does nothing to allow you to edit that single library remotely.

I recently moved my entire library to my NAS and, inspired by a recent lifehacker post, I setup all the iTunes applications installed in my house to use the shared music and iTunes Library (.itl) share.

My steps were pretty simple:

1. Map network share on all computers to M:\
2. Move entire MP3 library to M:\Music
3. Copy iTunes files from My Music to M:\Music
4. Hold down the shift key while iTunes loads
5. Select the .itl file I copied to M:\Music
6. I had to go toe Edit/Preferences/Advanced and change the iTunes Music File Location from M:\Music\iTunes Music to just M:\Music.

Now I can control my iTunes Library from any machine as a 'first class citizen'. LifeHacker seems to be a pretty cool site that I guess I need to add to my RSS reader.

ReadyNAS NV+

My current storage configuration consists of a big hard drive in my main windows desktop and a couple hard drives in my Linux server as backup hard drives. I use rsync to make sure everything important lives on at least two hard drives. Fairly time consuming to step but pretty effective.

Unfortunately I just ran out of space on my desktop and I'm running out on the server. So instead of buying more or bigger hard drives (the Linux server is already full so I'd need a new controller card anyway) I decided to suck it up and get a Network Attached Storage (NAS) device. I ended up choosing the ReadyNAS NV+. I also bought 3 500 GB Hard Drives to start, which delivers ~ 1 TB of space using X-RAID (basically expandable Raid 5).

The initial setup and boot up was easy. There are removable trays for the hard drives so you just put in 4 screws for each hard drive and you are done. No wires or anything to connect. I then just plugged it in to my network and power (with UPS of course) and it 'just works'.

It has a nice web based interface to perform all the managment tasks and it is fairly easy to use. So far I've setup a few shares and copied files over using CIFS (Samba), Rsync, and FTP.

Unfortunately I ran into a problem with it crashing when I did my initial copies. A little debugging and some posts in their forums revealed that it was my old school NetGear RT-314 that was the problem. Since its firmware hadn't been upgraded since 2001, and I bought it several years before that I wasn't too upset. A quick $30 switch (NetGear FS108) fixed the problem and I've copied over 200+ GB already with a lot more to go.

This device also runs several servers (iTunes, SlimServer, UPnP AV, and Media Server) that I'll dig into later but so far I'm pretty happy.

My goal is to turn off my Linux server. The only real service I use on it that I can't repalce at this point is the DNS server and SSH shell. However, the next update for the ReadyNAS NV+ firmware should enable SSH access and hopefully I'll be able to add DNS as well.

Does anyone know of a Gateway/Router that provides local DNS service?

iTunes Export 1.3.1 Release

I released a new version of my iTunes Export utility.

iTunes Export exports your iTunes playlists as M3U or WPL files, allowing you to setup playlists in iTunes and use them with other software or devices.

This release is just a bug fix for the 1.3.0 release. Unfortunately I didn't sufficiently test the release and due to differences in how the development and production builds are performed the GUI version crashed on startup.

This versions is just a fix for the 1.3.0 GUI version. No other new changes have been made.

http://www.ericdaugherty.com/dev/itunesexport/

I have received several new feature requests and bug reports recently and I plan on getting to them soon. Don't be afraid to ask for new features (eric@ericdaugherty.com).

Google Analytics Update

Google recently updated their Google Analytics product to a new beta version. They've slowly been releasing to individual accounts and I just got my invite today.

I must say I'm very impressed with the new version. It pulls up the information I'm really interested in (page views, visits, traffic sources, etc) into a nice dashboard view for the last 30 days by default. You can then easily drill down into each one.

You can also add new items to the dashboard for full reconfigurability, but so far I'm pretty happy with the defaults.

In the old version I had to dig through the left menu to find the specific reports I cared about, and it always took much longer than I wanted it to, and therefore I use it less.

The bad news is that this site doesn't appear to be building to MySpace levels, so I doubt I'll be getting a call from Rupert any time soon.

Outlook 2007 and Google Calendar Sync

While I still haven't made the move to a Treo 755p yet, I did finally change my current Treo to sync with my work Outlook instead of Palm Desktop. For a long time I've been keeping two calendars manually to keep my work and personal calendars separate (but synchronized). My personal calendar (Palm Desktop) would sync with my Treo so I had to copy all my work appointments into that to stay updated. This is of course a horrible approach.

So, I made the move to use Outlook as my primary calendar. It syncs with my Palm and is always current for my work events. The only problem now is keeping in sync with my Google Calendar that I use for personal appointments and to share with my family.

So my new process is:
Use Outlook for work.
Use Google for personal.
Synchronize the two so that each has BOTH work and personal appointments.
Synchronize Outlook with the Treo so it has ALL my appointments.

Since Outlook and Google don't support this type of sync out of the box I had to find a tool to help. So far gSyncit seems to be working fine. It is only $9.99 but has a free (nag) trial that you can use.

I've used it for a day or so and I'm still pretty happy. At first it was fairly painful, but after cleaning up the initial duplicates and issues, it seems to be sycning fine without errors. By default it syncs every 15 minutes which I found to be way too aggressive. I think I have it set to every two hours now. I've found that it seems to hang up and get pretty slow on occasion but since it executes in the background (or at least doesn't steal focus) it isn't too big of deal.

Guice Burned By GoDaddy

I've been working on a little app to display optimized train schedule information online in Java. I'm writing it more to play with new libraries, etc. than because I really want the functionality, but that's irrelevant to the story...

As I mentioned in my previous post 'Juiced about Guice', I wanted to play with Guice and see how it worked 'in the real world'. So, I used it to help configure my application.

I deployed it on GoDaddy and hoped it would 'just work'. Unfortunately it was not to be. After a long debugging cycle (see footnote), I finally tracked it down to this error:

java.security.AccessControlException: access denied (java.lang.RuntimePermission accessDeclaredMembers)
java.security.AccessControlCont
ext.checkPermission(AccessControlContext.java:264)
java.security.AccessController
.checkPermission(AccessController.java:427)
java.lang.SecurityManager
.checkPermission(SecurityManager.java:532)
java.lang.SecurityManager
.checkMemberAccess(SecurityManager.java:1662)
java.lang.Class.checkMemberAcce
ss(Class.java:2125)
java.lang.Class.getDeclaredMeth
ods(Class.java:1762)
sun.reflect.annotation.Annotati
onType.(AnnotationType.java:81)
sun.reflect.annotation.Annotati
onType.getInstance(AnnotationType.java:64)
sun.reflect.annotation.Annotati
onParser.parseAnnotation(AnnotationParser.java:202)
sun.reflect.annotation.Annotati
onParser.parseAnnotations2(AnnotationParser.java:69)
sun.reflect.annotation.Annotati
onParser.parseAnnotations(AnnotationParser.java:52)
java.lang.Class.initAnnotations
IfNecessary(Class.java:3031)
java.lang.Class.getAnnotation(Class.java:2989)
java.lang.Class.isAnnotationPre
sent(Class.java:3001)
com.google.inject.Scopes
.isScopeAnnotation(Scopes.java:106)
com.google.inject.BinderImpl
.bindScope(BinderImpl.java:150)
com.google.inject.BinderImpl.(BinderImpl.java:111)
com.google.inject.Guice
.createInjector(Guice.java:75)
com.google.inject.Guice
.createInjector(Guice.java:53)
com.google.inject.Guice
.createInjector(Guice.java:43)
org.apache.jsp.test_jsp.
_jspService(test_jsp.java:62)

Apparently, GoDaddy doesn't allow reflection. This pretty much disqualifies Guice from working. So, it looks like I'll have to rewrite it without Guice.

I just recently consolidated all my hosting on GoDaddy from my own managed box because I didn't want the hassle. GoDaddy supports Rails and Java, so I figured I was covered for all eventualities.

However, now that my Rails fascination is waning, maybe I should look for a better pure Java hosting environment. Suggestions welcome. :)

Footnote:
GoDaddy only allows you to reload/restart your web application nightly when they do a global restart of Tomcat. So, each debugging cycle takes 24 hours (or more since I don't bother with it every day). You can get SOME stuff done by throwing up new JSP files intra day, but this cycle can be VERY frustrating and is totally unacceptable for any 'real' application needs.

iTunes Export 1.3.0 Release

I released a new version of my iTunes Export utility.

iTunes Export exports your iTunes playlists as M3U or WPL files, allowing you to setup playlists in iTunes and use them with other software or devices.

This release is mainly due to the efforts of Jeff Donnici. He has done great work on the code base and is helping move iTunes Export forward.

The major fix in this release is for internationalization (i18n). Apparently you need to use the m3u8 file extension instead of m3u on non-US versions of Windows for the file to be interpreted correctly. Thanks to all the help from the many users who emailed us about this issue and helped us track it down. It was actually Wikipedia that finally gave us the key clue in its m3u article.

Jeff also added several other fixes (see the change log), and is already hard at work on the next release.

http://www.ericdaugherty.com/dev/itunesexport/

I have received several new feature requests and bug reports recently and I plan on getting to them soon. Don't be afraid to ask for new features (eric@ericdaugherty.com).

Treo 755p

Word that a new Palm based Treo (the 755p)will be released next week made me wonder if it is time to upgrade my old 650.

I've been a Palm user since the Palm Personal, and while I find the new WM OS interesting, it is not yet compelling. I really like the simple navigation of the Palm, and I know its apps really really well by now.

I am interested in the newly announced Palm Linux platform, but I'm not sure I'm willing to wait for something that might be cool.

The iPhone of course is coming out soon, but with no qwerty keyboard I'll have to wait and see if people REALLY like it over time. I'm not saying they won't be great, but I do have my concerns.

So, I think a 755p is in my immediate future, unless someone can convince me otherwise.

Silverlight

So, I'd comment on Silverlight, but...

I downloaded it, ran the setup file, restarted FireFox, and all the Silverlight applications either do nothing or give an error.

I'm curious, but not enough to actually launch IE.