<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>DigitalHobbit&apos;s Legacy Blog</title><description>Recent content on DigitalHobbit&apos;s Legacy Blog</description><link>https://www.digitalhobbit.com/legacy/</link><language>en</language><atom:link href="https://www.digitalhobbit.com/legacy/index.xml" rel="self" type="application/rss+xml"/><item><title>Anyone still reading this?</title><link>https://www.digitalhobbit.com/legacy/2016/05/15/anyone-still-reading-this/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2016/05/15/anyone-still-reading-this/</guid><description>It&apos;s been almost 5 years (!) since my last blog post. Initially, Twitter and Facebook took the place of blogging for me, but I&apos;ve since given up on using Twitter as well. I&apos;m considering posting the occasional article to my blog again. We&apos;ll see... In the mean time, I&apos;ve refreshed the Jekyll theme to something more aesthetically pleasing (I&apos;m now using Type).</description><pubDate>Sun, 15 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been almost 5 years (!) since my last blog post. Initially, Twitter and Facebook took the place of blogging for me, but I&apos;ve since given up on using Twitter as well.&lt;/p&gt;
&lt;p&gt;I&apos;m considering posting the occasional article to my blog again. We&apos;ll see... In the mean time, I&apos;ve refreshed the Jekyll theme to something more aesthetically pleasing (I&apos;m now using &lt;a href=&quot;https://github.com/rohanchandra/type-theme&quot;&gt;Type&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In my defense, I did post a handful of times to my &lt;a href=&quot;http://music.digitalhobbit.com/&quot;&gt;music blog&lt;/a&gt;. I&apos;m also thinking about starting another blog focused on tabletop RPGs. Stay tuned...&lt;/p&gt;
&lt;p&gt;Leave a comment in case you&apos;re still reading my blog! :)&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>My Music Blog</title><link>https://www.digitalhobbit.com/legacy/2011/12/25/my-music-blog/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2011/12/25/my-music-blog/</guid><description>Earlier this year, I started playing with electronic music creation, mostly using Propellerhead Reason. There&apos;s a lot left to learn, and I don&apos;t have any masterpieces to show off yet, but it&apos;s been a fun, creative outlet so far. I recently kicked off a music blog, where I&apos;m planning to document my experience. Check it out and subscribe in case you&apos;re curious.</description><pubDate>Sun, 25 Dec 2011 21:05:52 GMT</pubDate><content:encoded>&lt;p&gt;Earlier this year, I started playing with electronic music creation, mostly using &lt;a href=&quot;http://www.amazon.com/gp/product/B005GSZ39O/ref=as_li_ss_tl?ie=UTF8&amp;#x26;tag=sfgeek-20&amp;#x26;linkCode=as2&amp;#x26;camp=1789&amp;#x26;creative=390957&amp;#x26;creativeASIN=B005GSZ39O&quot;&gt;Propellerhead Reason&lt;/a&gt;. There&apos;s a lot left to learn, and I don&apos;t have any masterpieces to show off yet, but it&apos;s been a fun, creative outlet so far.&lt;/p&gt;
&lt;p&gt;I recently kicked off a &lt;a href=&quot;http://music.digitalhobbit.com/&quot;&gt;music blog&lt;/a&gt;, where I&apos;m planning to document my experience. Check it out and subscribe in case you&apos;re curious.&lt;/p&gt;</content:encoded><category>music</category></item><item><title>My new iMac</title><link>https://www.digitalhobbit.com/legacy/2011/12/18/my-new-imac/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2011/12/18/my-new-imac/</guid><description>I recently bought a new iMac to replace my aging (3.5+ years old) MacBook Pro, and I love it! Since I&apos;ve been getting some questions about it (and I haven&apos;t blogged in a while anyway), I figured I&apos;d take this opportunity to write a quick blog post.</description><pubDate>Sun, 18 Dec 2011 09:59:05 GMT</pubDate><content:encoded>&lt;p&gt;I recently bought a new iMac to replace my aging (3.5+ years old) MacBook Pro, and I love it! Since I&apos;ve been getting some questions about it (and I haven&apos;t blogged in a while anyway), I figured I&apos;d take this opportunity to write a quick blog post.&lt;/p&gt;
&lt;p&gt;It took me a while to figure out what kind of computer to get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I considered getting another &lt;strong&gt;MacBook Pro&lt;/strong&gt;, but I already have one at work, so I didn&apos;t really need another laptop.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Mac Mini&lt;/strong&gt; is potentially interesting, but none of the configurations are perfect for me. The two consumer models only come with dual-core CPUs. The server model does come with a quad-core, but it only supports the basic, onboard Intel HD Graphics 3000 as opposed to a higher performing ATI or Nvidia video card. All Mac Minis also max out at 8GB. Sufficient for now, but does&apos;t leave much headroom for the future.&lt;/li&gt;
&lt;li&gt;I also toyed with the idea of building a &lt;strong&gt;Hackintosh&lt;/strong&gt;. Until recently, I wasn&apos;t aware that this had become feasible, but it sounds like it very much has, and in fact one of my coworkers is very happy with his setup. It&apos;s certainly tempting to build a nice custom machine (something I haven&apos;t done since my Windows / Linux days), and tools like &lt;a href=&quot;http://www.kakewalk.se/&quot;&gt;Kakewalk&lt;/a&gt; seem to make it pretty easy to install OSX on it. For less than $1000, significantly less than a comparable Apple computer, you can get a very powerful machine. But in the end, I was worried about the amount of time I would have to invest every time there is an OSX update, resolving driver incompatibilities and other issues. Time is my most valuable asset, and I&apos;d rather invest more money now and be confident that I won&apos;t have to deal with any hassles.&lt;/li&gt;
&lt;li&gt;Last not least, my 24&quot; Dell monitor was starting to show symptoms of an impending failure, which is what finally swayed me from a MacBook Pro or Mac Mini to a &lt;strong&gt;27&quot; iMac&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is hands-down the best computer I&apos;ve owned yet. Some specs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;3.4GHz Core i7&lt;/strong&gt;: I chose this over the 3.1Ghz i5 as I&apos;m starting to work with some CPU heavy music applications, so the extra horsepower (particularly the i7&apos;s Hyper-Threading) should come in handy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;27&quot; 2560x1440 display&lt;/strong&gt;: This is the largest display I&apos;ve used yet, and it&apos;s gorgeous. The high resolution allows me to comfortably run multiple apps side by side, such as a browser window on one side and a text editor, email app, or even a music app on the other. To be perfectly honest I&apos;m not a big fan of Apple&apos;s glossy displays (on MacBooks I always opt for the matte screen), but since I only use this iMac indoors, this is not as much of an issue. And pictures and videos do look great on the glossy screen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AMD Radeon HD 6970M 1GB&lt;/strong&gt;: I don&apos;t do any hardcore gaming on my Mac and didn&apos;t see the need to upgrade this to the 2GB version (for an extra $100).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;16GB RAM&lt;/strong&gt;: Aftermarket! Apple charges a ridiculous $600 for this upgrade (the default is a measly 4GB). Amazon sells several 2x4GB kits from various brands for below $40, so you can get the same 16GB RAM for about $75. I went with two of these &lt;a href=&quot;http://www.amazon.com/gp/product/B003DZJQQI/ref=as_li_ss_tl?ie=UTF8&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=as2&amp;#x26;camp=1789&amp;#x26;creative=390957&amp;#x26;creativeASIN=B003DZJQQI&quot;&gt;Crucial kits&lt;/a&gt;, which work great. This gives me more than enough RAM to run all the apps I need, including virtual machines and memory-hungry music apps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;256GB SSD + 1TB HDD&lt;/strong&gt;: This $600 upgrade admittedly hurts, but I&apos;m incredibly glad I opted for this. OSX and apps start amazingly quickly, and files open instantly. I&apos;m writing more about my storage setup below.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A few additional notes:&lt;/p&gt;
&lt;p&gt;The iMac has two &lt;strong&gt;Thunderbolt&lt;/strong&gt; ports. While I don&apos;t have any existing Thunderbolt peripherals, this will be interesting in the future. One immediate possibility is to occasionally use the iMac as an external monitor for my MacBook Pro (2011 model with Thunderbolt). Unfortunately you need a pricey $50 &lt;a href=&quot;http://www.amazon.com/gp/product/B0058KHRPS/ref=as_li_ss_tl?ie=UTF8&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=as2&amp;#x26;camp=1789&amp;#x26;creative=390957&amp;#x26;creativeASIN=B0058KHRPS&quot;&gt;Apple Thunderbolt Cable&lt;/a&gt; to hook this up, but it works flawlessly. Simply press Command+F2 on the iMac to put it into Target Display Mode, and repeat the same command to leave it later. Note that this does not work with older Macs with Mini DisplayPort instead of Thunderbolt. The two ports look identical and fit the same cables, but they are quite different.&lt;/p&gt;
&lt;p&gt;The iMac supports a &lt;strong&gt;maximum of 16GB memory&lt;/strong&gt;. Each of the 4 RAM slots supports up to 4GB, and the basic configuration comes with 2x2GB and the other two slots empty. The cheapest non-wasteful memory upgrade is therefore to add 2x4GB, yielding a total of 12GB. But in my opinion, given the current low RAM price of less than $40 for 2xGB, upgrading to 16GB is probably worth it.&lt;/p&gt;
&lt;p&gt;There are many different ways to use a &lt;strong&gt;mixed SSD + HDD configuration&lt;/strong&gt;. I ended up going with &lt;a href=&quot;http://mattgemmell.com/2011/06/21/using-os-x-with-an-ssd-plus-hdd-setup/&quot;&gt;Matt Gemmell&apos;s solution&lt;/a&gt;, which is working out great. Read his blog post for more details, but the basic idea is to keep OSX and your home directory on the fast (but small) SSD, and selectively offload certain folders to the slow(er) (but large) HDD, by moving these and then symlinking them back to the home directory on the SSD. This approach saves precious SSD space by storing movies, music, and other bulky files on the HDD, while still being able to conveniently access everything from the home directory on the SSD.&lt;/p&gt;
&lt;p&gt;Last not least, note that the &lt;strong&gt;hard drive is not user upgradable&lt;/strong&gt;. That generally hasn&apos;t stopped me from upgrading similar devices in the past (such as my TiVo, original Xbox, or 2008 pre-unibody MacBook Pro), but aside from the mechanical challenge, it looks like Apple has introduced some &lt;a href=&quot;http://www.macworld.com/article/159956/2011/05/imacharddriveupgrade.html&quot;&gt;additional issues&lt;/a&gt; with this HDD upgrade. Therefore, you&apos;ll want to make sure that you&apos;re going to be happy for the next couple years with whatever storage configuration you go with. Of course, purely for data storage purposes, it&apos;s easy to hook up additional hard drives via USB or Thunderbolt. But you probably want your boot drive to be internal, so if you think you might want to boot from a fast SSD, you should purchase this as part of your iMac configuration.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Relaunching on Jekyll</title><link>https://www.digitalhobbit.com/legacy/2011/03/18/relaunching-on-jekyll/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2011/03/18/relaunching-on-jekyll/</guid><description>Last weekend, I migrated my blog from Wordpress to Jekyll. Wordpress is a solid blog platform and has served me well for the past 7 years, but at this point I simply don&apos;t need anything that sophisticated. The frequent security exploits have also become a bit of a liability, and in fact my blog was already hacked in the past.</description><pubDate>Fri, 18 Mar 2011 21:16:15 GMT</pubDate><content:encoded>&lt;p&gt;Last weekend, I migrated my blog from Wordpress to &lt;a href=&quot;https://github.com/mojombo/jekyll&quot;&gt;Jekyll&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Wordpress is a solid blog platform and has served me well for the past 7 years, but at this point
I simply don&apos;t need anything that sophisticated. The frequent security exploits have also become a
bit of a liability, and in fact my blog was already hacked in the past. To be fair, the Wordpress
development team tends to react quickly with security updates, but I simply don&apos;t have the diligence
to keep my Wordpress installation up to date all the time. I&apos;ve also never been a fan of the Wordpress
web interface for writing posts, and in fact I have switched to &lt;a href=&quot;http://daringfireball.net/projects/markdown/&quot;&gt;Markdown&lt;/a&gt;
and &lt;a href=&quot;http://www.red-sweater.com/marsedit/&quot;&gt;MarsEdit&lt;/a&gt; several years ago.&lt;/p&gt;
&lt;p&gt;Jekyll simply takes this another step further (or backwards, depending on how you want to look at it),
by eschewing server-side functionality altogether. Instead, content lives in simple markdown text
files and is rendered into static HTML files that can then be served up by a regular webserver
like Apache or Nginx, or even hosted on Amazon S3. It&apos;s fairly basic, but allows me to serve posts,
feeds, and other pages. Comments are elegantly handled by using third party services such as
&lt;a href=&quot;http://disqus.com&quot;&gt;Disqus&lt;/a&gt; (as in my case) or the &lt;a href=&quot;http://developers.facebook.com/docs/reference/plugins/comments/&quot;&gt;Facebook Comments plugin&lt;/a&gt;.
Jekyll is extensible via its plugin architecture. Last not least, it is written in Ruby, which
gives me the option to fork it and completely adapt it to my needs if necessary.&lt;/p&gt;
&lt;p&gt;I&apos;ll leave it at that. There are already plenty of posts out there about using Jekyll in general, or
migrating to Jekyll from Wordpress or other blog platforms.&lt;/p&gt;
&lt;p&gt;With any luck, this change will have the nice side effect of motivating me to post more frequently
on my blog again, which has been dormant for the past year or so.&lt;/p&gt;</content:encoded><category>software</category><category>blogging</category></item><item><title>A Useful UITableView Cell Creation Pattern</title><link>https://www.digitalhobbit.com/legacy/2009/12/19/a-useful-uitableview-cell-creation-pattern/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2009/12/19/a-useful-uitableview-cell-creation-pattern/</guid><description>Like many iPhone apps, the app I&apos;m currently working on uses several table views. Most of these display actual lists of data, and some are used as a convenient layout mechanism for input fields, navigation, and other UI elements (similar to iPhone preference screens).</description><pubDate>Sat, 19 Dec 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Like many iPhone apps, the app I&apos;m currently working on uses several table views. Most of these display actual lists of data, and some are used as a convenient layout mechanism for input fields, navigation, and other UI elements (similar to iPhone preference screens).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;UITableView&lt;/code&gt; and its associated classes like &lt;code&gt;UITableViewCell&lt;/code&gt;, &lt;code&gt;UITableViewDataSource&lt;/code&gt;, and &lt;code&gt;UITableViewDelegate&lt;/code&gt; are very powerful, but they also require a fair amount of boilerplate code split across several methods. The specific matter that I am tackling in this post is the creation of cells, which happens inside the &lt;code&gt;[UITableViewDataSource tableView:cellForRowAtIndexPath:]&lt;/code&gt; method. When dealing with only a single type of cell, it typically looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-objective-c&quot;&gt;- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // See if there&apos;s an existing cell we can reuse
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@&quot;Foobar&quot;];
    if (cell == nil) {
        // No cell to reuse =&gt; create a new one
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@&quot;Foobar&quot;] autorelease];

        // Initialize cell
        cell.selectionStyle = UITableViewCellSelectionStyleBlue;
        cell.textLabel.textColor = [UIColor blueColor];
        // TODO: Any other initialization that applies to all cells of this type.
        //       (Possibly create and add subviews, assign tags, etc.)
    }

    // Customize cell
    cell.textLabel.text = [NSString stringWithFormat:@&quot;Row: %d&quot;, indexPath.row];
    // TODO: Any other customization
    //       (Possibly look up subviews by tag and populate based on indexPath.)

    return cell;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see, there&apos;s a lot of boilerplate code here. This works well enough with one type of cell, but if you&apos;re dealing with multiple types of cells (particularly in a grouped table view), this approach quickly gets out of hand. You end up with a long method with large, ugly switch statements. But if you look at this method closely, you&apos;ll notice that there are only a few cell-specific areas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The cell identifier (&lt;code&gt;MyCell&lt;/code&gt; in my example). This is used to look up and reuse existing cells (e.g. when scrolling through a large table of items) and avoids the costly creation of new cells every time. It&apos;s a standard cell creation pattern for the iPhone and makes a lot of sense, but it also means that the cell specific code is spread across several places.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The initialization code. This is where a cell of a given type is initialized for the first time. If you can get away with the standard cell styles (which cover a few different layouts of labels and images), you usually don&apos;t need to do much here, besides setting your colors, fonts, and perhaps selection style. Otherwise, this is where you want to create and add your subviews, and assign a tag to them so you can populate them later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The customization code. Given a cell with the correct properties and subviews (which may have been reused or created during this call), this is where you populate it with the correct data. This typically involves looking up some sort of data based on the indexPath, and setting it either on the cell itself (using the &lt;code&gt;textLabel&lt;/code&gt;, &lt;code&gt;detailTextLabel&lt;/code&gt;, or &lt;code&gt;imageView&lt;/code&gt; properties) or on its subview. The latter requires looking up the subviews using the tags you&apos;ve assigned earlier.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With this in mind, I decided to factor out all the cell specific code, resulting in a generic method in my base view that can be used to create all the cells of my app. Here&apos;s what that method looks like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-objective-c&quot;&gt;- (UITableViewCell *)createCellForIdentifier:(NSString *)identifier
                                   tableView:(UITableView *)tableView
                                   indexPath:(NSIndexPath *)indexPath
                                       style:(UITableViewCellStyle)style
                                  selectable:(BOOL)selectable {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:style reuseIdentifier:identifier] autorelease];
        cell.selectionStyle = selectable ? UITableViewCellSelectionStyleBlue : UITableViewCellSelectionStyleNone;

        SEL initCellSelector = NSSelectorFromString([NSString stringWithFormat:@&quot;initCellFor%@:indexPath:&quot;, identifier]);
        if ([self respondsToSelector:initCellSelector]) {
            [self performSelector:initCellSelector withObject:cell withObject:indexPath];
        }
    }

    SEL customizeCellSelector = NSSelectorFromString([NSString stringWithFormat:@&quot;customizeCellFor%@:indexPath:&quot;, identifier]);
    if ([self respondsToSelector:customizeCellSelector]) {
        [self performSelector:customizeCellSelector withObject:cell withObject:indexPath];
    }
    return cell;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Structurally, this method is very similar to the previous one. It first tries to reuse an existing cell, creating and initializing a new one if it doesn&apos;t find one. It then customizes the cell. You&apos;ll notice that I&apos;m using some &lt;code&gt;performSelector&lt;/code&gt; calls here, coupled with a naming convention. For example, given an identifier of &lt;code&gt;&quot;Foobar&quot;&lt;/code&gt;, I will look for &lt;code&gt;initCellForFoobar:indexPath&lt;/code&gt; and &lt;code&gt;customizeCellForFoobar:indexPath&lt;/code&gt; to initialize and customize this cell respectively. A simple example might look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-objective-c&quot;&gt;- (void)initCellForFoobar:(UITableViewCell *)cell indexPath:(NSIndexPath *)indexPath {
    cell.textLabel.textAlignment = UITextAlignmentCenter;
    cell.textLabel.textColor = [UIColor blueColor];
    cell.textLabel.font = [UIFont boldSystemFontOfSize:16.0];
}

- (void)customizeCellForFoobar:(UITableViewCell *)cell indexPath:(NSIndexPath *)indexPath {
    cell.textLabel.text = [NSString stringWithFormat:@&quot;Row: %d&quot;, indexPath.row];
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that both methods are optional. In some cases (particularly in table views that are used for preferences or similar types of UI elements), there&apos;s only a single cell of any given type, so I perform the complete initialization in &lt;code&gt;initCellForFoobar&lt;/code&gt; and omit the &lt;code&gt;customizeCellForFoobar&lt;/code&gt; method. In other cases, I may not require any special initialization and only have a &lt;code&gt;customizeCellForFoobar&lt;/code&gt; method.&lt;/p&gt;
&lt;p&gt;Obviously, the example above is trivial, and both methods can get significantly longer when dealing with custom subviews. In that case I am using the same tag based approach I mentioned above: Assign a tag to each subview inside &lt;code&gt;initCellForFoobar&lt;/code&gt;, then look up the subview using the tag in &lt;code&gt;customizeCellForFoobar&lt;/code&gt;. But the important thing is that the code is well factored, and the cell specific code is not mixed with boilerplate code.&lt;/p&gt;
&lt;p&gt;Last not least, an example of the actual &lt;code&gt;UITableViewDataSource&lt;/code&gt; method to create a new cell:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-objective-c&quot;&gt;- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *identifier;
    BOOL selectable = YES;
    UITableViewCellStyle style = UITableViewCellStyleDefault;

    switch (indexPath.section) {
        case 0:
            identifier = @&quot;Foo&quot;;
            break;
        case 1:
            identifier = @&quot;Bar&quot;;
            selectable = NO;
            break;
    }

    return [self createCellForIdentifier:identifier
                               tableView:tableView
                               indexPath:indexPath
                                   style:style
                              selectable:selectable];
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The example above is what I would typically use for a grouped table view, where each section contains a specific type of cell. But obviously this approach supports any type of table view, grouped or non-grouped. You just need to plug in your own logic to determine the type of cell, and leave everything else to the &lt;code&gt;createCellForIdentifier:tableView:indexPath:style:selectable&lt;/code&gt; method we created earlier.&lt;/p&gt;
&lt;p&gt;There are probably other approaches for simplifying working with table views, but this approach has worked very well for me. It really cuts down significantly on the amount of boilerplate code and allows me to focus on the actual application specific code.&lt;/p&gt;
&lt;p&gt;Any questions, suggestions for further improving this, or perhaps alternative solutions that you&apos;ve used? Leave a comment!&lt;/p&gt;</content:encoded><category>development</category><category>mobile</category></item><item><title>Building a Twitter Filter With Sinatra, Redis, and TweetStream</title><link>https://www.digitalhobbit.com/legacy/2009/11/08/building-a-twitter-filter-with-sinatra-redis-and-tweetstream/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2009/11/08/building-a-twitter-filter-with-sinatra-redis-and-tweetstream/</guid><description>It&apos;s been way too long since my last programming focused blog post, so let&apos;s try to rectify this situation: Background A couple months ago, Twitter made available their Streaming API. This provides developers with a very efficient way to tap into the public Twitter stream. All you need to do is open and maintain a single HTTP connection, passing in a few filter parameters.</description><pubDate>Sun, 08 Nov 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been way too long since my last programming focused blog post, so let&apos;s try to rectify this situation:&lt;/p&gt;
&lt;h2&gt;Background&lt;/h2&gt;
&lt;p&gt;A couple months ago, Twitter made available their &lt;a href=&quot;http://apiwiki.twitter.com/Streaming-API-Documentation&quot;&gt;&lt;strong&gt;Streaming API&lt;/strong&gt;&lt;/a&gt;. This provides developers with a very efficient way to tap into the public Twitter stream. All you need to do is open and maintain a single HTTP connection, passing in a few filter parameters. Twitter then keeps streaming matching tweets to you. You have the option of either sampling the entire public stream, or passing in a list of keywords and / or user ids to track. In this post I will focus on the latter, but the basic usage remains the same.&lt;/p&gt;
&lt;p&gt;My interest was piqued when I came across the excellent &lt;a href=&quot;http://github.com/intridea/tweetstream&quot;&gt;&lt;strong&gt;TweetStream library&lt;/strong&gt;&lt;/a&gt;, which makes it trivially easy to write a Ruby client application for the Twitter Streaming API. I decided to take this opportunity to play with some other technologies and write a simple web app that displays a subset of tweets, along the lines of &lt;a href=&quot;http://cursebird.com/&quot;&gt;cursebird&lt;/a&gt; or &lt;a href=&quot;http://twistori.com/&quot;&gt;twistori&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The app I came up with is &lt;a href=&quot;http://twatcher.com&quot;&gt;&lt;strong&gt;Twatcher&lt;/strong&gt;&lt;/a&gt;, so go check it out to get an idea of what I&apos;m talking about. It (admittedly very crudely) identifies funny tweets by looking for tweets that contain the word &quot;lol&quot;. It then renders matching tweets using a simple UI not unlike that of twitter.com itself, and visually highlights the word &quot;lol&quot; in each tweet for emphasis. Perhaps most importantly, the app uses AJAX to periodically (currently every 10 seconds) pull in new tweets.&lt;/p&gt;
&lt;h2&gt;Architecture&lt;/h2&gt;
&lt;p&gt;In the remainder of this post, I will describe the architecture of Twatcher, along with the rationale behind it. I will also share some code snippets that should allow you to follow along and build your own Twitter filter app.&lt;/p&gt;
&lt;p&gt;Given that the connection to the Twitter Streaming API has to happen in its own application (let&apos;s call it our filter app), outside of the actual web app, we need a way for it to pass tweets to the web app. There are a couple of options here. Obviously we could store the tweets in a database like &lt;a href=&quot;http://www.mysql.com/&quot;&gt;MySQL&lt;/a&gt;, and have the web app read them from there. But given the small schema (only tweets; we don&apos;t care about users or any other relational data) and the ephemeral nature of the Twatcher app (at any given time we really only care about the N most recent tweets), this seems like overkill and leads to an unnecessarily write-heavy app. Instead, one of the various in-memory key/value stores seems like a much better fit. I first thought of &lt;a href=&quot;http://www.danga.com/memcached/&quot;&gt;memcached&lt;/a&gt;, but while it would be entirely possible to build this type of app on top of memcached, it&apos;s not ideal. When a new tweet comes in from the Streaming API, we need to append it to our in-memory list of tweets. Memcached is a very low-level data store and only supports string values, so we would have to implement lists by serializing them as YAML, JSON, or binary Ruby objects. Either way would mean that instead of writing just the latest tweet, we would always have to re-write the entire list of tweets. Similarly, on the web app side, we would always have to read the entire list, even though we may only be interested in the 5 most recent tweets (say in our AJAX action). Combined, this would lead to a fair amount of overhead on both the networking as well as Ruby processing side.&lt;/p&gt;
&lt;p&gt;Luckily, there&apos;s another data store that is perfect for this type of app: &lt;a href=&quot;http://code.google.com/p/redis/&quot;&gt;&lt;strong&gt;Redis&lt;/strong&gt;&lt;/a&gt;. On the most basic level it can be thought of as a key/value store like memcached, so it can act pretty much like a drop-in replacement for this. But it also has first class support for basic data structures, such as sets and lists. This means that instead of reading and writing entire lists of tweets, we can append a single tweet at a time, and we can efficiently retrieve the exact number of tweets that we need on the web app side (i.e. 20 for a full page view, and 5 for an AJAX request). Redis is stable, highly performant, and has a solid, extremely easy to use Ruby library. It also supports basic persistence, although we won&apos;t need this for our app.&lt;/p&gt;
&lt;p&gt;With the filter app and data store out of the way, that leaves the actual web app. Our requirements are very humble: We will only have two actions (one for the full page of tweets and one for AJAX updates), and perhaps a few more trivial actions in the future for things like help pages. Since we&apos;re not using a relational database, we don&apos;t need any sort of ORM layer. While we could use Ruby on Rails, this would mean shooting sparrows with cannons. For our purposes the &lt;a href=&quot;http://www.sinatrarb.com/&quot;&gt;&lt;strong&gt;Sinatra&lt;/strong&gt;&lt;/a&gt; micro-framework seems like a much better fit.&lt;/p&gt;
&lt;p&gt;I&apos;m a big fan of &lt;a href=&quot;http://haml-lang.com/&quot;&gt;&lt;strong&gt;HAML&lt;/strong&gt;&lt;/a&gt;, so we&apos;ll use this for our views. Of course there&apos;s nothing HAML specific about our app, so you&apos;re welcome to use ERB or your template language of choice instead.&lt;/p&gt;
&lt;p&gt;We&apos;ll use &lt;a href=&quot;http://jquery.com/&quot;&gt;&lt;strong&gt;jQuery&lt;/strong&gt;&lt;/a&gt; as our Javascript library, mainly for AJAX requests and basic visual effects (so we can smoothly slide new tweets into the existing page). Once more, our needs are simple, and I&apos;m sure any of the popular Javascript frameworks would be more than up to the challenge. But my personal preference is jQuery.&lt;/p&gt;
&lt;p&gt;I won&apos;t go much into the deployment side of things, but twatcher.com relies on the usual suspects: &lt;a href=&quot;http://nginx.net/&quot;&gt;Nginx&lt;/a&gt; (Apache would work fine as well), &lt;a href=&quot;http://www.modrails.com/&quot;&gt;Passenger&lt;/a&gt; (you&apos;re welcome to use Mongrel, Thin, etc.), &lt;a href=&quot;http://www.capify.org/&quot;&gt;Capistrano&lt;/a&gt;, and &lt;a href=&quot;http://god.rubyforge.org/&quot;&gt;God&lt;/a&gt; (to start and monitor Redis and our filter app, though I may end up giving &lt;a href=&quot;http://github.com/arya/bluepill&quot;&gt;Bluepill&lt;/a&gt; a try). All of this runs very smoothly on a 256MB VPS slice on &lt;a href=&quot;http://www.webbynode.com/&quot;&gt;Webbynode&lt;/a&gt; (and I&apos;m sure just as well on Slicehost or Linode). If necessary, we could easily scale up this app by bringing up additional Sinatra slices and adding &lt;a href=&quot;http://haproxy.1wt.eu/&quot;&gt;HAProxy&lt;/a&gt; to the mix (or perhaps even just relying on DNS round robin).&lt;/p&gt;
&lt;h2&gt;Code&lt;/h2&gt;
&lt;p&gt;Now that the architectural overview is done, let&apos;s take a look at some of the code. This isn&apos;t the complete code base that I&apos;m using on the site, but it&apos;s a fully functional subset and hopefully enough to demonstrate the overall approach and get you started. Alternatively, you can grab the code from the &lt;a href=&quot;http://github.com/digitalhobbit/twatcher-lite&quot;&gt;twatcher-lite Github repository&lt;/a&gt;. I will eventually make the complete project (which includes configuration options, RSpec specs, etc.) available on Github as well.&lt;/p&gt;
&lt;p&gt;But first a couple of prerequisites: We need to install a bunch of gems. For a production app, I would typically unpack these into the &lt;code&gt;vendor&lt;/code&gt; directory, but for now let&apos;s just install them system-wide:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;sudo gem install tweetstream yajl-ruby ezmobius-redis json haml rack sinatra shotgun
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You also need to install and start Redis. It&apos;s easy enough, but beyond the scope of this blog post. Simply follow &lt;a href=&quot;http://blog.grayproductions.net/articles/setting_up_the_redis_server&quot;&gt;these instructions&lt;/a&gt; (I highly recommend the entire &lt;a href=&quot;http://blog.grayproductions.net/articles/using_keyvalue_stores_from_ruby&quot;&gt;Redis article series&lt;/a&gt; by the way), but make sure to use the latest Redis release from &lt;a href=&quot;http://code.google.com/p/redis/&quot;&gt;the official website&lt;/a&gt; (currently 1.02) rather than the 1.0 version mentioned in the article.&lt;/p&gt;
&lt;h3&gt;Filter App&lt;/h3&gt;
&lt;h4&gt;twitter_filter.rb:&lt;/h4&gt;
&lt;p&gt;This is the standalone filter app that mainly relies on the TweetStream library to retrieve tweets and then pushes them to Redis. In our final app we would want to use the Daemons library to run this app as a proper daemon, but for now you should be able to simply run it directly from the command line. Note that it relies on two additional files below. Simply place all of these into the same folder.&lt;/p&gt;
&lt;p&gt;Make sure to set USERNAME and PASSWORD to your actual Twitter credentials. A word of caution: Apparently Twitter only allows a single Streaming API connection for standard accounts, and they will disconnect or blacklist you if you attempt to start multiple connections. I&apos;m using a dedicated Twitter account for production, and my regular Twitter account during development. The actual version of this file that I&apos;m using reads the (environment specific) credentials from a YAML file, but I didn&apos;t want to distract from the core functionality for the purpose of this tutorial.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ruby&quot;&gt;require &apos;tweetstream&apos;
require File.join(File.dirname(__FILE__), &apos;tweet_store&apos;)

USERNAME = &quot;my_username&quot;  # Replace with your Twitter user
PASSWORD = &quot;my_password&quot;  # and your Twitter password
STORE = TweetStore.new

TweetStream::Client.new(USERNAME, PASSWORD).track(&apos;lol&apos;) do |status|
  # Ignore replies. Probably not relevant in your own filter app, but we want
  # to filter out funny tweets that stand on their own, not responses.
  if status.text !~ /^@\w+/
    # Yes, we could just store the Status object as-is, since it&apos;s actually just a
    # subclass of Hash. But Twitter results include lots of fields that we don&apos;t
    # care about, so let&apos;s keep it simple and efficient for the web app.
    STORE.push(
      &apos;id&apos; =&gt; status[:id],
      &apos;text&apos; =&gt; status.text,
      &apos;username&apos; =&gt; status.user.screen_name,
      &apos;userid&apos; =&gt; status.user[:id],
      &apos;name&apos; =&gt; status.user.name,
      &apos;profile_image_url&apos; =&gt; status.user.profile_image_url,
      &apos;received_at&apos; =&gt; Time.new.to_i
    )
  end
end
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;tweet_store.rb:&lt;/h4&gt;
&lt;p&gt;This is a thin abstraction layer on top of Redis that encapsulates both pushing and retrieving tweets. This allows us to keep Redis specific persistence code out of the filter and web apps and also comes in handy for testing (which I&apos;m not getting into in this post), as we can easily swap it out for a mock implementation.&lt;/p&gt;
&lt;p&gt;Note how we&apos;re using the &lt;code&gt;push_head&lt;/code&gt; operation to push a single tweet to Redis, and &lt;code&gt;list_range&lt;/code&gt; to retrieve the N most recent tweets.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ruby&quot;&gt;require &apos;json&apos;
require &apos;redis&apos;
require File.join(File.dirname(__FILE__), &apos;tweet&apos;)

class TweetStore
  
  REDIS_KEY = &apos;tweets&apos;
  NUM_TWEETS = 20
  TRIM_THRESHOLD = 100
  
  def initialize
    @db = Redis.new
    @trim_count = 0
  end
  
  # Retrieves the specified number of tweets, but only if they are more recent
  # than the specified timestamp.
  def tweets(limit=15, since=0)
    @db.list_range(REDIS_KEY, 0, limit - 1).collect {|t|
      Tweet.new(JSON.parse(t))
    }.reject {|t| t.received_at &amp;#x3C;= since}  # In 1.8.7, should use drop_while instead
  end
  
  def push(data)
    @db.push_head(REDIS_KEY, data.to_json)
  
    @trim_count += 1
    if (@trim_count &gt; 100)
      # Periodically trim the list so it doesn&apos;t grow too large.
      @db.list_trim(REDIS_KEY, 0, NUM_TWEETS)
      @trim_count = 0
    end
  end
  
end
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;tweet.rb:&lt;/h4&gt;
&lt;p&gt;The Tweet class wraps an individual tweet&apos;s data hash and allows us to access the data using method call syntax (&lt;code&gt;tweet.username&lt;/code&gt;) rather than hash element references (&lt;code&gt;tweet[&apos;username&apos;]&lt;/code&gt;). It also contains some tweet related functionality, such as generating Twitter user links, highlighting the word &quot;lol&quot;, and making URLs clickable.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ruby&quot;&gt;class Tweet
  
  def initialize(data)
    @data = data
  end

  def user_link
    &quot;http://twitter.com/#{username}&quot;
  end

  # Makes links clickable, highlights LOL, etc.
  def filtered_text
    filter_lol(filter_urls(text))
  end

  private
  
  # So we can call tweet.text instead of tweet[&apos;text&apos;]
  def method_missing(name)
    @data[name.to_s]
  end
  
  def filter_lol(text)
    # Note that we&apos;re using a list of characters rather than just \b to avoid
    # replacing LOL inside a URL.
    text.gsub(/^(.*[\s\.\,\;])?(lol)(\b)/i, &apos;\1&amp;#x3C;span class=&quot;lol&quot;&gt;\2&amp;#x3C;/span&gt;\3&apos;)
  end
  
  def filter_urls(text)
    # The regex could probably still be improved, but this seems to do the
    # trick for most cases.
    text.gsub(/(https?:\/\/\w+(\.\w+)+(\/[\w\+\-\,\%]+)*(\?[\w\[\]]+(=\w*)?(&amp;#x26;\w+(=\w*)?)*)?(#\w+)?)/i, &apos;&amp;#x3C;a href=&quot;\1&quot;&gt;\1&amp;#x3C;/a&gt;&apos;)
  end
  
end
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Web App&lt;/h3&gt;
&lt;h4&gt;twatcher.rb:&lt;/h4&gt;
&lt;p&gt;This is the actual Sinatra web app. This is the entire app (minus the views), so perhaps now you can see why we&apos;re using Sinatra instead of a full-blown Rails app. The views follow below.&lt;/p&gt;
&lt;p&gt;Note that our two actions both return tweets. The main difference is that the &lt;code&gt;/latest&lt;/code&gt; action (which is used by AJAX requests) only returns up to 5 tweets, and only if they&apos;re newer than the specified date. It also omits the layout and specifies a special CSS class named &lt;code&gt;latest&lt;/code&gt;. This allows us to initially hide the new tweets and then make them visible using a nice Javascript slide effect.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ruby&quot;&gt;require &apos;sinatra&apos;
require &apos;haml&apos;
require File.join(File.dirname(__FILE__), &apos;tweet_store&apos;)

STORE = TweetStore.new

get &apos;/&apos; do
  @tweets = STORE.tweets
  haml :index
end

get &apos;/latest&apos; do
  # We&apos;re using a Javascript variable to keep track of the time the latest
  # tweet was received, so we can request only newer tweets here. Might want
  # to consider using Last-Modified HTTP header as a slightly cleaner
  # solution (but requires more jQuery code).
  @tweets = STORE.tweets(5, (params[:since] || 0).to_i)
  @tweet_class = &apos;latest&apos;  # So we can hide and animate
  haml :tweets, :layout =&gt; false
end
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;views/layout.haml:&lt;/h4&gt;
&lt;p&gt;A pretty simple layout.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;!!! Strict
%html{:xmlns=&gt; &quot;http://www.w3.org/1999/xhtml&quot;, &apos;xml:lang&apos; =&gt; &quot;en&quot;, :lang =&gt; &quot;en&quot;}
  %head
    %meta{&apos;http-equiv&apos; =&gt; &quot;Content-Type&quot;, &apos;content&apos; =&gt; &quot;text/html; charset=utf-8&quot;}
    %title twatcher
    %link{:rel =&gt; &apos;stylesheet&apos;, :href =&gt; &apos;/stylesheets/style.css&apos;, :type =&gt; &apos;text/css&apos;}
    %script{:type =&gt; &apos;text/javascript&apos;, :src =&gt; &apos;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&apos;}
  %body
    #container
      #content
        = yield
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;views/index.haml:&lt;/h4&gt;
&lt;p&gt;The actual HTML content is pretty minimal: A heading and a list of tweets, which is included from a separate file (below) so we can reuse it for the AJAX action. We&apos;re also inlining some jQuery code to refresh the tweets every 10 seconds. We insert the new tweets at the beginning, but remember that we&apos;re using a CSS class to initially hide them. We then call &lt;code&gt;slideDown&lt;/code&gt; to make them visible using a nice slide effect. We also trim the list of tweets at 50 to prevent the page from getting too long.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;:javascript
  function refreshTweets() {
    $.get(&apos;/latest&apos;, {since: window.latestTweet}, function(data) {
      $(&apos;.tweets&apos;).prepend(data);
      $(&apos;.latest&apos;).slideDown(&apos;slow&apos;);
      $(&apos;.tweets li:gt(50)&apos;).remove();

      setTimeout(refreshTweets, 10000);
    });
  }
  $(function() {
    setTimeout(refreshTweets, 10000);
  });
  
%h1 Recent LOL Tweets
%ul.tweets
  = haml :tweets, :layout =&gt; false
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;views/tweets.haml:&lt;/h4&gt;
&lt;p&gt;Simply renders a list item for each tweet, with some basic CSS for styling purposes. I wouldn&apos;t normally hardcode &lt;code&gt;height&lt;/code&gt; and &lt;code&gt;width&lt;/code&gt; for an &lt;code&gt;img&lt;/code&gt; tag (and instead let CSS handle this), but for the purpose of this tutorial I wanted the page to render decently without a style sheet, and the Twitter profile pictures can be pretty large, making it look weird.&lt;/p&gt;
&lt;p&gt;We also emit some simple Javascript to record the timestamp of the most recent tweet. We pass this into our AJAX request in &lt;code&gt;index.haml&lt;/code&gt; above. An alternative solution (perhaps slightly cleaner from an HTTP perspective) would be to use the Last-Modified HTTP header instead of a Javascript variable, but this would mean messing with date parsing (never fun...) and also result in slightly more complex jQuery code, so I opted for the simpler solution.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;- @tweets.each do |tweet|
  %li.tweet{:class =&gt; @tweet_class}
    %span.avatar
      %a{:href =&gt; tweet.user_link}
        %img{:src =&gt; tweet.profile_image_url, :alt =&gt; tweet.username, :height =&gt; 48, :width =&gt; 48}
    %span.main
      %span.text= tweet.filtered_text
      %span.meta== &amp;#x26;#8212; #{tweet.name} (&amp;#x3C;a href=&quot;#{tweet.user_link}&quot;&gt;@#{tweet.username}&amp;#x3C;/a&gt;)

- if !@tweets.empty?
  :javascript
    window.latestTweet = #{@tweets[0].received_at};
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;public/stylesheets/style.css:&lt;/h4&gt;
&lt;p&gt;The stylesheet is pretty basic, but since this blog post is already way too long, I&apos;m not going to reproduce it here. Simply &lt;a href=&quot;http://twatcher.com/stylesheets/style.css&quot;&gt;grab the live one&lt;/a&gt; instead.&lt;/p&gt;
&lt;h3&gt;Putting it all together&lt;/h3&gt;
&lt;p&gt;You should now have a bunch of Ruby files in the same folder, and three HAML files in a &lt;code&gt;views&lt;/code&gt; subdirectory. Make sure you have started Redis according to the instructions above. Then open two shells:&lt;/p&gt;
&lt;p&gt;In your first shell, start the filter app:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;ruby twitter_filter.rb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The app should start and continue running until you hit CTRL+C.&lt;/p&gt;
&lt;p&gt;In your second shell, start the web app. You could simply start it using:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;ruby twatcher.rb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;However, assuming you&apos;ve installed the Shotgun gem according to the instructions above, I recommend using the following command instead:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;shotgun twatcher.rb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will cause Sinatra to automatically reload modified files during development, similar to the default behavior in Rails.&lt;/p&gt;
&lt;p&gt;If everything started successfully, you should now be able to bring up the site in your browser. If you&apos;ve started the web app by itself, hit &lt;a href=&quot;http://localhost:4567/&quot;&gt;port 4567&lt;/a&gt;. With Shotgun, hit &lt;a href=&quot;http://localhost:9393/&quot;&gt;port 9393&lt;/a&gt; instead.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I hope you can appreciate how little code it took us to implement a complete Twitter filter web application, complete with AJAX updates. I count around 150 lines of code, and this includes plenty of comments and whitespace (granted, including the stylesheet it would be closer to 300 lines).&lt;/p&gt;
&lt;p&gt;I also hope I&apos;ve managed to pique your curiosity about Redis, Sinatra, and the TweetStream library. Many of us (myself included) tend to stick with the tools we&apos;re familiar with, such as Rails and MySQL. But often, surprisingly elegant solutions emerge when using better-suited (and often simpler) tools.&lt;/p&gt;
&lt;p&gt;Personally, I am excited about adding Redis and Sinatra to my standard toolset. I am also curious about what other types of applications might be able to get away with simple, ephemeral solutions like this. Definitely something worth exploring...&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Magic Mouse</title><link>https://www.digitalhobbit.com/legacy/2009/11/07/magic-mouse/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2009/11/07/magic-mouse/</guid><description>magic mouse Yesterday, Amazon finally delivered the Magic Mouse that I had pre-ordered a couple weeks ago. (Since I was in the market for a Bluetooth mouse anyway, this seemed like a perfect excuse to pick one up...) The final verdict is still out, but I figured I&apos;d share my initial impressions. Obviously, the biggest feature the Magic Mouse adds is Multi-Touch, very much like the iPhone or iPod Touch.</description><pubDate>Sat, 07 Nov 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/legacy/img/wp-content/uploads/2009/11/31wszJhG7hL._SL160_.jpg&quot; alt=&quot;magic mouse&quot;&gt;&lt;/p&gt;
&lt;p&gt;Yesterday, Amazon finally delivered the Magic Mouse that I had pre-ordered a couple weeks ago. (Since I was in the market for a Bluetooth mouse anyway, this seemed like a perfect excuse to pick one up...)&lt;/p&gt;
&lt;p&gt;The final verdict is still out, but I figured I&apos;d share my initial impressions. Obviously, the biggest feature the Magic Mouse adds is Multi-Touch, very much like the iPhone or iPod Touch. And I can confirm that this indeed works flawlessly. Flicking the finger up or down to scroll through windows is an amazing improvement over using a mouse wheel, let along a scroll bar. Momentum scrolling works just like on the iPhone, feels very intuitive, and adds a tangible touch to most applications.&lt;/p&gt;
&lt;p&gt;I haven&apos;t gotten used to the two-finger sideways swipe yet, for example to navigate back and forward in the browser. It works well enough, but I&apos;m used to using the keyboard to navigate back and forward or switch tabs, so I don&apos;t typically reach out for the mouse for this task. But if you usually do, it should come in handy.&lt;/p&gt;
&lt;p&gt;I&apos;ve never owned a Bluetooth mouse before and wasn&apos;t 100% sure what to expect, but I have no complaints at all about this. Pairing it with my Macbook was very easy, and it works just as well as a USB mouse, without any annoying cables. This is especially handy for me because I tend to frequently switch the mouse between my left and right hands to suppress RSI symptoms, and not having to deal with a cable definitely makes this easier.&lt;/p&gt;
&lt;p&gt;Now for the things that are not that great:&lt;/p&gt;
&lt;p&gt;Most importantly, the tracking is way too slow, almost to the point of not being usable at all. The acceleration is high enough, so when moving the mouse quickly it is possible to move it from one edge of the screen to the other without having to lift it. But this doesn&apos;t help for finer movements, such as selecting an item from a menu or a toolbar. Many people are &lt;a href=&quot;http://search.twitter.com/search?q=magic+mouse+tracking+slow&quot;&gt;complaining about this issue&lt;/a&gt;, but thankfully &lt;a href=&quot;http://reviews.cnet.com/8301-13727_7-10392736-263.html?part=rss&amp;#x26;tag=feed&amp;#x26;subj=MacFixIt&quot;&gt;this article describes a workaround&lt;/a&gt; in form of a terminal command to change the scaling factor. You can also use the &lt;a href=&quot;http://www.benh57.com//mousezoom.html&quot;&gt;MouseZoom&lt;/a&gt; tool to accomplish the same thing using a convenient preference pane. It&apos;s old but works just fine in Snow Leopard.&lt;/p&gt;
&lt;p&gt;I&apos;m now running on the highest possible scaling setting, which is a major improvement over the standard configuration, though I might end up tuning things down a bit. Overall I&apos;ve never been very happy with the mouse support in OSX. The acceleration curve just feels off to me -- it starts off too slow, then accelerates too quickly. &lt;a href=&quot;http://db.tidbits.com/article/8893&quot;&gt;This article describes this issue in detail&lt;/a&gt;, and I agree with it. It also describes some solutions, such as &lt;a href=&quot;http://www.usboverdrive.com/&quot;&gt;USB Overdrive&lt;/a&gt; and &lt;a href=&quot;http://plentycom.jp/en/steermouse/&quot;&gt;SteerMouse&lt;/a&gt;. I have bought and used SteerMouse in the past, and it worked pretty well for me then. It doesn&apos;t support the Magic Mouse yet, and according to the website they are currently evaluating whether to add this functionality. I&apos;m not sure if any of these options are compatible with the Magic Mouse, which I&apos;m sure requires its own driver to support the Multi-Touch functionality. I&apos;ll have to experiment with this...&lt;/p&gt;
&lt;p&gt;The mouse button (a single button that is sensitive to where it&apos;s being touched and can therefore emulate left and right mouse buttons) works ok, but clicking requires a bit too much effort for my taste (my previous Logitech mouse was significantly more sensitive, requiring barely any pressure). In fact I find operations that require moving the mouse with the button pressed (such as when selecting several paragraphs of text in a document) somewhat difficult.&lt;/p&gt;
&lt;p&gt;Last not least, I miss having a middle mouse button, mainly to open links in new browser tabs or copy &amp;#x26; paste text in the terminal. I suppose I will have to get used to holding down the Command key instead. I wonder if the mouse surface is sensitive enough that it could differentiate between left, middle, and right clicks.&lt;/p&gt;
&lt;p&gt;Moving the mouse over my wooden desk is fairly noisy. Unlike my Logitech mouse, which was quiet and smooth, the Magic Mouse almost feels like it&apos;s scraping the surface. I may end up getting a mouse pad for this reason, but this seems to defeat the purpose of the new and improved laser technology that works on any surface.&lt;/p&gt;
&lt;p&gt;In terms of ergonomics it&apos;s not the best mouse in the world, but it&apos;s not horrible either. It&apos;s still too early to tell how well I adjust to it. We&apos;ll see in a few weeks...&lt;/p&gt;
&lt;p&gt;In conclusion, the Magic Mouse is definitely a fascinating piece of technology, and I am excited about future iterations of this or similar products. I absolutely love the touch based interface of my iPhone, and the Magic Mouse does a good job at bringing some of this to the desktop. But it certainly has its share of flaws. Hopefully a driver update will resolve the slow tracking issue soon, but in the mean time the workaround described above will need to suffice. As for the other issues: If you can, I recommend you try out the mouse in the Apple Store first, to see how it feels for you.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Upgrading an older MacBook Pro to 6GB of RAM</title><link>https://www.digitalhobbit.com/legacy/2009/09/05/upgrading-an-older-macbook-pro-to-6gb-of-ram/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2009/09/05/upgrading-an-older-macbook-pro-to-6gb-of-ram/</guid><description>If you own a MacBook Pro and would like to upgrade to more than 4GB of RAM but think that your model does not support this, you may want to read the rest of this article. I bought a MacBook Pro 17&quot; in April 2008, as my primary development machine.</description><pubDate>Sat, 05 Sep 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you own a MacBook Pro and would like to upgrade to more than 4GB of RAM but think that your model does not support this, you may want to read the rest of this article.&lt;/p&gt;
&lt;p&gt;I bought a MacBook Pro 17&quot; in April 2008, as my primary development machine. I knew that the standard config with 2GB of RAM wouldn&apos;t be enough for my purposes, but I also wasn&apos;t about to spend a ridiculous amount of money on an official memory upgrade from Apple, so I picked up &lt;a href=&quot;http://www.newegg.com/Product/Product.aspx?Item=N82E16820231135&quot;&gt;two cheap G.SKILL 2GB DIMMs from Newegg&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This worked great for me so far, but even with 4GB of RAM, I occasionally ran into memory limits. For example I sometimes work on iPhone and complementary Rails apps at the same time, and having both Xcode (plus Interface Builder and the iPhone Simulator) and a Rails app, IDE, etc. running at the same time definitely uses a fair amount of memory. Especially if I use &lt;a href=&quot;http://www.jetbrains.com/ruby/index.html&quot;&gt;RubyMine&lt;/a&gt; (which is pretty nice, by the way, but a major memory hog). That&apos;s one of the reasons why I often still work with a regular text editor such as TextMate. The situation gets even worse when I need to run a virtual machine, such as for IE browser testing. And of course there are all the other memory hungry apps that tend to be running all the time (Firefox and / or Safari, iTunes, etc.).&lt;/p&gt;
&lt;p&gt;The last time I researched potential memory upgrades, I quickly discovered that my model (apparently) only supports a maximum of 4GB, so I gave up.&lt;/p&gt;
&lt;p&gt;But this time I complained on Twitter, and a &lt;a href=&quot;http://twitter.com/Teucher/status/3716212099&quot;&gt;reply&lt;/a&gt; prompted me to research this issue more closely. Well, it turns out that many MacBook Pro models do indeed unofficially support 6GB of RAM, in form of 4GB + 2GB DIMMs. This &lt;a href=&quot;http://guides.macrumors.com/MacBook_Pro&quot;&gt;MacRumors Guide&lt;/a&gt; has all the info you need. My model appears to be the Rev. E (as identified by the date of purchase, as well as the CPU frequency, video card, and video memory). And sure enough, the Rev. E and F models can handle up to 6GB of RAM.&lt;/p&gt;
&lt;p&gt;Since I was already using G.SKILL memory, I opted for a 4GB G.SKILL DIMM (&lt;a href=&quot;http://www.newegg.com/Product/Product.aspx?Item=N82E16820231202&quot;&gt;currently $129 at NewEgg&lt;/a&gt;). I would not recommend mixing DIMMs from different manufacturers, and in fact I have read some reports of people having trouble getting these configs to work.&lt;/p&gt;
&lt;p&gt;The actual memory upgrade process is quick and easy (at least on the pre-unibody models), and Apple provides a &lt;a href=&quot;http://support.apple.com/kb/HT1270&quot;&gt;convenient guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I should point out that due to the mixed (4GB + 2GB) memory configuration, you lose the &lt;a href=&quot;http://en.wikipedia.org/wiki/Dual-channel_architecture&quot;&gt;Dual Channel capability&lt;/a&gt;. But based on what I read, this only affects certain types of apps and makes little difference in practice. I definitely didn&apos;t notice any lower performance after the upgrade.&lt;/p&gt;
&lt;p&gt;The increased memory means that my system rarely (if ever) has to swap. Now I can run my whole development stack as well as two virtual machines (Windows and Linux) and the machine is still very responsive.&lt;/p&gt;
&lt;p&gt;Now I just have to find some new memory intensive applications to bring my system down to its knees... ;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; This upgrade was the single biggest bang for the buck and has made a tremendous difference on my system. Having 6GB instead of 4GB was exactly the additional RAM I needed to be able to run all my various development tools at the same time. I am now running several Rails apps and have one RubyMine as well as two Xcode projects open without any issues, along with the usual productivity software, iTunes, etc. Definitely highly recommended!&lt;/p&gt;</content:encoded><category>development</category><category>technology</category></item><item><title>iPhone Development is Fun!</title><link>https://www.digitalhobbit.com/legacy/2009/05/10/iphone-development-is-fun/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2009/05/10/iphone-development-is-fun/</guid><description>It&apos;s been a while since I completed my first iPhone development project, and I figured I&apos;d finally write up my initial experience with this platform. A bit late, but better than never...</description><pubDate>Sun, 10 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been a while since I completed my first iPhone development project, and I figured I&apos;d finally write up my initial experience with this platform. A bit late, but better than never...&lt;/p&gt;
&lt;p&gt;To put this into perspective, here&apos;s a brief summary of my previous professional programming background:&lt;/p&gt;
&lt;p&gt;I worked with C++ back in University but quickly adopted Java in 1998 and never looked back (good riddance to pointers and manual memory management!). Java served me well for the better part of the past 10 years, but I&apos;ve increasingly become a fan of dynamic languages, and Ruby in particular (although I&apos;ve dabbled a bit with Python as well). These days I mainly work with Ruby (mostly Ruby on Rails, but also standalone apps such as daemons, command line apps, etc.). Among many other reasons, I just love its expressiveness over Java&apos;s verbosity.&lt;/p&gt;
&lt;p&gt;With this in mind, I was admittedly a bit hesitant at first about iPhone development using Objective-C, even though I was definitely curious about the CocoaTouch platform (and Cocoa in general).&lt;/p&gt;
&lt;h3&gt;Objective-C&lt;/h3&gt;
&lt;p&gt;At first glance, Objective-C syntax looks quite odd. Instead of the dot-notation for method calls that Java and Ruby use (e.g. &lt;code&gt;&quot;foobar&quot;.length&lt;/code&gt;), Objective-C uses a square bracket based message passing syntax (e.g. &lt;code&gt;[@&quot;foobar&quot; length]&lt;/code&gt;). This is harmless enough for simple method calls, but can become confusing when using nested calls (e.g. &lt;code&gt;[[[MyClass alloc] init] autorelease]&lt;/code&gt;). Apparently, Apple decided this was the case as well, so when they introduced their simplified support for properties in Objective-C 2.0, they chose to go with dot-notation. This definitely cuts down on some of the clutter (especially when setting properties), but it also leads to a slightly awkward, inhomogeneous mix of notations in the code, as dot-notation cannot be used for regular method calls (and in fact some long-time Objective-C developers are boycotting the new properties syntax for that very reason). But in the end, this is a relatively minor stylistic difference, and I eventually got used to it.&lt;/p&gt;
&lt;p&gt;The other Objective-C oddity is the Smalltalk-inspired way that parameters are passed to methods. Most current programming languages pass parameters as comma-separated lists. Objective-C essentially breaks method names up into multiple segments, each of which has its own parameter. This means that you end up with method signatures like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-objective-c&quot;&gt;- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Invoking this method would look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-objective-c&quot;&gt;[myView insertSubview:mySubview atIndex:3];
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It felt weird at first, but once I got my head wrapped around this syntax, I actually kind of started to like it, as it makes method calls read like regular English sentences. I have however found that it can be difficult to come up with natural sounding method and parameter names for my own classes, so my preference would be a C-based method call syntax with named params like Python has. But in the end, I got used to this syntax fairly quickly.&lt;/p&gt;
&lt;p&gt;Probably the thing that bothers me most about Objective-C / Cocoa is the overall verbosity, especially compared to a very succinct language like Ruby. This is partially because variables need to be declared, partially because Cocoa&apos;s method names tend to be long, and of course because as a C-derived language, Objective-C simply isn&apos;t as expressive as a language like Ruby, with its blocks, enumerations, literal syntax for creating arrays and hashes, etc.&lt;/p&gt;
&lt;p&gt;Then there&apos;s the usual duplication also found in C/C++ with its header and implementation files. For example, in Ruby I can define a property simply by using &lt;code&gt;attr_accessor :foo&lt;/code&gt;. In Objectice-C, I need to explicitly declare the actual member variable as well as the property in the header file, and add a synthesize statement to the implementation file. And this is already the &lt;em&gt;shorthand&lt;/em&gt; syntax for properties...&lt;/p&gt;
&lt;p&gt;Perhaps the thing I was most worried about: Memory Management. Objective-C 2.0 actually introduced garbage collection, but unfortunately this isn&apos;t supported on the iPhone. Luckily, as it turns out, Objective-C&apos;s retain count based memory management combined with autorelease pools is actually quite elegant and a major improvement over C/C++. I won&apos;t go into details here (there are many &lt;a href=&quot;http://www.mobileorchard.com/iphone-memory-management/&quot;&gt;resources&lt;/a&gt; on this topic), but the bottom line is that as long as you adhere to the accepted conventions (particularly regarding which methods return autoreleased vs. non-autoreleased objects), you should be fine. With Instruments, Apple also provides a powerful tool to help track down actual memory leaks. Would I prefer garbage collection? Absolutely! But the situation isn&apos;t as bad as I had feared.&lt;/p&gt;
&lt;p&gt;Objective-C also provides many nice features, such as Protocols and Categories. Protocols are very similar to Java Interfaces and are heavily used for delegation (see below). Categories allow functionality to be added to existing classes. For example, you could use this mechanism to allow NSDictionary, NSArray, or other NSObject subclasses to generate a JSON representation. They remind me of a less powerful (but still convenient) version of Ruby Mixins (less powerful because Mixins allow modules to be mixed into arbitrary classes, whereas Categories are implemented for a specific class).&lt;/p&gt;
&lt;h3&gt;CocoaTouch&lt;/h3&gt;
&lt;p&gt;This is really the best part of iPhone development. Having mostly worked on server side code, I&apos;ve never been much of a GUI developer. But with a few positive exceptions (such as Qt), most of the GUI frameworks I have messed with were quite painful (MFC anyone?), with horrendous amounts of unmaintainable, auto-generated code.&lt;/p&gt;
&lt;p&gt;CocoaTouch (like its big brother Cocoa on the Mac) is very well thought out and makes good use of design patterns. In particular, it heavily relies on delegation rather than inheritance, which leads to significantly cleaner and more modular code. For example, instead of subclassing a UI control in order to add the desired custom behavior, you typically implement the behavior in your controller class and specify this as the delegate for the UI control.&lt;/p&gt;
&lt;p&gt;Aside from a few lines of boilerplate code that are part of the project templates, there is absolutely no auto-generated code. This is mostly possible because Interface Builder stores actual, serialized object instances inside xib files and all custom behavior is injected using the delegate mechanism.&lt;/p&gt;
&lt;p&gt;CocoaTouch also provides very simple, high-level APIs for many powerful features, such as the iPhone&apos;s camera / image picker.&lt;/p&gt;
&lt;p&gt;The only thing that bugs me a lot is the disconnect between the Objective-C based high-level Cocoa API and the C-based lower-level APIs. Often times, the high-level APIs are limited to a few common cases, but when you need to stray from these, you need to talk straight to the underlying low-level APIs. This leads to an awkward mix of nice, object-oriented Objective-C code and ugly, procedural C code.&lt;/p&gt;
&lt;h3&gt;Development Tools&lt;/h3&gt;
&lt;p&gt;The various development tools are an integral part of the iPhone SDK. In particular, Xcode is a very decent IDE. It may not be the best IDE I&apos;ve ever used, but it gets the job done and even sports some modern IDE features (such as refactoring). I wish it had Git support, though.&lt;/p&gt;
&lt;p&gt;Interface Builder is an extremely convenient tool, so I try to use it whenever it makes sense. However, I do have a few complaints: Many properties are not exposed in IB, so they have to be set manually in the code. More importantly, IB is not extensible at all. For example, I would like to be able to implement my own subclass of UIView and have its relevant properties show up in IB. If my UIView subclass defines a text property (perhaps with some sort of annotation that specifies additional, Interface Builder specific metadata), I would like to see a text field in IB. If I define a color property, I would like to see a color picker, etc. Hopefully this will be possible in a future version.&lt;/p&gt;
&lt;p&gt;Instruments is a powerful tool for finding memory leaks and performance bottlenecks. I have only used this a little bit, but it&apos;s good to know that it&apos;s there when I need it.&lt;/p&gt;
&lt;p&gt;My major complaint in this area is about the horribly complicated and error prone provisioning process. But I&apos;ll save this rant for another blog post.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Overall, iPhone development is a lot of fun, and a very refreshing change from web development. The iPhone is an amazingly powerful device, and after the initial learning curve, it is surprisingly easy to leverage many of its unique abilities, such as the accelerometer, multi-touch, Internet connection, and more.&lt;/p&gt;
&lt;p&gt;I would love to be able to use CocoaTouch in conjunction with Ruby (such as &lt;a href=&quot;http://rubycocoa.sourceforge.net/&quot;&gt;RubyCocoa&lt;/a&gt; or &lt;a href=&quot;http://www.macruby.org/&quot;&gt;MacRuby&lt;/a&gt;. But given that this is not an option on the iPhone, Objective-C is a decent alternative.&lt;/p&gt;
&lt;p&gt;Now that I got this post out of the way, I plan on posting more about specific iPhone development topics. Stay tuned!&lt;/p&gt;</content:encoded><category>development</category><category>mobile</category></item><item><title>Workling and Amazon SQS</title><link>https://www.digitalhobbit.com/legacy/2009/04/04/workling-and-amazon-sqs/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2009/04/04/workling-and-amazon-sqs/</guid><description>If you need to perform any time consuming work in your Rails actions, you&apos;ll probably want to offload this into a background job. There are many different frameworks to help with this, and the one we use is Workling. The nice thing about Workling is that it provides an abstraction layer that allows you to decouple your actual background job implementation from the background execution strategy.</description><pubDate>Sat, 04 Apr 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you need to perform any time consuming work in your Rails actions, you&apos;ll probably want to offload this into a background job. There are many different frameworks to help with this, and the one we use is &lt;a href=&quot;http://github.com/purzelrakete/workling/tree/master&quot;&gt;Workling&lt;/a&gt;. The nice thing about Workling is that it provides an abstraction layer that allows you to decouple your actual background job implementation from the background execution strategy. For example, in our development environment we are using the Spawn runner (which simply forks the Rails process for each background job), but we need a proper, queue based runner in production. Up until recently we were using the Starling runner, which worked pretty well for a small set of machines.&lt;/p&gt;
&lt;p&gt;However, after migrating our infrastructure to Amazon EC2 and rapidly scaling up the number of app servers, we figured it would be great to take advantage of &lt;a href=&quot;http://aws.amazon.com/sqs/&quot;&gt;Amazon SQS&lt;/a&gt; (Simple Queue Service), rather than maintaining our own queue servers. Fortunately, Workling&apos;s plugin architecture makes it very easy to implement your own clients, so writing an SQS Workling client turned out to be fairly straightforward.&lt;/p&gt;
&lt;p&gt;If you are interested in using this in your own project, simply use &lt;a href=&quot;http://github.com/digitalhobbit/workling/tree/master&quot;&gt;my Workling fork on Github&lt;/a&gt;. I haven&apos;t decided yet whether to extract this into a separate plugin that you could install alongside Workling, so let me know if you have a strong preference. I&apos;ll also get in touch with the Workling developers to see if they might be interested in pulling this feature into the main code base. But for now, you can simply install it by following the regular Workling plugin installation instructions, except using my Workling fork:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;script/plugin install git://github.com/digitalhobbit/workling.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;a href=&quot;http://github.com/digitalhobbit/workling/tree/master&quot;&gt;README&lt;/a&gt; includes detailed instructions on configuring the client, but it&apos;s actually very easy:&lt;/p&gt;
&lt;p&gt;Install the RightAws gem:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;sudo gem install right_aws
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Configure Workling to use the SqsClient. Add this to your environment:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Workling::Remote.dispatcher = Workling::Remote::Runners::ClientRunner.new
Workling::Remote.dispatcher.client = Workling::Clients::SqsClient.new
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add your AWS key id and secret key to &lt;code&gt;workling.yml&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;production:
  sqs_options:
    aws_access_key_id: &amp;#x3C;your AWS access key id&gt;
    aws_secret_access_key: &amp;#x3C;your AWS secret access key&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can optionally override the following settings, although the defaults
will likely be sufficient:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;    # Queue names consist of an optional prefix, followed by the environment
    # and the name of the key.
    prefix: foo_

    # The number of SQS messages to retrieve at once. The maximum and default
    # value is 10.
    messages_per_req: 10

    # The SQS visibility timeout for retrieved messages. Defaults to 30 seconds.
    visibility_timeout: 30

    # The number of seconds to reserve for deleting a message from the qeueue.
    # If buffered messages are getting too close to the visibility timeout,
    # we drop them so they will get picked up the next time a worker retrieves
    # messages, in order to avoid duplicate processing.
    visibility_reserve: 10

    # Below are various retry and timeout settings for the underlying right_aws
    # and right_http_connection libraries. You may want to tweak these based on
    # your workling usage. I recommend fairly low values, as large values can
    # cause your Rails actions to hang in case of SQS issues.

    # Maximum number of seconds to retry high level SQS errors. right_aws
    # automatically retries using exponential back-off.
    aws_reiteration_time: 2

    # Low-level HTTP retry / timeout settings.
    http_retry_count: 2
    http_retry_delay: 1
    http_open_timeout: 2
    http_read_timeout: 10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now start the Workling Client:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;script/workling_client start
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&apos;s it!&lt;/p&gt;
&lt;p&gt;There are still some caveats, such as the fact that messages are currently deleted from the queue at the beginning of processing rather than at the end (unfortunately Workling currently doesn&apos;t provide the necessary hooks). This is good enough for us (we&apos;re not relying on our background jobs for anything highly critical), but you probably don&apos;t want to build your financial transaction processing on top of this... If there&apos;s demand for this, I may try to extend Workling at some point to fix this issue.&lt;/p&gt;
&lt;p&gt;Please leave a comment if you find this useful or have any other feedback. Also let me know if you encounter any bugs, or better yet, update my test case to reproduce the issue or send me a Github pull request with your fix. :)&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Rails, Facebooker, and memcached Session Store</title><link>https://www.digitalhobbit.com/legacy/2009/02/28/rails-facebooker-and-memcached-session-store/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2009/02/28/rails-facebooker-and-memcached-session-store/</guid><description>We&apos;re using Facebooker for our Rails based Facebook apps. However, we ran into a problem after migrating our session store to the MemCacheStore.</description><pubDate>Sat, 28 Feb 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We&apos;re using &lt;a href=&quot;http://github.com/mmangino/facebooker/tree/master&quot;&gt;Facebooker&lt;/a&gt; for our Rails based Facebook apps. However, we ran into a problem after migrating our session store to the MemCacheStore. Every request was producing the following stacktrace:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;/!\ FAILSAFE /!\  Sat Feb 28 10:24:09 -0800 2009
  Status: 500 Internal Server Error
  session_id &apos;2.wYavYw2U9jBTnFOcX9rjMw__.86400.1235934000-1023424742&apos; is invalid
    /Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_controller/session/mem_cache_store.rb:54:in `initialize&apos;
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/cgi/session.rb:273:in `new&apos;
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/cgi/session.rb:273:in `initialize_without_cgi_reader&apos;
    /Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_controller/cgi_ext/session.rb:19:in `initialize_aliased_by_facebooker&apos;
    /Users/mirko/Work/questionx/vendor/plugins/facebooker/lib/facebooker/rails/facebook_session_handling.rb:35:in `initialize&apos;
    /Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_controller/cgi_process.rb:94:in `new&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It turns out that Facebook session ids include dots and underscores, which the MemCacheStore chokes on. Luckily I came across &lt;a href=&quot;http://rubyforge.org/pipermail/facebooker-talk/2008-November/001304.html&quot;&gt;this forum post&lt;/a&gt;. The solution below is based on the approach outlined in the post, with a few modifications to more cleanly hook the patch into the method chain rather than replacing the original functionality completely. Simply drop the code below into an initializer (e.g. &lt;code&gt;config/initializers/facebooker_memcache_session_patch.rb&lt;/code&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ruby&quot;&gt;class CGI
  class Session
     class MemCacheStore
       def check_id_with_strip_fb_chars(id)
         check_id_without_strip_fb_chars(id.gsub(/[-\._]/, &apos;&apos;))
       end
       alias_method_chain :check_id, :strip_fb_chars
     end
  end
end
&lt;/code&gt;&lt;/pre&gt;</content:encoded><category>development</category></item><item><title>Merb and Rails are merging!</title><link>https://www.digitalhobbit.com/legacy/2008/12/23/merb-and-rails-are-merging/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/12/23/merb-and-rails-are-merging/</guid><description>No, it&apos;s not April 1st, and as far as I know, hell hasn&apos;t frozen over either. The Merb and Rails teams have in fact announced that they will be joining forces. The end result will eventually be released as Rails 3.</description><pubDate>Tue, 23 Dec 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;No, it&apos;s not April 1st, and as far as I know, hell hasn&apos;t frozen over either. The Merb and Rails teams have in fact announced that they will be joining forces. The end result will eventually be released as Rails 3.&lt;/p&gt;
&lt;p&gt;Rather than repeating all the details here, below are links to the original announcements by various team members:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3/comments/24193&quot;&gt;DHH (Ruby on Rails Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://rubyonrails.org/merb&quot;&gt;The day Merb joined Rails (Ruby on Rails Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://yehudakatz.com/2008/12/23/rails-and-merb-merge/&quot;&gt;Yehuda Katz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://brainspl.at/articles/2008/12/23/merb-is-rails&quot;&gt;Ezra Zygmuntowicz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://merbist.com/2008/12/23/rails-and-merb-merge/&quot;&gt;Matt Aimonetti&lt;/a&gt; (also includes a short FAQ Video)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://splendificent.com/2008/12/the-merb-rails-merger-announcement-an-inside-opinion/&quot;&gt;Carl Lerche&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is unclear how much of the actual Merb code will make it into Rails 3, but the important thing is that Rails will embrace many of Merb&apos;s core principles, such as a lightweight core, performance, modularity (i.e. you&apos;ll be able to easily swap ActiveRecord out for DataMapper or some other ORM framework), and a well-defined and stable public API that plugins can be based on.&lt;/p&gt;
&lt;p&gt;I&apos;ve been a big fan of Rails for many years, and it is certainly relatively mature and has a large developer community. At the same time, I&apos;ve been drawn to Merb and related technologies (such as DataMapper) lately, and I strongly agree with their core principles.&lt;/p&gt;
&lt;p&gt;Integrating these two frameworks will be no small feat, so the new combined team definitely has their work cut out for them. But as different as the two frameworks are, they also have a lot in common. By agreeing on this new direction, the team will be able to focus on the important tasks without having to deal with redundant functionality. I am looking forward to the new direction and am excited about trying out the first Rails 3 alpha whenever it is released.&lt;/p&gt;
&lt;p&gt;Over the past few months, there&apos;s been a fair amount of bickering between the Rails and Merb teams, and I&apos;m all the more impressed with both teams for reaching this decision and deciding to work together. I am convinced that the Ruby Community will be a lot better for it.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Hacking the D-Link DNS-321 NAS</title><link>https://www.digitalhobbit.com/legacy/2008/11/26/hacking-the-d-link-dns-321-nas/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/11/26/hacking-the-d-link-dns-321-nas/</guid><description>For some reason I derive immense gratification from hacking cheap commodity consumer devices and making them do much more than they were originally designed to. Not that I can&apos;t claim all that much credit (as I generally just apply readily available hacks that others have figured out), but still...</description><pubDate>Wed, 26 Nov 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For some reason I derive immense gratification from hacking cheap commodity consumer devices and making them do much more than they were originally designed to. Not that I can&apos;t claim all that much credit (as I generally just apply readily available hacks that others have figured out), but still...&lt;/p&gt;
&lt;p&gt;Some of my favorite past hacks include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Original Xbox:  I haven&apos;t played games on it for years, but with &lt;a href=&quot;http://xbmc.org/&quot;&gt;XBMC&lt;/a&gt; on it, it remains a formidable media center.&lt;/li&gt;
&lt;li&gt;Buffalo WHR-G54S: Essentially a cheap Linksys router clone, but by replacing the stock firmware it can support features typically present on much more expensive routers (such as sophisticated firewall or QoS functionality). I was running the powerful &lt;a href=&quot;http://www.dd-wrt.com/wiki/index.php/Main_Page&quot;&gt;dd-wrt&lt;/a&gt; firmware on it for a while, but later switched to the &lt;a href=&quot;http://www.polarcloud.com/tomato&quot;&gt;Tomato firmware&lt;/a&gt; (also &lt;a href=&quot;http://en.wikibooks.org/wiki/Tomato_Firmware&quot;&gt;here&lt;/a&gt;), which has most of the same features but is a lot easier to use.&lt;/li&gt;
&lt;li&gt;Tivo: Back when I bought my first 40GB Tivo, I hacked it to add a 120GB drive (for a fraction of the normal cost).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My latest addition is the &lt;a href=&quot;http://www.amazon.com/gp/product/B0019OZ3OO?ie=UTF8&amp;#x26;tag=sfgeek-20&amp;#x26;link_code=as3&amp;#x26;camp=211189&amp;#x26;creative=373489&amp;#x26;creativeASIN=B0019OZ3OO&quot;&gt;DNS-321&lt;/a&gt; Network Storage Enclosure:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B0019OZ3OO?ie=UTF8&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=as2&amp;#x26;camp=1789&amp;#x26;creative=390957&amp;#x26;creativeASIN=B0019OZ3OO&quot;&gt;&lt;img src=&quot;/legacy/img/wp-content/uploads/2008/11/41xjj24sdpl-sl160.jpg&quot; alt=&quot;41XJJ24sDpL.SL160.jpg&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B0019OZ3OO?ie=UTF8&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=as2&amp;#x26;camp=1789&amp;#x26;creative=390957&amp;#x26;creativeASIN=B0019OZ3OO&quot;&gt;
&lt;/a&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B0019OZ3OO?ie=UTF8&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=as2&amp;#x26;camp=1789&amp;#x26;creative=390957&amp;#x26;creativeASIN=B0019OZ3OO&quot;&gt;I was previously using an external USB drive attached to my Airport Extreme router, but decided that I wanted to upgrade to a less flakey and fully redundant (but still affordable) storage system for our home. The DNS-321 (or its older and slightly more featureful cousin, the DNS-323) fits the bill. Out of the box, it makes two SATA drives available over Gigabit ethernet via SMB. It supports both Raid 0 (striping) and Raid 1 (mirroring), but I&apos;m using the latter for redundancy. With two 1TB hard drives, this gives me 1 TB of convenient, redundant, and reasonably fast storage, accessible from any laptop or desktop in our house (and our Xbox running XBMC). For solid performance as well as low power usage and noise, &lt;/a&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B000X4PJG8?ie=UTF8&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=as2&amp;#x26;camp=1789&amp;#x26;creative=390957&amp;#x26;creativeASIN=B000X4PJG8&quot;&gt;Western Digital Caviar GreenPower 1TB hard drives&lt;/a&gt; are highly recommended (and affordable, at around $110 each).&lt;/p&gt;
&lt;p&gt;So all of this is already quite a decent package out of the box, but it can be extended much beyond these capabilities (and very easily, too!) All it takes is installing one of several &lt;a href=&quot;http://wiki.dns323.info/start&quot;&gt;hacks for the DNS-323 / DNS-321&lt;/a&gt;. The device turns out to be a full Linux computer (albeit with a small CPU and little RAM), and all it takes to enable all the Linux goodness is to copy a few files to the drive. It turns out that it looks for an executable file called &lt;code&gt;fun_plug&lt;/code&gt; upon startup and executes this if it exists. Various hacks use this mechanism to deploy all kinds of applications, enable telnet or ssh, and more.&lt;/p&gt;
&lt;p&gt;The simplest way to get started is to &lt;a href=&quot;http://wiki.dns323.info/howto:ffp&quot;&gt;install the fonz fun_plug (also known as ffp)&lt;/a&gt;. The instructions (or these &lt;a href=&quot;http://nas-tweaks.net/CH3SNAS:Tutorials/fun_plug&quot;&gt;alternative instructions&lt;/a&gt;) are pretty simple and straightforward to follow. After the installation, you are rewarded with telnet access to the device, but you will want to make sure to follow the rest of the instructions and set up a root password. I also recommend disabling telnet and enabling ssh instead. You now have a full Linux box at your disposal.&lt;/p&gt;
&lt;p&gt;That&apos;s pretty much where I&apos;m at right now. I&apos;m still trying to decide what to do with the device, but the possibilities are wide open. Many applications are either included with or available for ffp, including media apps like Mediatomb or Musicbrowser, server apps such as MySQL, Lighttpd, and PHP (allowing you to run a full LAMP stack!), P2P / Bittorrent clients like Transmission, rsync (so you can schedule offsite backups), subversion, and many more. Apps can be installed with funpkg, a simple package management tool.&lt;/p&gt;
&lt;p&gt;There are also options beyond ffp, such as the apparently more powerful &lt;a href=&quot;http://wiki.dns323.info/howto:optware&quot;&gt;Optware&lt;/a&gt; package management system that can be installed on top of it. A &lt;a href=&quot;http://ipkg.nslu2-linux.org/feeds/optware/dns323/cross/unstable/&quot;&gt;huge number of packages&lt;/a&gt; are available for Opsware. This even includes Ruby and Git, so I&apos;ll definitely have to play with this when I get a chance.&lt;/p&gt;
&lt;p&gt;Not bad for a small $130 device. :)&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Rails in the Cloud: AWS, Heroku, and Morph</title><link>https://www.digitalhobbit.com/legacy/2008/11/13/rails-in-the-cloud-aws-heroku-and-morph/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/11/13/rails-in-the-cloud-aws-heroku-and-morph/</guid><description>Amazon Web Services Over the course of the past 6 months or so, I&apos;ve had the opportunity to explore various cloud hosting services, starting with Amazon Web Services. I don&apos;t want to go into detail about AWS here, but suffice to say that I like this suite of services a lot, and it was a great fit for an SMS app / messaging server I deployed on this infrastructure.</description><pubDate>Thu, 13 Nov 2008 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;&lt;a href=&quot;http://aws.amazon.com/&quot;&gt;Amazon Web Services&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Over the course of the past 6 months or so, I&apos;ve had the opportunity to explore various cloud hosting services, starting with &lt;a href=&quot;http://aws.amazon.com/&quot;&gt;Amazon Web Services&lt;/a&gt;. I don&apos;t want to go into detail about AWS here, but suffice to say that I like this suite of services a lot, and it was a great fit for an SMS app / messaging server I deployed on this infrastructure. The application consisted of a set of loosely coupled components running on EC2 (some daemon apps and some &lt;a href=&quot;http://merbivore.com/&quot;&gt;Merb&lt;/a&gt; based web frontends), communicating via the &lt;a href=&quot;http://aws.amazon.com/sqs&quot;&gt;Simple Queue Service&lt;/a&gt; (SQS). I leveraged S3 for deployments and backups.&lt;/p&gt;
&lt;p&gt;AWS is great, and the ability to bring up new EC2 instances any time is very powerful. Need to test something out real quick? Simply launch a fresh instance, then kill it when you no longer need it. One of your app servers running at capacity? Simply launch another one, or even automate this by monitoring your load. Need to bring up 1000 instances for an hour in order to load test your web app, then shut them right down again? No problem! No need to ever call up an IT person at your local hosting company and get a new server provisioned, or even buy your own server and drive to a colocation facility yourself to set it up.&lt;/p&gt;
&lt;p&gt;But the services that AWS provides are still very low level. This can be a good thing because it gives you complete control and flexibility over how to architect your application, but it also means that you&apos;ll spend a good amount of time configuring Linux images and writing deployment, monitoring, and backup scripts. For many complex applications, this makes perfect sense, and I would pretty much always pick AWS over VPS or dedicated hosting services these days. But for a large class of straightforward web apps, it would be great if I didn&apos;t have to worry about these details (especially since I&apos;m admittedly not that much of an IT guy). Ideally I would simply push my code out into the cloud and delegate all deployment concerns to the hosting service. When taken to the extreme, I would not even want to have to know any details about the deployment infrastructure. All I would care about is that the app runs reliably and scales up as needed (and affordably).&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://code.google.com/appengine/&quot;&gt;Google App Engine&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://code.google.com/appengine/&quot;&gt;Google App Engine&lt;/a&gt; has a similar philosophy, and if I was a Python fan, this would be a very interesting option. As soon as Google starts supporting Ruby, I will definitely check this out. My guess is that Rails might be difficult to support, because it is very tightly coupled with relational databases, but other Ruby based web frameworks (in particular &lt;a href=&quot;http://merbivore.org/&quot;&gt;Merb&lt;/a&gt;, perhaps even with a special &lt;a href=&quot;http://datamapper.org&quot;&gt;DataMapper&lt;/a&gt; adapter) seem like they could be a great fit for App Engine. DataMapper already has adapters for other non-relational data stores (such as &lt;a href=&quot;http://incubator.apache.org/couchdb/&quot;&gt;CouchDB&lt;/a&gt;), so it seems like it should be fairly straightforward to build an adapter for the Google App Engine Datastore.&lt;/p&gt;
&lt;p&gt;But I&apos;m getting off-track from what I was really planning to write about:&lt;/p&gt;
&lt;p&gt;Lately, several Rails based services have emerged that take a big step in this direction. I&apos;ve had the chance to work with &lt;a href=&quot;http://heroku.com&quot;&gt;Heroku&lt;/a&gt; and &lt;a href=&quot;http://mor.ph&quot;&gt;Morph AppSpace&lt;/a&gt;, so I figured I&apos;d share my early impressions.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://heroku.com&quot;&gt;Heroku&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Still in private beta, Heroku is a Rails specific hosting service that prides itself on its ease of use and elastic scalability. You create a new Rails app using their web interface, and then either edit it straight in the browser via a nifty browser based IDE, or check it out via &lt;a href=&quot;http://git.or.cz/&quot;&gt;Git&lt;/a&gt; and edit it locally. Changes made via the browser take effect immediately, changes made via Git are automatically deployed upon pushing to the remote repository, including applying migration scripts. It can&apos;t get much more streamlined than that!&lt;/p&gt;
&lt;p&gt;Heroku sits on top of EC2, but this fact is completely hidden from the developer, who never interfaces directly with the underlying EC2 instance. This means that, among other limitations, you don&apos;t have shell or FTP access to the server. You do however have access to the Rails console via Heroku&apos;s web interface, allowing you to work with your model objects and take care of the odd ad-hoc task. You also have access to your Rake tasks and the Rails code generators. Overall, I didn&apos;t find this limitation all that bad.&lt;/p&gt;
&lt;p&gt;Heroku uses PostgreSQL (we would have preferred MySQL, but that is unfortunately not an option at this point), but you don&apos;t have direct access to the database. The web interface has some rudimentary functionality for viewing your database schema and data, but there is no way to run SQL queries. I have found this a much bigger limitation than the lack of shell access, as it prevents a lot of ad-hoc analytics or quick and dirty data changes that occasionally come in handy (although I suppose it is easy enough to whip up a quick migration for the latter). There is a way to download a yaml based database dump, which you can then import into your local database (regardless of whether this runs PostgreSQL, MySQL, or Sqlite3). It&apos;s a bit cumbersome, but at least the option is there, so your data is never held hostage.&lt;/p&gt;
&lt;p&gt;Another major limitation is that Heroku does not support background tasks of any sort. This includes both cron jobs as well as tasks offloaded by the Rails app onto a job server such as &lt;a href=&quot;http://backgroundrb.rubyforge.org/&quot;&gt;BackgrounDRb&lt;/a&gt; or &lt;a href=&quot;http://github.com/purzelrakete/workling/tree/master&quot;&gt;Workling&lt;/a&gt;. This may not be critical for all applications, but it is becoming increasingly common for Rails apps to offload a lot of the processing into asynchronous background tasks, allowing for a more responsive user experience as well as better scalability.&lt;/p&gt;
&lt;p&gt;Heroku is free for now, but as far as I am aware they are aiming for a utility based pricing model, where you only pay for the actual bandwidth and CPU utilization you have consumed. If done right, this should be a great model that allows developers to launch their application without committing to any large upfront costs, and scale up the cost linearly with utilization.&lt;/p&gt;
&lt;p&gt;Overall Heroku is very impressive, and if you&apos;re starting out with a brand-new Rails app, it&apos;s well worth considering, at least in the early phases. It does come with some significant limitations compared to traditional hosting options, which may or may not be a big deal for you. Of course these are offset with the elimination of IT related tasks that are no longer necessary in this environment.&lt;/p&gt;
&lt;p&gt;But as much as I like Heroku&apos;s premise, we were underwhelmed with the performance of our Rails app on Heroku, which was our main reason for exploring alternatives such as Morph. Of course, since Heroku is still in its early stages, I&apos;m sure they will be able to improve this over time.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://mor.ph&quot;&gt;Morph AppSpace&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Morph is similar in principle to Heroku, but in my experience it is generally a bit more flexible.&lt;/p&gt;
&lt;p&gt;One of the main differences is that scaling isn&apos;t quite as transparent as in Heroku. Morph applications run on one or more &quot;cubes&quot;, which they describe as a &quot;virtualized application compute environment&quot;. A single cube is free and may very well be sufficient during development, so as with Heroku there is no up-front cost (although free plans don&apos;t support custom domains). Additional cubes cost $31 per month (the price goes down after 4 cubes) and also come with increased bandwidth and storage limits. But unlike typical VPS accounts, cubes are charged on a daily basis, so you can ramp up (or down) your cubes any time as needed to adjust to your application&apos;s utilization. This does mean that you need to manually allow your app to scale by adding additional cubes, but this is easily accomplished in the Morph Control Panel. Apparently automatic scaling based on application load is planned for a future release.&lt;/p&gt;
&lt;p&gt;The next difference is in the range of applications that Morph supports: Rails, Java (including &lt;a href=&quot;http://grails.org/&quot;&gt;Grails&lt;/a&gt;), and PHP (experimental). I have only used Morph for Rails applications and can&apos;t speak to any of the other options.&lt;/p&gt;
&lt;p&gt;Morph supports both PostgreSQL and MySQL (although the latter costs an extra $0.33 per day, apparently due to licensing issues). One very useful feature is that Morph gives you direct access to the database via a web based admin tool (&lt;a href=&quot;http://www.phpmyadmin.net&quot;&gt;phpMyAdmin&lt;/a&gt; in case of MySQL).&lt;/p&gt;
&lt;p&gt;Unlike Heroku, Morph does not offer a web based IDE. It also doesn&apos;t create a blank Rails app for you, nor does it offer source code hosting. Instead, it integrates with your existing source control system via a customized &lt;a href=&quot;http://www.capify.org/&quot;&gt;Capistrano&lt;/a&gt; deployment script. You simply specify the type (supported are Git, Subversion, Mercurial, Bazaar, and Local Directory) and URL of your SCM (&lt;a href=&quot;http://github.com&quot;&gt;GitHub&lt;/a&gt; in our case) and their wizard spits out a customized Capistrano script. After that, deployments are a breeze, not unlike Heroku. One difference is that Morph&apos;s deployment process involves multiple stages, the first of which consists of uploading your code to S3. As a result, you don&apos;t actually see detailed deployment status in the console and need to refer to the deployment logs in the Control Panel instead.&lt;/p&gt;
&lt;p&gt;Another critical feature for us is that Morph has at least rudimentary support for cron jobs. The Control Panel allows you to run Rake tasks directly (just like Heroku), but it also allows Rake tasks to be scheduled at arbitrary intervals (the minimum interval is 1 minute). This still doesn&apos;t allow us to offload arbitrary processing jobs to a job server, but it does at least enable jobs to be queued up in the database and processed asynchronously by a Rake task. We are using this mechanism to offload email processing to &lt;a href=&quot;http://seattlerb.rubyforge.org/ar_mailer/&quot;&gt;ar_mailer&lt;/a&gt;, which works great and leads to a significantly improved user experience.&lt;/p&gt;
&lt;p&gt;On the downside, Morph does not provide access to the Rails console. For me this is largely offset by the ability to access the database, but console access would have been nice.&lt;/p&gt;
&lt;p&gt;Last not least, at least for our application, Morph resulted in a significant speed boost (at least multiple X, close to an order of magnitude).&lt;/p&gt;
&lt;h3&gt;Verdict&lt;/h3&gt;
&lt;p&gt;So which service (if any) do I recommend? I wholeheartedly recommend both services. Which one is a better fit for you will likely depend on the specific features (and limitations) that matter to you. Personally, I&apos;m mostly enamored with Morph at this point, the improved performance and ability to run background jobs being the biggest differentiators for me. It remains to be seen whether either Heroku or Morph remain good options for us as our application grows (the fact that neither support true background tasks or Memcached servers might become a limiting factor at some point), but if nothing else they&apos;re an ideal way to get off the ground.&lt;/p&gt;
&lt;p&gt;If you&apos;re starting out with a new Rails application, you may want to simply try out both services (it really doesn&apos;t take that long) to see which one you like better. The easiest way to do this is to start with Heroku, as this creates a new Rails app for you and provides Git hosting. You should be able to then use Morph&apos;s Capistrano wizard to generate a custom Capistrano script for you and check this into your Git repository, at which point you&apos;ll be able to deploy the same Rails app to both Heroku and Morph. Of course, if you later decide to stick with Morph, you should find a different source code host (I heartily recommend &lt;a href=&quot;http://github.com&quot;&gt;GitHub&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The bottom line is that this new breed of hosting services is extremely compelling. Sure, both Heroku and Morph still have some rough edges and won&apos;t be a good match for all applications at this point, but the direction is very promising and I am excited to find out what the future holds.&lt;/p&gt;</content:encoded><category>development</category><category>technology</category></item><item><title>Amazon EC2 Out Of Beta</title><link>https://www.digitalhobbit.com/legacy/2008/10/23/amazon-ec2-out-of-beta/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/10/23/amazon-ec2-out-of-beta/</guid><description>Today, Amazon removed the beta label from their EC2 service, along with a bunch of related announcements. This is great news! Over the past half year, I have become an enthusiastic user of the various AWS services, including EC2, which has been very stable for me thus far. But now Amazon is formalizing this by offering a 99.95% availability guarantee as part of the new EC2 SLA.</description><pubDate>Thu, 23 Oct 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today, Amazon removed the beta label from their EC2 service, along with a &lt;a href=&quot;http://aws.typepad.com/aws/2008/10/big-day-for-ec2.html&quot;&gt;bunch of related announcements&lt;/a&gt;. This is great news!&lt;/p&gt;
&lt;p&gt;Over the past half year, I have become an enthusiastic user of the various AWS services, including EC2, which has been very stable for me thus far. But now Amazon is formalizing this by offering a 99.95% availability guarantee as part of the new &lt;a href=&quot;http://aws.amazon.com/ec2-sla&quot;&gt;EC2 SLA&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I don&apos;t personally care about the new &lt;a href=&quot;http://aws.amazon.com/windows&quot;&gt;Windows support&lt;/a&gt;, but I suppose this might make some Microsoft aficionados happy...&lt;/p&gt;
&lt;p&gt;Amazon also announced some exciting future features:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Management Console&lt;/strong&gt; - The management console will simplify the process of configuring and operating your applications in the AWS cloud. You&apos;ll be able to get a global picture of your cloud computing environment using a point-and-click web interface.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&apos;ve been using &lt;a href=&quot;http://ylastic.com/&quot;&gt;Ylastic&lt;/a&gt; as a Management Console, and can highly recommend this service. It allows me to monitor and manage our various AWS services from any machine, without having to install any apps locally. But having a Management Console built right into AWS would be neat (assuming it is as solid as Ylastic).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Load Balancing&lt;/strong&gt; - The load balancing service will allow you to balance incoming requests and traffic across multiple EC2 instances.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is great! Currently, AWS users have to roll their own load balancing implementation or rely on a more limited, DNS based solution. Most of my EC2 deployments don&apos;t involve public websites, so I have not had to tackle this issue. But having a solid load balancing solution built right into AWS will be tremendously useful for me in the future.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Automatic Scaling&lt;/strong&gt; - The auto-scaling service will allow you to grow and shrink your usage of EC2 capacity on demand based on application requirements.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Another feature that&apos;s been on our roadmap, and I&apos;m excited to hear there&apos;s going to be an officially supported solution. Hopefully Amazon&apos;s implementation will be flexible enough to allow different criteria to determine when to start and stop instances, such as CPU usage or SQS queue status.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cloud Monitoring&lt;/strong&gt; - The cloud monitoring service will provide real time, multi-dimensional monitoring of host resources across any number of EC2 instances, with the ability to aggregate operational metrics across instances, Availability Zones, and time slots.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Another awesome feature! So far I&apos;ve shied away from setting up a tool like Nagios for in-depth monitoring of our EC2 instances. It sounds like Amazon&apos;s built-in monitoring solution will meet this need.&lt;/p&gt;
&lt;p&gt;Overall I&apos;m very excited about the pace at which AWS has been improving over the past half year or so. Availability Zones and particularly Elastic IPs made a major difference, followed closely by EBS.&lt;/p&gt;
&lt;p&gt;Here&apos;s a small wishlist of features I&apos;d like to see in EC2:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Instance Aliases&lt;/strong&gt;: When running more than a handful of instances, each one for a specific service, it becomes very difficult to keep track of which instance ID maps to which service. Ideally instances would have a user-defined alias, but unfortunately the EC2 API does not offer this functionality. Luckily I am currently managing all instances via Ylastic, which supplements this functionality, but it means that I would be lost if I had to manage my existing instances using a different tool. This really should be implemented on the EC2 API level.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Querying User Data&lt;/strong&gt;: Along the same lines, EC2 instances do support arbitrary user data (which I use to specify the role of the instance upon startup), but unfortunately this can only be queried from within the instance, not externally. Again, Ylastic solves this issue by keeping track of the user data itself, but this should be supported by the EC2 API.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This list used to be a lot longer, but the recent release of EBS, coupled with the announcements above, took care of much of it. Nice work, Amazon!&lt;/p&gt;</content:encoded><category>development</category><category>technology</category></item><item><title>It&apos;s been a while...</title><link>https://www.digitalhobbit.com/legacy/2008/08/27/its-been-a-while/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/08/27/its-been-a-while/</guid><description>I realized that it&apos;s been quite a while since my last update. Unfortunately it seems like the amount of interesting stuff I have to write about is inversely proportional to the spare time I have available for writing... ;) Anyway, I figure I&apos;ll try to get back into the habit of publishing smaller posts, but hopefully more regularly. Let&apos;s see how it goes...</description><pubDate>Wed, 27 Aug 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I realized that it&apos;s been quite a while since my last update. Unfortunately it seems like the amount of interesting stuff I have to write about is inversely proportional to the spare time I have available for writing... ;)&lt;/p&gt;
&lt;p&gt;Anyway, I figure I&apos;ll try to get back into the habit of publishing smaller posts, but hopefully more regularly. Let&apos;s see how it goes...&lt;/p&gt;
&lt;p&gt;Ever since I went back into startup life four months ago, I&apos;ve had the chance to play with a lot of exciting technologies, so there&apos;s plenty of stuff to write about. Below are just some quick notes and mini-reviews, but I&apos;ll be writing more about the various topics in the future.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://merbivore.com&quot;&gt;Merb&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;This is quickly becoming my web framework of choice. It is well-thought-out, highly modular, and ideally suited for both small webservices as well as large scale websites.&lt;/li&gt;
&lt;li&gt;The default application layout is very similar to Rails, making it easy for Rails developers to get up to speed on Merb. However, it also supports highly compact app layouts that are ideal for smaller webservices.&lt;/li&gt;
&lt;li&gt;I&apos;m sure I&apos;ll write more about Merb later.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://datamapper.org&quot;&gt;DataMapper&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;An awesome ORM framework, and one of several supported by Merb. Like Merb it is still pre-1.0 and therefore still evolving a lot, but it is already quite solid and very powerful.&lt;/li&gt;
&lt;li&gt;More on this later...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://rspec.info/&quot;&gt;RSpec&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;For my new projects, I have been using RSpec exclusively, and after a small learning curve it has really grown on me. Granted, I&apos;m probably not taking advantage of all its features (for example I haven&apos;t actually written my own matchers yet), but with a bit of discipline (and a heavy dose of mocking and stubbing), specs written in RSpec are probably an order of magnitude clearer and more readable than with Test::Unit.&lt;/li&gt;
&lt;li&gt;I took the opportunity to get rid of test fixtures as well (and good riddance!)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ruby-lang.org/en/&quot;&gt;Ruby&lt;/a&gt; in general + &lt;a href=&quot;http://rubyonrails.com/&quot;&gt;Rails&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Right now I am working with a mix of Merb projects, Rails projects, and standalone Ruby apps.&lt;/li&gt;
&lt;li&gt;I&apos;ve had the opportunity to build a Ruby based framework for SMS based mobile apps, consisting of a processing pipeline with several independent services that communicate via asynchronous message queues, with some DSLs and meta-programming thrown in for good measure. This has allowed me to become much more familiar with Ruby than I was back when I just played with some Rails apps.&lt;/li&gt;
&lt;li&gt;There&apos;s definitely a right language for every task, but I have to admit that I find it harder and harder to imagine ever going back to Java...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://aws.amazon.com&quot;&gt;Amazon Web Services&lt;/a&gt; (EC2, SQS, and S3)
&lt;ul&gt;
&lt;li&gt;Using Amazon AWS as a deployment platform is a whole new experience for me, and I am very impressed with the various services. They were already solid when I started working with them, but in the past few months Amazon managed to launch several major features (such as static IP addresses and persistent storage) that significantly lower the barrier of entry.&lt;/li&gt;
&lt;li&gt;EC2 is particularly well-suited for the type of loosely coupled architecture we are developing, and I envision eventually being able to dynamically start and stop instances to adjust both to general growth over time, as well as fluctuations throughout the day (as mobile apps tend to exhibit certain usage patterns.)&lt;/li&gt;
&lt;li&gt;SQS is a convenient way to tie the different components together (albeit with some limitations, such as an 8KB maximum message size), and of course S3 is available for any storage needs.&lt;/li&gt;
&lt;li&gt;I will definitely blog in more detail about various AWS strategies and recipes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://git.or.cz/&quot;&gt;Git&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;We&apos;ve been using Git (and &lt;a href=&quot;http://github.com&quot;&gt;GitHub&lt;/a&gt;) for all new applications. We&apos;re definitely not exploiting it to its full potential so far (given that we&apos;re only a few developers that mostly work on different products, we haven&apos;t had much of a need to leverage Git&apos;s distributed nature), but I am definitely growing quite fond of it.&lt;/li&gt;
&lt;li&gt;It is extremely fast, I love being able to commit code and browse the revision history even without a network connection, topic branches are convenient and powerful, and more.&lt;/li&gt;
&lt;li&gt;Tool support is definitely still a weak point, but for the most part I&apos;ve been happy using Git on the command line.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lots of sysadmin / deployment stuff
&lt;ul&gt;
&lt;li&gt;System administration is definitely not my forte, but I get by (at least on Linux; Joyent&apos;s Solaris servers still manage to throw me off occasionally...).&lt;/li&gt;
&lt;li&gt;I have had a chance to get more exposure to deploying Rails apps (including Mongrel, Monit, Passenger, etc.), as well as building a deployment framework for AWS from scratch.&lt;/li&gt;
&lt;li&gt;Deploying applications to such a cloud based architecture is quite different from a typical Rails or LAMP stack, but I&apos;m quite happy with the initial version of the deployment framework I&apos;ve built. I&apos;m essentially using S3 to store versioned app packages (which correspond directly to a Git tag) as well as third party gems, and a configuration file (also in S3) for each environment (such as production or staging) defines which version should be deployed on it. Each service regularly polls S3 for configuration changes and updates itself if appropriate. We use a single machine image and configure each instance via user data upon startup, which allows the instance to pull down the appropriate files from S3 and start running the service it is intended for. A small set of Rake tasks manage deploying releases and promoting them from one environment to another one.&lt;/li&gt;
&lt;li&gt;There are still some challenges ahead, though, such as a proper logging system (I&apos;m planning to migrate our apps to log to a central &lt;a href=&quot;http://en.wikipedia.org/wiki/Syslog&quot;&gt;syslog&lt;/a&gt; server.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Various web based services, including &lt;a href=&quot;https://www.google.com/a/&quot;&gt;Google Apps&lt;/a&gt;, &lt;a href=&quot;http://github.com&quot;&gt;GitHub&lt;/a&gt;, &lt;a href=&quot;http://lighthouseapp.com/&quot;&gt;Lighthouse&lt;/a&gt;, &lt;a href=&quot;http://scoutapp.com/&quot;&gt;Scout&lt;/a&gt;, and &lt;a href=&quot;http://ylastic.com&quot;&gt;Ylastic&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;All of these are great utilities.&lt;/li&gt;
&lt;li&gt;Google Apps is a must-have; any startup should use it at least for email and calendaring, as well as collaborating on documents or spreadsheets. We also use Google Sites as our Intranet / Wiki.&lt;/li&gt;
&lt;li&gt;I have briefly &lt;a href=&quot;/legacy/2008/06/24/network-monitoring-with-scout/&quot;&gt;blogged about Scout before&lt;/a&gt; and will likely blog about various Scout plugins in the future.&lt;/li&gt;
&lt;li&gt;GitHub is an amazing application, not only for hosting our own source code, but also for following the various open source projects we depend on (such as Rails, Merb, and DataMapper.)&lt;/li&gt;
&lt;li&gt;We haven&apos;t had a chance to really dive into Lighthouse yet, so the jury is still out on it. I do believe that its refreshingly simple, tag based approach should work pretty well, though.&lt;/li&gt;
&lt;li&gt;Last not least, Ylastic has been invaluable and a great way to manage our EC2 instances, images, debug SQS based apps, browse S3, and more. I&apos;ll probably write up a more thorough review soon.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Honorary mention: &lt;a href=&quot;http://www.pandora.com/&quot;&gt;Pandora&lt;/a&gt; and &lt;a href=&quot;http://www.rogueamoeba.com/airfoil/&quot;&gt;Airfoil&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;For keeping us supplied with music and allowing us to stream it to our Airport Express. :)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&apos;s it for now. Hopefully it won&apos;t be two months before my next post...&lt;/p&gt;</content:encoded><category>development</category><category>technology</category><category>work</category></item><item><title>Rails And JSON Containing Unicode Characters</title><link>https://www.digitalhobbit.com/legacy/2008/08/27/rails-and-json-containing-unicode-characters/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/08/27/rails-and-json-containing-unicode-characters/</guid><description>As I mentioned in a previous blog post, Rails 2.1 natively supports incoming JSON requests. Unfortunately, it still struggles with JSON data containing non-ASCII characters. According to the JSON spec, JSON fully supports UTF-8 encoded text, so with a few exceptions it generally should not be necessary to escape non-ASCII characters with \u Unicode escape sequences. However, many JSON libraries appear to escape all non-ASCII text in this fashion.</description><pubDate>Wed, 27 Aug 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I mentioned in a previous blog post, &lt;a href=&quot;/legacy/2008/05/25/rails-21-and-incoming-json-requests/&quot;&gt;Rails 2.1 natively supports incoming JSON requests&lt;/a&gt;. Unfortunately, it still struggles with JSON data containing non-ASCII characters.&lt;/p&gt;
&lt;p&gt;According to the &lt;a href=&quot;http://json.org/&quot;&gt;JSON spec&lt;/a&gt;, JSON fully supports UTF-8 encoded text, so with a few exceptions it generally should not be necessary to escape non-ASCII characters with \u Unicode escape sequences. However, many JSON libraries appear to escape all non-ASCII text in this fashion. This in itself should not be a problem, but &lt;code&gt;ActiveSupport::JSON&lt;/code&gt; currently does not properly parse JSON containing \u escapes, resulting in strings with literal \u escape sequences rather than the desired UTF-8 encoded characters. This is especially confusing since &lt;code&gt;ActiveSupport:JSON&lt;/code&gt; itself encodes all non-ASCII characters as \u escapes, so one might think that the reverse transformation yields the original data. But this behavior is likely explained by an odd implementation choice for its decoder: Rather than using the &lt;code&gt;json&lt;/code&gt; (or &lt;code&gt;json-pure&lt;/code&gt;) library, it converts the JSON data to YAML and then uses the YAML library to decode the data into Ruby objects.&lt;/p&gt;
&lt;p&gt;Monkey-patching to the rescue! I decided to replace &lt;code&gt;ActiveSupport::JSON::decode&lt;/code&gt; with an implementation that uses the &lt;code&gt;json&lt;/code&gt; library. The easiest way is to stick the following code into a file named something like &lt;code&gt;activesupport_json_unicode_patch.rb&lt;/code&gt; inside the &lt;code&gt;config/initializers/&lt;/code&gt; directory, where Rails will automatically pick it up.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ruby&quot;&gt;require &apos;json&apos;

module ActiveSupport
  module JSON
    def self.decode(json)
      ::JSON.parse(json)
    end
  end
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can verify the fix by adding a test case (I added a file named &lt;code&gt;activesupport_json_test.rb&lt;/code&gt; to the &lt;code&gt;test/unit/&lt;/code&gt; directory):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ruby&quot;&gt;require File.dirname(__FILE__) + &apos;/../test_helper&apos;

class ActiveSupportJsonTest &amp;#x3C; Test::Unit::TestCase
  
  def test_json_encoding
    unicode_escaped_json = &apos;{&quot;foo&quot;:&quot;G\u00fcnter&quot;,&quot;bar&quot;:&quot;El\u00e8ne&quot;}&apos;
    hash = ActiveSupport::JSON.decode(unicode_escaped_json)
    assert_equal({&apos;foo&apos; =&gt; &apos;Günter&apos;, &apos;bar&apos; =&gt; &apos;Elène&apos;}, hash)
  end
  
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This test should fail without the patch and pass after adding it.&lt;/p&gt;
&lt;p&gt;In addition to fixing the JSON / Unicode problem, this patch should also provide a nice speed boost, as we&apos;re replacing the somewhat roundabout YAML based JSON decode method with a native one (particularly if you&apos;re using the native &lt;code&gt;json&lt;/code&gt; implementation rather than &lt;code&gt;json-pure&lt;/code&gt;.)&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Network Monitoring With Scout</title><link>https://www.digitalhobbit.com/legacy/2008/06/24/network-monitoring-with-scout/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/06/24/network-monitoring-with-scout/</guid><description>I&apos;ve been meaning to set up a network monitoring tool at work for a while. We have a couple of different applications using various technologies (currently mainly Ruby on Rails and PHP), running on various VPS servers.</description><pubDate>Tue, 24 Jun 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been meaning to set up a network monitoring tool at work for a while. We have a couple of different applications using various technologies (currently mainly Ruby on Rails and PHP), running on various VPS servers. While we are using &lt;a href=&quot;http://www.tildeslash.com/monit/&quot;&gt;Monit&lt;/a&gt; to keep an eye on our Rails apps and restart them if necessary, as well as a couple of custom webpages to track vital and growth stats of our apps, we currently don&apos;t use any monitoring or (perhaps more importantly) alerting tools beyond that. After one of our PHP / MySQL apps stopped responding (due to the fact that we ran out of disk space, as we later discovered), I figured it was about time to put some more sophisticated network monitoring in place.&lt;/p&gt;
&lt;p&gt;The de-facto standard application seems to be &lt;a href=&quot;http://www.nagios.org/&quot;&gt;Nagios&lt;/a&gt;, which is quite powerful and configurable, but has an extremely steep learning curve. It also does not offer a friendly UI for configuring services and relies on static configuration files instead. There is also a newer crop of network monitoring apps that I was hoping might be a bit less daunting to get up to speed on, such as &lt;a href=&quot;http://www.zenoss.com/&quot;&gt;Zenoss&lt;/a&gt; (here is a &lt;a href=&quot;http://www.infoworld.com/infoworld/article/07/09/10/37FE-boss-enterprise-monitoring_1.html&quot;&gt;brief overview of open source network monitoring apps&lt;/a&gt;). I downloaded a few of these, but ultimately realized that I would not be able to get my head wrapped around any of these apps purely using intuition, and that I would actually have to invest a fair amount of time to master at least the basics. I&apos;m simply not enough of an operations expert... It is clear that all of these apps are extremely powerful, and probably great for larger deployments, but I really just needed a simple tool to check some operating system level vital stats or ping some URLs, for a handful of machines.&lt;/p&gt;
&lt;p&gt;That&apos;s when I remembered &lt;a href=&quot;http://scoutapp.com/&quot;&gt;Scout&lt;/a&gt;, a hosted network monitoring service that launched fairly recently and that sounded very interesting when I first came across it. Their &lt;a href=&quot;https://scoutapp.com/subscriptions&quot;&gt;subscription plans&lt;/a&gt; are pretty reasonable (the $29/month plan for 4 servers should suffice for us at this stage), particularly given that we would have had to pay for an additional VPS slice or EC2 instance to host Nagios or some other deployed solution anyway. Best of all, Scout offers a free plan, and even though this only supports a single server, this is a good way to evaluate how well it works for our purposes.&lt;/p&gt;
&lt;p&gt;Scout uses an interesting approach at monitoring servers. Rather than using SNMP or an agent that is continuously running on each server, Scout uses a lightweight client (installed via a Ruby gem) that needs to be run periodically (10 minutes being the minimal reporting interval), generally via a cron job. Once the client app is installed on each server to be monitored, the servers don&apos;t need to be touched for future configuration changes. Instead, everything is configured on the &lt;a href=&quot;http://scoutapp.com&quot;&gt;Scout website&lt;/a&gt;, and pulled down by the client the next time it checks in. The entire configuration consists of a number of plugins that can be installed for each client. Out of the box, Scout supports around 20 plugins that range from basic monitoring tasks for server load or disk space to more specific plugins for Ruby on Rails, Mongrel, or MySQL.&lt;/p&gt;
&lt;p&gt;Even better, Scout offers a &lt;a href=&quot;https://scoutapp.com/plugin_urls/static/creating_a_plugin&quot;&gt;very simple Plugin API&lt;/a&gt; for integrating your own plugins. Plugins are written in Ruby and mainly consist of a single method that either returns a bunch of stats as a hash, which is exposed by Scout both in tabular report and graph form, or triggers an alert in case of a problem. Since plugins have the full Ruby stack at their disposal, it is easy to write a plugin that shells out to a Unix command, performs an HTTP request, hits a database, or anything else you can think of.&lt;/p&gt;
&lt;p&gt;One minor downside is that (as far as I can tell), there is no way to simply upload a plugin. Instead, Scout relies on a pull mechanism, which means that we would need to expose any proprietary plugins via a publicly accessible URL. This might be an issue if the plugin itself contains sensitive information, although settings (such as passwords or paths) can be decoupled from the code and configured via the web interface. While not ideal, putting the plugin code in a publicly accessible but not automatically discoverable location and only making it available for the duration of the initial download or future updates should minimize this risk and turn it into a minor inconvenience.&lt;/p&gt;
&lt;p&gt;Based on my initial impression, Scout looks very promising. The reporting functionality is fairly basic, and particularly the graphs could perhaps use a bit more polish, but everything is very easy to use. Scout is clearly geared towards developers rather than sysadmins, so perhaps that is why it appeals to me. If your monitoring needs are relatively straightforward and you don&apos;t need all the functionality that a deployed solution like Nagios offers, Scout is definitely worth a look, at least for relatively small deployments. I am not sure how well it scales beyond 16 servers (both in terms of administration and pricing), so it is possible that a deployed application might make more sense at that point.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Phusion Passenger Now Rack Compatible?</title><link>https://www.digitalhobbit.com/legacy/2008/06/01/phusion-passenger-now-rack-compatible/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/06/01/phusion-passenger-now-rack-compatible/</guid><description>According to this blog post and several mentions on Twitter, Phusion announced today&apos;s release of Passenger (aka mod\_rails) 2.0 at RailsConf. Apparently, Passenger 2.0 will be Rack compliant and thus support not only Rails, but any Rack compatible web framework, including Merb and Sinatra.</description><pubDate>Sun, 01 Jun 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;According to &lt;a href=&quot;http://www.railsjedi.com/posts/52-The-Holy-Grail-for-Rails-Deployment&quot;&gt;this blog post&lt;/a&gt; and several &lt;a href=&quot;http://summize.com/search?q=passenger+2.0&quot;&gt;mentions on Twitter&lt;/a&gt;, Phusion announced today&apos;s release of Passenger (aka mod_rails) 2.0 at RailsConf. Apparently, Passenger 2.0 will be Rack compliant and thus support not only Rails, but any Rack compatible web framework, including &lt;a href=&quot;http://merbivore.com/&quot;&gt;Merb&lt;/a&gt; and &lt;a href=&quot;http://sinatrarb.com/&quot;&gt;Sinatra&lt;/a&gt;. Interestingly, Passenger will not even be limited to Ruby any more and extend their support to WSGI, the Python web adapter framework that inspired Rack in the first place. For example, this will allow Passenger 2.0 to run the popular Django web framework. In light of these changes, Passenger will drop the name mod_rails.&lt;/p&gt;
&lt;p&gt;I think these are fantastic news! As I mentioned in &lt;a href=&quot;/legacy/2008/05/14/phusion-passenger-aka-mod_rails-on-dreamhost/&quot;&gt;my previous post on Phusion Passenger&lt;/a&gt;, it makes deploying Rails apps trivially easy, and I am planning to use it as the default deployment platform for my Rails apps. I have also been flirting with Merb lately, and knowing that I am going to be able to deploy it just as easily as Rails makes a big difference to me.&lt;/p&gt;
&lt;p&gt;Support for Rack is the logical next step for Passenger, so I am not all that surprised about the direction they are going. I am however a bit surprised about the timing. After all, version 1.0 was only released fairly recently and prominently branded as mod_rails. The [&lt;a href=&quot;http://www.modrails.com/documentation.html%5D(online&quot;&gt;http://www.modrails.com/documentation.html](online&lt;/a&gt; documentation) even states (although I assume that this will be updated within the next few days):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Does it support other Ruby frameworks (Merb, Camping, etc.)?&lt;/p&gt;
&lt;p&gt;No.&lt;/p&gt;
&lt;p&gt;What?! Why??&lt;/p&gt;
&lt;p&gt;Because this is an evil plot created by evil overlords, with the goal of world domination destroying all other Ruby frameworks.
…&lt;/p&gt;
&lt;p&gt;Actually…&lt;/p&gt;
&lt;p&gt;There is the following saying: Jack of all trades, master of none. Our intention is to be masters, not Jacks. The primary goal of version 1.0 was to create an easy-to-use, low-maintenance, stable and fast Ruby on Rails deployment system for Apache. And we&apos;ve put a lot of effort into reaching that goal. Implementing support for other Ruby frameworks would have deviated us from that goal and would have increased development time significantly.&lt;/p&gt;
&lt;p&gt;That said, nothing prevents future versions from supporting other Ruby frameworks, or from becoming a generic Ruby web application deployment platform. Please discuss it with us if you&apos;re interested in steering development towards that direction.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My guess is that there was a lot of demand for Rack support from users (even Rails now supports Rack), and after looking into it, they realized it was easier to integrate this than they initially expected. Either way, this is great news, and I look forward to trying out Passenger 2.0 with Merb and DataMapper, or even Sinatra for smaller apps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; 2.0 RC1 has been released, and you can find more details in &lt;a href=&quot;http://blog.phusion.nl/2008/06/09/phusion-passenger-20-rc-1-and-ruby-enterprise-edition-released/#comment-82&quot;&gt;the release announcement on the Phusion blog&lt;/a&gt;. In addition to Rack and WSGI support, 2.0 sounds like a more solid and stable release overall, with a significantly smaller memory footprint, faster startup time, fair load balancing, upload buffering, and some convenient &lt;a href=&quot;http://www.modrails.com/documentation/Users%20guide%202.0.html#_analysis_and_system_maintenance_tools&quot;&gt;analysis tools&lt;/a&gt;. There&apos;s also a native Ubuntu package now, in case you want to avoid compiling from source.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Rails 2.1 and Incoming JSON Requests</title><link>https://www.digitalhobbit.com/legacy/2008/05/25/rails-21-and-incoming-json-requests/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/05/25/rails-21-and-incoming-json-requests/</guid><description>Earlier this week, we tried to figure out the cleanest and easiest way to get our Rails app to accept incoming JSON requests. Up until recently, developers were able to use various Rails plugins for this purpose, such as the json_request plugin.</description><pubDate>Sun, 25 May 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Earlier this week, we tried to figure out the cleanest and easiest way to get our Rails app to accept incoming JSON requests. Up until recently, developers were able to use various Rails plugins for this purpose, such as the &lt;a href=&quot;http://blog.labnotes.org/2007/12/11/json_request-handling-json-request-in-rails-20/&quot;&gt;json_request plugin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Luckily, it turns out that full support for JSON was &lt;a href=&quot;http://github.com/rails/rails/commit/4d594cffcfc93b37fad4e423ec8593299e50133c&quot;&gt;added to Rails in April&lt;/a&gt;, making it a first class citizen along with XML and regular URL-encoded form fields. This functionality will be officially released in Rails 2.1, but in addition to Edge Rails, it is already included in Rails 2.0.991, which is available from the &lt;a href=&quot;http://gems.rubyonrails.org&quot;&gt;Ruby on Rails Gem Repository&lt;/a&gt;. You can install this pre-release via:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo gem update rails --source http://gems.rubyonrails.org
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using this functionality is really simple. Let&apos;s say we have created the following scaffolded Rails app with a Book resource, perhaps to manage your library:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rails library
cd library
script/generate scaffold book title:string author:string isbn:string price:decimal
rake db:migrate
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you know, you can now access the books controller in the browser via &lt;code&gt;http://localhost:3000/books&lt;/code&gt;, and use the &quot;New Book&quot; link to create a new book via the scaffolded form that Rails provides. But you can also create books via JSON (or XML, for that matter). In fact, we will try XML first, which has been natively supported in Rails for a while:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -H &quot;Content-Type:text/xml&quot; -H &quot;Accept:text/xml&quot; \
  -d &quot;&amp;#x3C;book&gt;&amp;#x3C;title&gt;Posted via XML&amp;#x3C;/title&gt;&amp;#x3C;author&gt;Ex Emel&amp;#x3C;/author&gt;&amp;#x3C;isbn&gt;1234567890&amp;#x3C;/isbn&gt;&amp;#x3C;price&gt;34.99&amp;#x3C;/price&gt;&amp;#x3C;/book&gt;&quot; \
  http://localhost:3000/books
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that I am setting both the Content-Type and Accept header to &quot;text/xml&quot;, indicating that the incoming request consists of XML and that we would like to receive an XML-formatted response as well. The response looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;&amp;#x3C;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&amp;#x3C;book&gt;
  &amp;#x3C;author&gt;Ex Emel&amp;#x3C;/author&gt;
  &amp;#x3C;created-at type=&quot;datetime&quot;&gt;2008-05-26T05:58:38Z&amp;#x3C;/created-at&gt;
  &amp;#x3C;id type=&quot;integer&quot;&gt;2&amp;#x3C;/id&gt;
  &amp;#x3C;isbn&gt;1234567890&amp;#x3C;/isbn&gt;
  &amp;#x3C;price type=&quot;decimal&quot;&gt;34.99&amp;#x3C;/price&gt;
  &amp;#x3C;title&gt;Posted via XML 2&amp;#x3C;/title&gt;
  &amp;#x3C;updated-at type=&quot;datetime&quot;&gt;2008-05-26T05:58:38Z&amp;#x3C;/updated-at&gt;
&amp;#x3C;/book&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now let&apos;s try the same thing in JSON:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -H &quot;Content-Type:application/json&quot; -H &quot;Accept:application/json&quot; \
  -d &quot;{\&quot;book\&quot;:{\&quot;title\&quot;:\&quot;Posted via JSON\&quot;, \&quot;author\&quot;:\&quot;Jason Bourne\&quot;, \&quot;isbn\&quot;:1234567890, \&quot;price\&quot;:49.95}}&quot; \
  http://localhost:3000/books
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can verify in the browser, this request was successful and had the desired effect. However, unlike the XML case, there was no response this time. This is because our controller does not know how to render JSON results yet. Looking at the &lt;code&gt;create&lt;/code&gt; method in the &lt;code&gt;BooksController&lt;/code&gt;, we notice that the &lt;code&gt;responds_to&lt;/code&gt; block contains entries for HTML and XML, but not for JSON. Simply copy the XML lines and replace all occurrences of &lt;code&gt;xml&lt;/code&gt; with &lt;code&gt;json&lt;/code&gt;. The updated method should look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ruby&quot;&gt;def create
  @book = Book.new(params[:book])

  respond_to do |format|
    if @book.save
      flash[:notice] = &apos;Book was successfully created.&apos;
      format.html { redirect_to(@book) }
      format.xml  { render :xml =&gt; @book, :status =&gt; :created, :location =&gt; @book }
      format.json { render :json =&gt; @book, :status =&gt; :created, :location =&gt; @book }
    else
      format.html { render :action =&gt; &quot;new&quot; }
      format.xml  { render :xml =&gt; @book.errors, :status =&gt; :unprocessable_entity }
      format.json { render :json =&gt; @book.errors, :status =&gt; :unprocessable_entity }
    end
  end
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you run the same curl command again, you should now get the following response:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;{&quot;book&quot;: {&quot;isbn&quot;: 1234567890, &quot;updated_at&quot;: &quot;2008-05-26T06:11:33Z&quot;,
&quot;title&quot;: &quot;Posted via JSON&quot;, &quot;price&quot;: 49.95, &quot;author&quot;: &quot;Jason Bourne&quot;,
&quot;id&quot;: 4, &quot;created_at&quot;: &quot;2008-05-26T06:11:33Z&quot;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;One important thing to note is that both the incoming and outgoing JSON contain an outermost element called &lt;code&gt;book&lt;/code&gt;. This is in fact required for resource based JSON requests to work. The same is true for XML, but since XML requires an enclosing element (unlike JSON, which can be &quot;naked&quot;), it is perhaps less obvious in this case. The outermost JSON element should always have the same name as the resource it corresponds to.&lt;/p&gt;
&lt;p&gt;A few notes on testing JSON requests:&lt;/p&gt;
&lt;p&gt;We initially banged our heads against the wall trying to figure out how to convince our functional test to pass JSON-formatted parameters in the &lt;code&gt;post&lt;/code&gt; method, including various hacks to override different settings on the &lt;code&gt;@request&lt;/code&gt; object. Admittedly it had been a while since I had seriously used Rails the last time, but it later dawned on me that we were going about this the wrong way. Functional tests (in Rails, anyways... let&apos;s not talk about its confusing and non-standard test terminology) bypass most of the actual HTTP request handling and are not meant to test this aspect of an application. They essentially pick up at the point where the controller has received its (already parsed) parameters in the &lt;code&gt;params&lt;/code&gt; hash, regardless of whether these originated from an XML, JSON, or URL-encoded form request.&lt;/p&gt;
&lt;p&gt;Since JSON support is implemented by Rails (and thus covered by its own unit tests), it probably does not make sense to focus too much on testing this general functionality in the individual application. But if you do want to test JSON requests, you can use integration tests for this purpose. The &lt;code&gt;post&lt;/code&gt; method in integration tests is more low level and simulates the actual HTTP request, along with the parameter parsing.&lt;/p&gt;
&lt;p&gt;So in our library example, we might use an integration test case such as the one below to specifically test creating a book via JSON:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ruby&quot;&gt;def test_create_via_json
  assert_difference(&apos;Book.count&apos;) do
    post &apos;/books/create&apos;,
      &apos;{&quot;book&quot;:{&quot;title&quot;:&quot;Posted via JSON&quot;, &quot;author&quot;:&quot;Jason Bourne&quot;, &quot;isbn&quot;:1234567890, &quot;price&quot;:49.95}}&apos;,
      {&apos;Content-Type&apos; =&gt; &apos;application/json&apos;, &apos;Accept&apos; =&gt; &apos;application/json&apos;}
  end
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Native JSON support in Rails is definitely a useful feature. In fact, I was fairly surprised that this wasn&apos;t already implemented until recently. But now that it&apos;s here, it should come in very handy.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Phusion Passenger (aka mod_rails) on DreamHost</title><link>https://www.digitalhobbit.com/legacy/2008/05/14/phusion-passenger-aka-mod_rails-on-dreamhost/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/05/14/phusion-passenger-aka-mod_rails-on-dreamhost/</guid><description>A couple weeks ago, Phusion Passenger (aka mod\_rails) was released. I recently tested this at work, on an EC2 instance, and my initial experience was so smooth that I am already planning to use it to deploy our various Rails applications. The benchmarks I&apos;ve seen put its performance on approximately the same level as a Mongrel cluster, but its ease of use is an order of magnitude better.</description><pubDate>Wed, 14 May 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A couple weeks ago, &lt;a href=&quot;http://www.modrails.com/&quot;&gt;Phusion Passenger (aka mod_rails)&lt;/a&gt; was released. I recently tested this at work, on an EC2 instance, and my initial experience was so smooth that I am already planning to use it to deploy our various Rails applications. The benchmarks I&apos;ve seen put its performance on approximately the same level as a Mongrel cluster, but its ease of use is an order of magnitude better. All you need to do is install an Apache mod and set up a virtual host config that points to your Rails app&apos;s &lt;code&gt;public&lt;/code&gt; directory. You don&apos;t even need to tell it that the directory you&apos;re pointing to represents a Rails app -- mod_rails is smart enough to figure this out by itself (although there are a few Rails specific options you can use to control the base URI or the Rails environment). No more juggling Mongrel PIDs, complicated proxy configs, or anything of that sort. Simply create a &lt;code&gt;tmp/restart.txt&lt;/code&gt; file to have Apache reload the Rails app after you deploy a new version. Tom Copeland posted a &lt;a href=&quot;http://tomcopeland.blogs.com/juniordeveloper/2008/05/mod_rails-and-c.html&quot;&gt;very simple Capistrano script for mod_rails&lt;/a&gt;, which essentially does just that and stubs out the usual Rails Capistrano tasks that are no longer necessary in this setup.&lt;/p&gt;
&lt;p&gt;Yesterday, &lt;a href=&quot;http://blog.dreamhost.com/2008/05/13/passenger-for-ruby-on-rails/&quot;&gt;DreamHost announced their support for mod_rails&lt;/a&gt;. I had played with Rails on DreamHost several years ago (back when FCGI was still the generally accepted way to run Rails apps), but ultimately gave up on this because of the frustrating experience (performance, stability, and ease of deployment wise). Since then, VPS hosting services (such as &lt;a href=&quot;http://www.slicehost.com/&quot;&gt;SliceHost&lt;/a&gt;) have become the prevalent solution for hosting Rails apps. But with DreamHost officially supporting mod_rails, I figured I&apos;d give this a spin to see how well it works in practice.&lt;/p&gt;
&lt;p&gt;I am happy to say, it seems to work just as advertised! In order to test Rails on DreamHost, I downloaded the popular &lt;a href=&quot;http://mephistoblog.com/&quot;&gt;Mephisto Blog Application&lt;/a&gt;, unzipped it into a directory on my DreamHost account, and configured the database settings (I didn&apos;t even bother with MySQL and opted for Sqlite3 for the purpose of this test). I then went into my domain&apos;s settings on the DreamHost Web Panel, checked the &quot;Ruby on Rails Passenger (mod_rails)&quot; checkbox, and pointed to my Mephisto directory&apos;s &lt;code&gt;public&lt;/code&gt; subdirectory as the web directory for my domain (this is important, as the web directory defaults to &lt;code&gt;yourdomain.com&lt;/code&gt;, without the &lt;code&gt;/public&lt;/code&gt; that mod_rails expects).&lt;/p&gt;
&lt;p&gt;A minute or two later, my changes had been applied and I was greeted by the Mephisto blog when I hit my domain in the browser. I configured my blog&apos;s settings and entered some dummy articles, and found the performance to be very snappy -- no different from PHP apps that I am hosting at DreamHost (such as this WordPress blog).&lt;/p&gt;
&lt;p&gt;I think this is pretty exciting. Sure, there are many other cost-effective options to deploy Rails apps these days (such as the unique and highly promising &lt;a href=&quot;http://heroku.com/&quot;&gt;Heroku&lt;/a&gt; or a cheap $20 VPS slice on SliceHost), but for a personal blog or another small, reasonably low-traffic website (such as the 12 or so random Rails apps all of us are concurrently working on and too cheap to spring for VPS hosting, since most of them will never go anywhere), having the option to easily deploy these on a shared hosting account is great.&lt;/p&gt;
&lt;p&gt;Now I am hoping that mod_rails will be extended beyond just Rails to support any &lt;a href=&quot;http://rack.rubyforge.org/&quot;&gt;Rack&lt;/a&gt; compliant Ruby web framework, such as &lt;a href=&quot;http://merbivore.com/&quot;&gt;Merb&lt;/a&gt; or &lt;a href=&quot;http://sinatra.rubyforge.org/&quot;&gt;Sinatra&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>development</category><category>software</category></item><item><title>Twitter / Ruby on Rails FUD</title><link>https://www.digitalhobbit.com/legacy/2008/05/01/twitter-ruby-on-rails-fud/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/05/01/twitter-ruby-on-rails-fud/</guid><description>Earlier today, TechCrunch&apos;s poorly researched claim that Twitter is abandoning Ruby on Rails in favor of PHP or Java generated a lot of buzz in the Twitter and Ruby communities (the claim was later refuted by Twitter developer Evan Williams). Of course, the article&apos;s comments attracted the usual, ignorant TechCrunch trolls.</description><pubDate>Thu, 01 May 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Earlier today, &lt;a href=&quot;http://www.techcrunch.com/2008/05/01/twitter-said-to-be-abandoning-ruby-on-rails/&quot;&gt;TechCrunch&apos;s poorly researched claim that Twitter is abandoning Ruby on Rails&lt;/a&gt; in favor of PHP or Java generated a lot of buzz in the Twitter and Ruby communities (the claim was later &lt;a href=&quot;http://twitter.com/ev/statuses/801530348&quot;&gt;refuted by Twitter developer Evan Williams&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Of course, the &lt;a href=&quot;http://www.techcrunch.com/2008/05/01/twitter-said-to-be-abandoning-ruby-on-rails/#comments&quot;&gt;article&apos;s comments&lt;/a&gt; attracted the usual, ignorant TechCrunch trolls. Most took the opportunity to pitch their framework of choice (such as PHP, Java, .NET, or Django), which they claimed would of course magically solve all of Twitter&apos;s scalability issues.&lt;/p&gt;
&lt;p&gt;I have to say I am appalled at this level of ignorance. People just don&apos;t seem to realize that Twitter is a complex messaging application and that the front-end is only a relatively small aspect of it. Even if one particular front-end technology happens to be faster than another one (and admittedly Rails, as much as I like it, is not the fastest technology out there), this fact is bound to be negligible compared to the real challenges in scaling the back-end, starting with the database (trust me, like many developers I&apos;ve learned this the hard way ;) ). Even for a typical web application (which Twitter is not), there are many performance improvements than can be implemented at that level (such as leveraging database replicas to separate writes from reads, or utilizing Memcached to cache queries and other data), all of which can be applied equally well to any front-end framework.&lt;/p&gt;
&lt;p&gt;I&apos;m not saying that it does not make sense to consider other technologies (there might very well be a breaking point at which it makes sense to evaluate Java or even rewriting parts of the system in C/C++), but in my opinion this should be considered a cost-savings measure when the application reaches a scale at which the cost of hardware far outweighs any savings due to increased developer productivity (think Google), and not a magic bullet for solving fundamental scalability issues (performance != scalability!)&lt;/p&gt;
&lt;p&gt;One of the real difficulties in scaling Twitter lies in the fact that all Twitter hits are completely personalized and need to return fresh data, making it difficult to fully leverage caching. Also, since Twitter is a social application and the returned data is generated by each user&apos;s social graph, there is no straightforward way to shard the database by user, as one might be able to do in a typical e-commerce or enterprise application (or pretty much any non-social app...). Without knowing more about Twitter&apos;s internal architecture and their actual profiling results, it would be foolish of me to make any concrete recommendations -- particularly silly ones like &lt;em&gt;&quot;Use technology XYZ, it will magically solve all your problems!&quot;&lt;/em&gt; Too bad many of the developers out there don&apos;t seem to realize this...&lt;/p&gt;</content:encoded><category>development</category><category>technology</category><category>websites</category></item><item><title>Gelato with DHH</title><link>https://www.digitalhobbit.com/legacy/2008/04/20/gelato-with-dhh/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/04/20/gelato-with-dhh/</guid><description>I just got back from an ice cream social with Ruby on Rails creator David Heinemeier Hansson (aka DHH). I had come across his blog post about this casual event last week and figured I&apos;d make my way over there, particularly since the location (Michael&apos;s Gelato &amp; Cafe) in downtown Palo Alto is only 5 minutes from my house.</description><pubDate>Sun, 20 Apr 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just got back from an ice cream social with Ruby on Rails creator &lt;a href=&quot;http://www.loudthinking.com/&quot;&gt;David Heinemeier Hansson&lt;/a&gt; (aka DHH). I had come across his &lt;a href=&quot;http://www.loudthinking.com/posts/25-going-to-california&quot;&gt;blog post about this casual event&lt;/a&gt; last week and figured I&apos;d make my way over there, particularly since the location (&lt;a href=&quot;http://www.michaelsgelatoandcafe.com/&quot;&gt;Michael&apos;s Gelato &amp;#x26; Cafe&lt;/a&gt;) in downtown Palo Alto is only 5 minutes from my house.&lt;/p&gt;
&lt;p&gt;There were probably about 20 other people (mainly Rails developers) at the event, and since the space was pretty small and we didn&apos;t have a dedicated room, it was initially difficult to actually speak with David. But towards the end of the evening the group started getting smaller, which made it easier to participate in the conversation.&lt;/p&gt;
&lt;p&gt;In terms of what David had to say, I did not catch too many noteworthy items that are not already known in Ruby on Rails circles. But a few things seem to be key to understanding both the history and the future of Rails:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;David created Rails to solve his specific problems. It wasn&apos;t meant to directly solve every possible problem out there, and if there are useful features missing from it that simply means that he (or presumably the rest of the core team, now that it has become a larger community project) has not needed that particular functionality, not that it would not be useful.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rails is (as we all know) a very opinionated framework. It makes a lot of reasonable assumptions about various things (such as the names of &quot;id&quot; columns), which enables developers to accomplish a lot with very little code. However, all of these opinions are purely about the internals of the system and therefore relevant for developers, but never affect the end user in any way. David is strongly against including any features in Rails that would result in any default application flows or otherwise affect the actual behavior of the application. That&apos;s why Rails still does not (and probably will never) include a built-in authentication system.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Otherwise, he seems pretty indifferent about a lot of the details about how people are working with Rails. For example, Ruby and Ruby on Rails&apos; performance was good enough for him several years ago, so this area has never been too much of a concern of his. He also doesn&apos;t feel strongly about using Test::Unit vs. RSpec. In his opinion, Test::Unit is good enough, and actually easier to understand for someone who does not have much experience with testing, whereas RSpec probably has more of a learning curve (and he did not seem to excited about the particular syntax). He felt that the most important thing that BDD and RSpec brought to the table is the &quot;should&quot; keyword, and that changing Rails to allow this in test method names made a big enough difference in readability and helped enforce the convention of using a single assertion for each test case. (I actually was not aware that you can use &quot;should&quot; in Rails test names; I&apos;ll have to look into this.)&lt;/p&gt;
&lt;p&gt;I probably missed a bunch of other nuggets of wisdom because the room was a bit noisy and crowded, but I&apos;m sure that all of these have been posted on various blogs and mentioned in various keynote speeches before.&lt;/p&gt;
&lt;p&gt;Anyway, it was nice to meet David in person. He seems like a great guy, and I definitely appreciate that he took the time to meet with a small fraction of his user base tonight. It&apos;s refreshing to work with technologies that are owned and driven by real-world people like this, rather than large corporations that have lost touch with their user base.&lt;/p&gt;</content:encoded><category>development</category><category>events</category></item><item><title>On Leaving Google</title><link>https://www.digitalhobbit.com/legacy/2008/04/13/on-leaving-google/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/04/13/on-leaving-google/</guid><description>As some of you may know, I have decided to leave Google and go back into the startup world. Friday was my last day at Google, and even though I normally don&apos;t blog much about my job, I figured I was due for an update. First off, Google is an amazing company.</description><pubDate>Sun, 13 Apr 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As some of you may know, I have decided to leave Google and go back into the startup world. Friday was my last day at Google, and even though I normally don&apos;t blog much about my job, I figured I was due for an update.&lt;/p&gt;
&lt;p&gt;First off, Google is an amazing company. Especially for a company of this size (and impact), it is highly impressive that they have managed to maintain this kind of work environment, company culture, and integrity. On the most basic level, there are all the perks, from great health benefits to free food (there are about 15 cafeterias on the Mountain View campus alone, many of which offer breakfast, lunch, and dinner), micro-kitchens with free snacks (including fresh fruit or fresh cut carrots and celery), on-campus gyms and a beach volleyball field, and more. Another great thing are the many tech talks (usually there are at least a couple every day), which feature both internal and external speakers. There are also many opportunities for training. In the one year that I have worked at Google, I had the opportunity to take a one-day class on Agile Estimating and Planning, as well as an excellent four-day workshop on Design Patterns and Refactoring, and numerous Google and product specific classes. Then there are the various off-sites and team building events, which probably take up another good week each year. Not many companies send their employees to Disneyland for three days... And of course there&apos;s Google itself, with its various products that have become so ubiquitous and synonymous with the web that life would be difficult to imagine without them. Anybody remember the web before Google Search came along? Let me give you a hint: it sucked! But even newer products like Gmail, Google Reader, or Calendar have caught on quickly and become established as best-of-breed applications, and I definitely felt proud to work at the company that has built all of these applications. And speaking of work, the actual work environment is also nice in many ways: Every engineer gets either two 24&quot; or one 30&quot; monitor, as well as a company laptop (either MacBook Pro or Thinkpad). Depending on which project you work on, you might get to work with innovative internal tools and frameworks (such as BigTable), and I have definitely developed an entirely different perspective on scale, which humbles any project I&apos;ve worked on before. Then there&apos;s the community. In general, Googlers are a great bunch, and very smart. There are internal mailing lists on pretty much any subject, and you can pretty much guarantee that you will be able to get a solid answer to whatever question you might have (work or non-work related). In fact, this reminded me quite a bit of Usenet, back when it was still popular and usable, and not totally overrun with idiots. Of course, keeping up with all of this can become quite a time sink as well... Google is highly engineering-driven, and engineers enjoy a lot of trust and power, which is a very different and refreshing experience from working at a more product-driven company.&lt;/p&gt;
&lt;p&gt;So if everything is so great at Google, why am I stupid enough to leave? And part of me does indeed feel a bit guilty about not being able to fully appreciate and enjoy working at Google -- after all, there are many people out there in the world that have dreary and monotonous minimum-wage jobs, without any benefits or perks to speak of. But in the end, I have realized that I am just much more of a startup person than a big-company person. Perks and everything are great, but this is ultimately not what motivates me. At an early stage startup, every single individual has a tremendous impact on the company (good or bad...), along with a much broader set of responsibilities (everybody has to wear many hats). Then, there&apos;s the pioneering spirit, which is extremely energizing and contagious. These days, it seems like a lot of the true innovations are made at small startups, which have the benefit of being orders of magnitude times more agile and efficient than a large company will ever be. Sure, many ideas don&apos;t go anywhere, but every once in a while, something new comes along that leaves a big footprint (and let&apos;s not forget that even Google started out like this). Last not least, there is of course a significantly bigger upside to working at a startup. Of course the harsh truth is that most startups fail, but at least there is that 1 in a 10 chance of being tremendously successful (and the sense of actually being able to contribute to this chance). As a recent Google employee, I would have never gotten rich there, even if the stock had doubled or tripled in price.&lt;/p&gt;
&lt;p&gt;There are a few other Google-specific problems I should mention as well. For one thing, it is unlikely to initially be able to work in an area that one is passionate about. Many of the Google products are exciting, but unfortunately I was unable to be passionate about my particular product area. That is not to say that there weren&apos;t any interesting aspects about it, and I do have a lot of respect for the team I worked with. Overall this is less of a problem later, as it is generally encouraged to switch projects every 1-2 years, but this first year makes a big difference, particularly for experienced engineers that have a good understanding of what kind of things they enjoy working on (or perhaps more importantly, don&apos;t enjoy working on) or what kind of environments are a good match. I feel that the hiring process should be improved to better take this into consideration, although this is admittedly a difficult logistical problem at Google&apos;s scale. Another scale-related problem: Due to the sheer size of the code base and the vast number of Google-specific tools and frameworks, it also takes a very long time to learn how to actually become productive at Google, which can be frustrating at times.&lt;/p&gt;
&lt;p&gt;But overall, I feel privileged that I had the chance to work at Google. I&apos;m sure they will still be around for a long time, and 20 years from now I will be able to tell my grandchildren &quot;Oh, Google, yes, I worked there once...&quot;. I will certainly miss the Google campus, which had the vibrant feel of a University campus. I will also miss many things about the Google culture, and hopefully be able to take many of these inspirations with me into my future career.&lt;/p&gt;
&lt;p&gt;Which brings me to my new job, which I am enormously excited about starting this Monday. I can&apos;t say too much, as the company is just getting founded and still in stealth mode, but I am going to be a co-founder of a brand-new startup in the Social Networking / Mobile space, two areas I am very interested in. I have worked at small startups, but so far I&apos;ve never had the opportunity to come in on the ground floor like this, so this should be a great adventure. My role is going to be that of Director of Engineering, but I expect to be wearing a lot of hats, ranging from architecture and implementation to being involved in the product direction, taking care of hosting and other IT stuff, and ultimately building a great team and helping define the company culture (although we will initially be a small core team). We will be working with some exciting technologies, including Ruby and a sprinkling of Ruby on Rails, which I am strongly looking forward to as well. Besides using a bit of Ruby at my previous job, I have mostly played with Ruby in my spare time, and I am glad about being able to finally use it again at my day job as well (though we will be pragmatic and use whatever tool makes most sense for the job at hand). I think I am officially done with Java at this point (but never say never... I am pretty sure I will at least use it again as a platform at some point in the future).&lt;/p&gt;
&lt;p&gt;Well, this blog post turned out a bit longer than expected. But don&apos;t worry, I am sure I will be busy enough at my startup that I won&apos;t have a chance to bug you with any additional long posts for a while. ;)&lt;/p&gt;</content:encoded><category>career</category><category>work</category></item><item><title>Evernote: A Promising Start</title><link>https://www.digitalhobbit.com/legacy/2008/03/15/evernote-a-promising-start/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/03/15/evernote-a-promising-start/</guid><description>After having signed up for an Evernote beta invite a while ago, I finally received one this week. Evernote is a next generation note taking service. What sets it apart from similar applications are the numerous ways of entering as well as retrieving notes. First of all there is the Evernote Website. It is simple and straightforward, and seems to be very responsive.</description><pubDate>Sat, 15 Mar 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After having signed up for an &lt;a href=&quot;http://evernote.com/&quot;&gt;Evernote&lt;/a&gt; beta invite a while ago, I finally received one this week.&lt;/p&gt;
&lt;p&gt;Evernote is a next generation note taking service. What sets it apart from similar applications are the numerous ways of entering as well as retrieving notes. First of all there is the &lt;a href=&quot;http://preview.evernote.com/&quot;&gt;Evernote Website&lt;/a&gt;. It is simple and straightforward, and seems to be very responsive. You can create as many notebooks as you want. Each notebook acts like a folder that contains individual notes as files, and can be viewed using different perspectives (such as thumbnail view or list view), much like a native file browser application like Finder or Windows Explorer.&lt;/p&gt;
&lt;p&gt;Notes can be entered and edited on the website, but there are several alternatives. For example, you can email a note to a special email address that is generated for you when you sign up. You can also use this mechanism to send notes from your mobile phone, using your provider&apos;s SMS-Email gateway. However, I have been running into some technical issues when I attempted this from my mobile phone (I&apos;m getting the following error message: &lt;em&gt;&quot;Your MSG could not be DELIVERED because InvalidPduContent&quot;&lt;/em&gt;), so I need to look into this. Curiously, sending a picture via MMS worked just fine. Speaking of pictures: Evernote&apos;s support for images is pretty amazing. It uses advanced text recognition to extract text from images, such that it becomes searchable. I have tested this with a low quality photo of a poster snapped from my mobile phone, and it worked as advertised. Very impressive!&lt;/p&gt;
&lt;p&gt;You can also use a nifty bookmarklet that allows you to either submit an entire webpage to Evernote, or just the text that you have selected.&lt;/p&gt;
&lt;p&gt;But perhaps most importantly, Evernote has a downloadable client app for both Windows and Mac. I have only tested the Mac client, which was released very recently. It seems to lag slightly behind its Windows counterpart in terms of features, but on the positive side it looks and feels like a proper Mac application rather than a quick port. It relies on a Sync feature to synchronize notes between the server and the client (either manually or in a configurable interval). Otherwise, the client offers pretty much the same functionality as the website. In addition, it comes with a clipping service that shows up in the menu bar (and registers some convenient keyboard shortcuts) and allows you to easily submit any copied text to the client, or even to clip a screenshot.&lt;/p&gt;
&lt;p&gt;Evernote also has many ways to browse notes. It has a search box that allows you to find notes using full text search, but also using other criteria. For example, notes can be tagged (much like emails in Gmail), after which you can search for them by tag (or just click on the tag in the navigation bar). Notes can also be located via various attributes, such as creation or modification date, source (website, email, mobile, etc.), or whether or not they contain images or audio. This works from both the website or the native client. Evernote also has a mobile website, which I have not tested. This should be convenient when you need to look up a note while you&apos;re on the road.&lt;/p&gt;
&lt;p&gt;Overall, I am pretty impressed with Evernote. I have played with various note taking applications, and this comes very close to perfect in terms of features. I often have ideas that I need to capture, and right now I&apos;m using a personal wiki for this purpose. However, I would prefer to work in a native application when possible, since this is generally more convenient. The combination of native client and website for Evernote is quite powerful, with a well-implemented synchronization mechanism. I just wish there were some wiki-like features, such as easy linking between individual notes. But the most important drawback is the lack of formatting options. The website only supports straight text entry, with no formatting at all. The Mac client supports rudimentary formatting (such as font, color, bold, italic, underline, alignment), but unfortunately this formatting appears to be lost when the note is uploaded to the website. The thumbnail view does show the properly formatted note, but the full view does not. And any edits on the website completely reset any formatting that might have been applied on the client. I don&apos;t require any sophisticated formatting, but at the minimum I would need support bullet lists (which neither the Mac client nor the website supports), headings, and emphasis.&lt;/p&gt;
&lt;p&gt;As it is right now, Evernote seems like a somewhat useful scratch pad to collect short notes, web clippings, etc. Particularly the mobile features might come in handy. With a bit of additional work, I think it could be extended to become a more comprehensive solution for organizing information, but right now I am going to continue using my wiki for this purpose.&lt;/p&gt;
&lt;p&gt;If you would like to see it in action, there is a short &lt;a href=&quot;http://www.evernote.com/video/&quot;&gt;Evernote Screencast&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>mobile</category><category>software</category><category>websites</category></item><item><title>github - Git Repository Hosting</title><link>https://www.digitalhobbit.com/legacy/2008/03/11/github-git-repository-hosting/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/03/11/github-git-repository-hosting/</guid><description>The distributed Git version control system has been gaining a lot of traction lately. In contrast to traditional, centralized version control systems like CVS or Subversion, Git enables developers to easily fork each other&apos;s repositories, pull patches from each other, etc.</description><pubDate>Tue, 11 Mar 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The distributed &lt;a href=&quot;http://git.or.cz/&quot;&gt;Git&lt;/a&gt; version control system has been gaining a lot of traction lately. In contrast to traditional, centralized version control systems like CVS or Subversion, Git enables developers to easily fork each other&apos;s repositories, pull patches from each other, etc. Even though I have not had a chance to use Git beyond pulling down some open source projects (such as &lt;a href=&quot;http://github.com/wycats/merb-core/tree/master&quot;&gt;Merb&lt;/a&gt;), it is clear that this enables much richer collaboration and development dynamics.&lt;/p&gt;
&lt;p&gt;In particular, &lt;a href=&quot;http://github.com/&quot;&gt;github&lt;/a&gt; seems to have quickly become a favorite service for hosting Ruby projects. github is still in invite-only beta, but it already looks very impressive. For example, forking an existing repository that is hosted on github only takes a single mouse click, and sending a pull request to the master repository or other forks is just as easy. Each repository has an RSS feed and a wiki, which turns github into a full project hosting service as opposed to just a version control service. In fact, github has been described as a &lt;a href=&quot;http://tomayko.com/weblog/2008/02/26/github-is-myspace-for-hackers&quot;&gt;social network for hackers&lt;/a&gt;. In addition, github offers convenient features such as tarball downloads.&lt;/p&gt;
&lt;p&gt;The developers had announced that public open source projects would always remain free. Today, github &lt;a href=&quot;http://github.com/blog/22-the-pricing-plans&quot;&gt;unveiled&lt;/a&gt; the detailed &lt;a href=&quot;http://github.com/plans&quot;&gt;pricing plans&lt;/a&gt;. Overall, the plans seem very reasonable. Each plan includes unlimited public repositories and public collaborators, but a limited disk space and number of private repositories and private collaborators (depending on the plan). Personally, I would have hoped for the smallest commercial plan (&lt;em&gt;Micro&lt;/em&gt;, which includes 5 private repositories and a single private collaborator) to cost less than $7, perhaps $3 - $5. Many developers that work on non-open-source projects in their spare time would presumably be interested in such a plan, but $7 seems slightly steep, given that you can get a Dreamhost hosting plan for $10 per month, which supports Subversion, website hosting, shell access, and, &lt;a href=&quot;http://wiki.dreamhost.com/Git&quot;&gt;with some effort&lt;/a&gt;, even Git hosting. Obviously the $7 github plan offers a significantly better user experience, but I am not sure if I could justify the expense as a small developer working on non (or not yet, anyways) profitable projects in their spare time.&lt;/p&gt;
&lt;p&gt;But ultimately github&apos;s main focus is clearly on open source projects, and it sure is great to have a modern alternative to Subversion based project repositories like &lt;a href=&quot;http://sourceforge.net/&quot;&gt;SourceForge&lt;/a&gt; or &lt;a href=&quot;http://rubyforge.org/&quot;&gt;RubyForge&lt;/a&gt;. In fact I went ahead and created &lt;a href=&quot;http://github.com/digitalhobbit&quot;&gt;my own forks of the various Merb sub-projects&lt;/a&gt;, in case I want to play with some Merb changes or submit additional patches. I also have some ideas (or even unfinished code) for other projects that I might end up moving to github as open source projects.&lt;/p&gt;
&lt;p&gt;I believe that one of the smaller commercial plans would also be an excellent alternative for a small startup that wants to avoid the hardware and IT headaches of dealing with their own setup in the initial phases. In fact, by combining github with a hosted issue tracking service like &lt;a href=&quot;http://www.lighthouseapp.com/&quot;&gt;Lighthouse&lt;/a&gt;, a VPS hosting service like &lt;a href=&quot;http://www.slicehost.com/&quot;&gt;SliceHost&lt;/a&gt;, and &lt;a href=&quot;http://www.google.com/a/help/intl/en/index.html&quot;&gt;Google Apps&lt;/a&gt; for email, calendaring, document collaboration, and now also &lt;a href=&quot;http://www.google.com/a/help/intl/en/users/sites.html&quot;&gt;Google Sites&lt;/a&gt; for a wiki or intranet, it should make it much easier to bootstrap a new company without a massive IT investment.&lt;/p&gt;
&lt;p&gt;I have a few github invites, so leave a comment if you&apos;d like one.&lt;/p&gt;</content:encoded><category>development</category><category>projects</category></item><item><title>iPhone SDK</title><link>https://www.digitalhobbit.com/legacy/2008/03/07/iphone-sdk/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/03/07/iphone-sdk/</guid><description>This morning, Apple finally announced details about the long-awaited iPhone SDK. The SDK is available for download starting today, and it sounds pretty intriguing! It comes with a full application stack that includes a custom version of Cocoa (Cocoa Touch), and APIs to access all the iPhone specific features, including hardware-accelerated 3D graphics, the accelerometer, camera, contacts, as well as location-awareness. This sounds a lot more complete that I expected.</description><pubDate>Fri, 07 Mar 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This morning, Apple finally announced details about the long-awaited iPhone SDK. The SDK is available for download starting today, and it sounds pretty intriguing!&lt;/p&gt;
&lt;p&gt;It comes with a full application stack that includes a custom version of Cocoa (Cocoa Touch), and APIs to access all the iPhone specific features, including hardware-accelerated 3D graphics, the accelerometer, camera, contacts, as well as location-awareness. This sounds a lot more complete that I expected.&lt;/p&gt;
&lt;p&gt;The tools side is covered very well, also: The SDK includes a custom version of the Xcode IDE, Interface Builder, Instruments (a profiler), and an iPhone Simulator, so you should be able to develop iPhone apps using essentially the same toolset as for regular OSX applications.&lt;/p&gt;
&lt;p&gt;As expected, Apple will control the distribution for all iPhone applications through their App Store. Applications can be purchased and downloaded right from the phone, or via iTunes. Developers get complete control over the pricing, and Apple offers a 70/30 revenue split (70% for the developer), which seems pretty reasonable. Developers will also be able to make their applications available for free, in which case Apple takes no cut. It sounds like Apple will generally allow any application to be published, but there are some (mostly obvious) limitations (such as pornography, VOIP over cellular connections, or anything illegal).&lt;/p&gt;
&lt;p&gt;The SDK itself is available for free on &lt;a href=&quot;http://developer.apple.com/&quot;&gt;Apple&apos;s developer website&lt;/a&gt;, although you have to have to register as an iPhone developer. However, in order to be able to submit applications to the App Store, developers need to join the $99 &lt;a href=&quot;http://developer.apple.com/iphone/program/&quot;&gt;iPhone Developer Program&lt;/a&gt;. Apparently the developer program will initially be available on a limited basis, but I assume that most developers will be accepted in to the program later. Since the App Store is not scheduled to launch until June, this does not seem like a major issue, and in the mean time the iPhone Simulator that is included in the SDK looks to be a pretty exact copy of the actual iPhone, so this will have to do.&lt;/p&gt;
&lt;p&gt;Users will need a firmware upgrade in order to run custom applications. I assume that this will be released around the same time as the App Store (although hopefully a bit sooner, for testing purposes). iPhone users will be able to upgrade for free, but iPod Touch users (like myself) will be charged a nominal fee (the exact amount has not been announced), supposedly due to differences in the way Apple accounts for the iPod Touch, since it does not come with a subscription plan.&lt;/p&gt;
&lt;p&gt;The SDK download proved to be a major pain, since Apple&apos;s website was hopelessly overloaded and it was impossible to even get the download to begin. I eventually got lucky and found the SDK on BitTorrent. Apple really should have made the 2GB download available on BitTorrent in the first place...&lt;/p&gt;
&lt;p&gt;Anyway, I&apos;m planning to play with the SDK a bit over the next few weeks or so. One thing I was hoping for is that the SDK might include support for RubyCocoa, since I&apos;m not all that thrilled about the prospect of using Objective-C (or any C-derived language for that matter...), but based on my initial research things aren&apos;t looking promising. Ruby is supported on jailbroken iPhones, so it seems like it should be feasible to support RubyCocoa as well. This will be the first thing&lt;/p&gt;
&lt;p&gt;Oh, there were a few cool game demos as well, including an iPhone version of Spore! I am most interested in building my own iPhone apps, but I am also excited to see what kind of applications and games will be released by third parties. I am currently using several useful applications on my jailbroken iPhone Touch (such as an ebook reader and an unit converter), and it seems like it should be reasonably straightforward to port these to the official SDK, so I bet that most of these applications will be available soon, either for free or for a moderate price.&lt;/p&gt;
&lt;p&gt;For more details, check out the following links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.engadget.com/2008/03/06/live-from-apples-iphone-press-conference/&quot;&gt;Engadget&apos;s live blog post from Apple&apos;s iPhone SDK press conference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.crunchgear.com/2008/03/06/live-blogging-apples-iphone-sdk-event/&quot;&gt;Another live blog post, on TechCrunch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://events.apple.com.edgesuite.net/rtp20e92/event/index.html?internal=fj2l3s9dm&quot;&gt;Full QuickTime video of the event&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.techcrunch.com/2008/03/06/iphone-20-enterprise-ready-developer-ready/&quot;&gt;A good summary on TechCrunch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category><category>mobile</category></item><item><title>Farewell, Gary Gygax</title><link>https://www.digitalhobbit.com/legacy/2008/03/04/farewell-gary-gygax/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/03/04/farewell-gary-gygax/</guid><description>I was deeply saddened to find out that Gary Gygax passed away today, after struggling with health issues for several years. Gary Gygax co-created the Dungeons &amp; Dragons role-playing game, and thereby invented the entire role-playing game genre. Like any good geek, I grew up playing role-playing games during my teens.</description><pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I was deeply saddened to find out that &lt;a href=&quot;http://en.wikipedia.org/wiki/Gary_Gygax&quot;&gt;Gary Gygax&lt;/a&gt; passed away today, after struggling with health issues for several years. Gary Gygax co-created the &lt;a href=&quot;http://en.wikipedia.org/wiki/Dungeons_%26_Dragons&quot;&gt;Dungeons &amp;#x26; Dragons&lt;/a&gt; role-playing game, and thereby invented the entire &lt;a href=&quot;http://en.wikipedia.org/wiki/Role-playing_game&quot;&gt;role-playing game&lt;/a&gt; genre.&lt;/p&gt;
&lt;p&gt;Like any good geek, I grew up playing role-playing games during my teens. Even though we did not actually play that much D&amp;#x26;D in particular, all the RPGs we played were directly descended from it, and none of them would exist without Gary Gygax. The first RPG I ever played (this must have been around 1986) was &lt;a href=&quot;http://de.wikipedia.org/wiki/Das_Schwarze_Auge&quot;&gt;Das Schwarze Auge&lt;/a&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/The_Dark_Eye&quot;&gt;The Dark Eye&lt;/a&gt;), a relatively simple German role-playing game that was strongly inspired by D&amp;#x26;D. After my friends and I grew out of this, we explored many other games. Some of the ones I fondly remember are &lt;a href=&quot;http://en.wikipedia.org/wiki/Runequest&quot;&gt;RuneQuest&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Traveller_%28role-playing_game%29&quot;&gt;Traveller&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Warhammer_Fantasy_Roleplay&quot;&gt;Warhammer Fantasy Roleplay&lt;/a&gt; (probably my all-time favorite role-playing game; not to be confused with the Warhammer table-top game), &lt;a href=&quot;http://en.wikipedia.org/wiki/Paranoia_(role-playing_game)&quot;&gt;Paranoia&lt;/a&gt; (&lt;em&gt;&quot;Trust The Computer. The Computer is Your Friend.&quot;&lt;/em&gt;), &lt;a href=&quot;http://en.wikipedia.org/wiki/Vampire:_The_Masquerade&quot;&gt;Vampire: The Masquerade&lt;/a&gt;, and &lt;a href=&quot;http://en.wikipedia.org/wiki/Kult&quot;&gt;KULT&lt;/a&gt;. We even participated in a &lt;a href=&quot;http://en.wikipedia.org/wiki/Larp&quot;&gt;Live action role-playing game&lt;/a&gt; once (yes, and I&apos;m not ashamed to admit it. :) ). We hung out at our local game store (luckily the city I grew up in was big and progressive enough to actually have a game store that stocked RPGs) and bought dice (the store owner would always give us the option to role each die against him for double-or-nothing) and miniatures.&lt;/p&gt;
&lt;p&gt;There were phases where we played every weekend, and phases where we played less, especially during the 90s, as most of us started to become more interested in going out to bars and clubs (and the opposite sex...). Still, we played at least occasionally during college, until I got married and moved to the US in 1998 (gosh, has it really been almost 10 years?) and started my first job.&lt;/p&gt;
&lt;p&gt;For some reason I never got back into role-playing after that, although the thought to make an effort to find a new group did occur to me a few times. But I still like to nostalgically think about the great, both intellectually and emotionally stimulating (and simply fun) times we&apos;ve had playing RPGs. Many of my German friends are still regularly playing role-playing games these days.&lt;/p&gt;
&lt;p&gt;And of course D&amp;#x26;D has similarly influenced computer games, and many of my favorite computer and video games (like &lt;a href=&quot;http://en.wikipedia.org/wiki/The_Bard%27s_Tale_%281985%29&quot;&gt;The Bard&apos;s Tale&lt;/a&gt;, the &lt;a href=&quot;http://en.wikipedia.org/wiki/Ultima&quot;&gt;Ultima&lt;/a&gt; series, or the &lt;a href=&quot;http://en.wikipedia.org/wiki/Elder_Scrolls&quot;&gt;Elder Scrolls&lt;/a&gt; series, not to mention the myriads of AD&amp;#x26;D computer games) would not exist without Gary Gygax.&lt;/p&gt;
&lt;p&gt;For all of this I am truly grateful. Gary Gygax, rest in peace.&lt;/p&gt;</content:encoded><category>games</category></item><item><title>Music in the 21st Century</title><link>https://www.digitalhobbit.com/legacy/2008/03/03/music-in-the-21st-century/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/03/03/music-in-the-21st-century/</guid><description>A short story about how the music industry has changed (though not all of them have recognized this yet). Earlier this evening, a Twitter message alerted me to the Ghosts instrumental album that was released by Nine Inch Nails today, completely announced. I had been curious about Trent Reznor&apos;s plans, as he had previously voiced his discontent with (and freedom from) the music industry.</description><pubDate>Mon, 03 Mar 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A short story about how the music industry has changed (though not all of them have recognized this yet).&lt;/p&gt;
&lt;p&gt;Earlier this evening, a &lt;a href=&quot;http://twitter.com&quot;&gt;Twitter&lt;/a&gt; message alerted me to the &lt;a href=&quot;http://ghosts.nin.com/&quot;&gt;Ghosts&lt;/a&gt; instrumental album that was released by Nine Inch Nails today, completely announced. I had been curious about Trent Reznor&apos;s plans, as he had previously voiced his &lt;a href=&quot;/legacy/2007/10/09/trent-reznor-sticks-it-to-the-music-industry/&quot;&gt;discontent with (and freedom from) the music industry&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So when I checked out &lt;a href=&quot;http://ghosts.nin.com/&quot;&gt;Nine Inch Nails&apos; Ghosts website&lt;/a&gt;, I was not disappointed. First of all, there&apos;s the music itself. Ghosts I - IV is an instrumental music collection - a first for NIN. I was able to listen to it right on the website, and based on my initial impression, this is quite possibly the best material that NIN has released in a long time (I wasn&apos;t a big fan of any of their albums after the 1994 release of &lt;a href=&quot;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;#x26;location=http%3A%2F%2Fwww.amazon.com%2FDownward-Spiral-Nine-Inch-Nails%2Fdp%2FB000001Y5Z&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=ur2&amp;#x26;camp=1789&amp;#x26;creative=9325&quot;&gt;The Downward Spiral&lt;/a&gt;). It certainly sounds like great music to code to, so I&apos;m uploading it to my iPod for tomorrow.&lt;/p&gt;
&lt;p&gt;But more important is how the music is being made available. The first 9 tracks (Ghosts I) are available as a free download, in 320kbps mp3s, as well as a 40-page PDF booklet. The full 36 tracks (Ghosts I - IV) can be purchased on the website for the extremely fair price of $5. A 2 CD set will be released for $10 on April 8 for those that prefer physical media. In addition, a deluxe edition and ultra-deluxe limited edition are also available for $75 and $300 respectively for those that have way too much money to spare...&lt;/p&gt;
&lt;p&gt;On a slightly sour note, the NIN website appears to have been hammered when I tried to download Ghosts I. But a few tweets later I found out that Ghosts is also &lt;a href=&quot;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;#x26;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB00158SHD8%3Fpf%5Frd%5Fm%3DATVPDKIKX0DER%26pf%5Frd%5Fs%3Dauto-sparkle%26pf%5Frd%5Fr%3D1CY18VQCBYTKKC3MRJNH%26pf%5Frd%5Ft%3D301%26pf%5Frd%5Fp%3D369077601%26pf%5Frd%5Fi%3Dnine%2520inch%2520nails%2520ghosts&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=ur2&amp;#x26;camp=1789&amp;#x26;creative=9325&quot;&gt;available for download on Amazon&lt;/a&gt; (for the same price of $5), which suffered from no such issues. :)&lt;/p&gt;
&lt;p&gt;What is interesting is that it&apos;s not just the music distribution mechanism that is changing. It is also how music is being discovered and marketed. As far as I am aware, there was no marketing around this release, or even any sort of formal announcement. Instead, music is being discovered virally, by word of mouth, blogs, and even &lt;a href=&quot;http://twitter.com&quot;&gt;Twitter&lt;/a&gt;. Interesting times!&lt;/p&gt;</content:encoded><category>entertainment</category><category>music</category></item><item><title>Ola Bini on JRuby</title><link>https://www.digitalhobbit.com/legacy/2008/02/28/ola-bini-on-jruby/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/02/28/ola-bini-on-jruby/</guid><description>Today, I attended a tech talk by ThoughtWorks&apos; Ola Bini on JRuby (JRuby Wikipedia entry here). I keep hearing great things about JRuby (even Matz has good things to say about it), and it&apos;s nice to hear this from the horse&apos;s mouth as well (Ola is one of the JRuby core developers).</description><pubDate>Thu, 28 Feb 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today, I attended a tech talk by ThoughtWorks&apos; &lt;a href=&quot;http://ola-bini.blogspot.com/&quot;&gt;Ola Bini&lt;/a&gt; on &lt;a href=&quot;http://www.jruby.org/&quot;&gt;JRuby&lt;/a&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/JRuby&quot;&gt;JRuby Wikipedia entry here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I keep hearing great things about JRuby (even &lt;a href=&quot;http://en.wikipedia.org/wiki/Yukihiro_Matsumoto&quot;&gt;Matz&lt;/a&gt; has good things to say about it), and it&apos;s nice to hear this from the horse&apos;s mouth as well (Ola is one of the JRuby core developers). Apparently the latest version is highly compatible with Ruby 1.8.6, although applications that use native C extensions are not supported. It&apos;s also impressive how far JRuby has come in terms of performance. Until about a year or so ago, it was still significantly slower than the standard Ruby 1.8 interpreter. Not only have they caught up since then, but the latest JRuby version running on the latest JVM (in server mode) is actually several times faster than the Ruby 1.9 interpreter (aka &lt;a href=&quot;http://en.wikipedia.org/wiki/YARV&quot;&gt;YARV&lt;/a&gt;), which in turn is several times faster than Ruby 1.8 (apparently up to 50x in benchmarks, but more like 1.5x on average). That&apos;s quite an achievement!&lt;/p&gt;
&lt;p&gt;The tight integration between JRuby and Java is very impressive. You can explore this by using &lt;code&gt;jirb&lt;/code&gt;, JRuby&apos;s version of &lt;code&gt;irb&lt;/code&gt;. In this console, you can use all the standard Ruby classes and constructs, as well as Java classes and libraries (Ola demoed this by creating a Swing window and a button, with a listener implemented in Ruby). It really seems quite seamless and powerful.&lt;/p&gt;
&lt;p&gt;Due to time constraints, Ola did not talk much about JRuby and Rails (I suppose his &lt;a href=&quot;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;#x26;location=http%3A%2F%2Fwww.amazon.com%2FPractical-JRuby-Rails-Web-Projects%2Fdp%2F1590598814%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1204267560%26sr%3D8-1&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=ur2&amp;#x26;camp=1789&amp;#x26;creative=9325&quot;&gt;JRuby on Rails&lt;/a&gt; book would describe this in sufficient detail), but it sounds like it is pretty well supported by now. In fact, ThoughtWorks is shipping &lt;a href=&quot;http://studios.thoughtworks.com/mingle-project-intelligence&quot;&gt;Mingle&lt;/a&gt;, a shrink-wrap agile project collaboration tool built in Rails and deployed on JRuby. Ola also cited several other large scale JRuby deployments at Oracle and SUN. In many cases, using JRuby proved to be a way in the door for development teams that wanted to use Ruby but whose IT organizations had standardized on Java and were not prepared to support another runtime.&lt;/p&gt;
&lt;p&gt;Ola mentioned the &lt;a href=&quot;http://rubyforge.org/projects/glassfishgem/&quot;&gt;GlassFish gem&lt;/a&gt; as a convenient way to deploy Rails applications using JRuby, although he recommended to mainly use it for development and testing, but not necessarily for production. There are other tools that create a WAR file for a Rails application, which can then be deployed on any standard Java application server. I did not catch the name of the tools that Ola mentioned, but &lt;a href=&quot;http://wiki.jruby.org/wiki/Goldspike&quot;&gt;Goldspike&lt;/a&gt; appears to be one of them.&lt;/p&gt;
&lt;p&gt;About 2 1/2 years ago, I prototyped a scripting engine that ran within the Java based backend for our multiplayer mobile game. At the time, I dismissed JRuby in favor of &lt;a href=&quot;http://groovy.codehaus.org/&quot;&gt;Groovy&lt;/a&gt; and &lt;a href=&quot;http://www.beanshell.org/&quot;&gt;BeanShell&lt;/a&gt; (we tried both to see which one we liked better), because JRuby was by far the slowest scripting language to run in Java. Today, there&apos;s no doubt I would have strongly considered using JRuby instead.&lt;/p&gt;
&lt;p&gt;It&apos;s weird... somehow Java still feels like a heavyweight system to me, with its compiler, JVM, app servers, etc. But in reality, JRuby is now not only faster than the native Ruby interpreter, but also has a smaller memory footprint. And because it supports proper threads (native Java threads), you should actually have even better opportunities for optimizing the deployment of your Ruby web applications (rather than having to juggle a bunch of Mongrels...)&lt;/p&gt;
&lt;p&gt;I will definitely have to take a closer look at JRuby and perhaps try it out with Merb. According to Ola, Merb is supported even though it does use some native C extensions. Sweet!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; &lt;a href=&quot;http://youtube.com/watch?v=PfnP-8XbJao&quot;&gt;Ola&apos;s JRuby tech talk is on Youtube&lt;/a&gt; now.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Heroku</title><link>https://www.digitalhobbit.com/legacy/2008/02/20/heroku/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/02/20/heroku/</guid><description>Heroku recently announced a public beta. Heroku is a Rails hosting service with a twist: They offer a fully integrated development and hosting environment. You develop your application using a web based IDE, and it gets automatically deployed to Amazon EC2. The IDE works surprisingly well. You get a typical file browser that allows you to create new files / folders or open, rename, move, or delete existing files /folders.</description><pubDate>Wed, 20 Feb 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://heroku.com/&quot;&gt;Heroku&lt;/a&gt; recently announced a public beta. Heroku is a Rails hosting service with a twist: They offer a fully integrated development and hosting environment. You develop your application using a web based IDE, and it gets automatically deployed to &lt;a href=&quot;http://aws.amazon.com/ec2&quot;&gt;Amazon EC2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The IDE works surprisingly well. You get a typical file browser that allows you to create new files / folders or open, rename, move, or delete existing files /folders. The actual editor performs syntax highlighting and automatic indentation, but does not seem to offer any other convenience features (like auto completion or snippets). Whenever you save a file, any updates are automatically deployed and appear on your website. You can choose whether your website is private (only accessible to yourself and other users you have authorized) or public (accessible to anyone), although there does not currently seem to be a way to disable the Heroku toolbar that shows up at the bottom of the page.&lt;/p&gt;
&lt;p&gt;In addition to editing your application using the Heroku website, you can both import and export your application as a tarball. You can also take snapshots at any time, and revert to these later, which should come in handy before implementing experimental changes but does not replace actual version control. The Heroku team has announced plans to implement some sort of version control integration in the future, possibly using Subversion. This would be a major boon, as it would free developers to use whatever tools they like, without having to use the cumbersome import / export process (not to mention the inherent benefits of using version control).&lt;/p&gt;
&lt;p&gt;The deployment of your application is handled in a completely transparent fashion. Behind the scenes, Heroku leverages Amazon EC2 (Elastic Compute Cloud), which is supposed to allow your application to automatically scale as needed.&lt;/p&gt;
&lt;p&gt;Right now, beta accounts are free. Heroku is still finalizing the pricing structure, but they have stated that they&apos;re hoping to implement a model similar to an electrical company, where you are charged based on the resources you have consumed. In this case, resources would be your computing cycles, bandwidth, database storage, etc. They have also stated that they are planning to keep small and low-bandwidth applications free forever. If the seamless scalability that Heroku promises actually proves to work out, this would be an ideal way to start a new application, without having to commit any money to hosting plans upfront.&lt;/p&gt;
&lt;p&gt;At this time Heroku is invitation-only, so you can either sign up on their website (although I have found that it may take a week or so to get an invite) or ask an existing member for an invitation. The &lt;a href=&quot;http://groups.google.com/group/heroku&quot;&gt;Heroku mailing list&lt;/a&gt; works great for this purpose, or feel free to leave a comment on my blog if you&apos;d like an invite.&lt;/p&gt;
&lt;p&gt;Note that beta accounts are currently restricted from initiating any outgoing connections, which makes it impossible to build many types of applications (such as fully integrated Facebook apps). You can however request for your application to be blessed, which will allow you to enter the pilot program for paid apps that support outgoing connections, custom domain names, and higher bandwidth. Heroku requests that the application be in use and under active development when requesting the blessing, although I am not sure this makes sense (certain types of apps might not be able to run at all in a meaningful fashion until they are allowed to open outgoing connections). But I am sure that the Heroku developers will use their best judgement when making this call.&lt;/p&gt;
&lt;p&gt;If you&apos;re a Rails developer, you should definitely check it out! I wonder if they are going to support other frameworks (such as Merb) in the future...&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Matz / Ruby 1.9</title><link>https://www.digitalhobbit.com/legacy/2008/02/20/matz-ruby-19/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/02/20/matz-ruby-19/</guid><description>I had the pleasure of attending a presentation by Yukihiro Matsumoto (aka &quot;Matz&quot;) on Ruby 1.9 today. I had heard that he is a very nice guy, and he definitely came across as very charismatic. He is not particularly fluid in English, and in previous interviews I had heard with him, he often used an interpreter. But I was impressed that he actually delivered the presentation (and Q&amp;A) in English.</description><pubDate>Wed, 20 Feb 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had the pleasure of attending a presentation by &lt;a href=&quot;http://en.wikipedia.org/wiki/Yukihiro_Matsumoto&quot;&gt;Yukihiro Matsumoto (aka &quot;Matz&quot;)&lt;/a&gt; on Ruby 1.9 today. I had heard that he is a very nice guy, and he definitely came across as very charismatic. He is not particularly fluid in English, and in previous interviews I had heard with him, he often used an interpreter. But I was impressed that he actually delivered the presentation (and Q&amp;#x26;A) in English.&lt;/p&gt;
&lt;p&gt;He mainly talked about Ruby 1.9 and some of the improvements as well as incompatibilities that it is going to bring. I am not going to summarize those here, but a good summary appears to be &lt;a href=&quot;http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9&quot;&gt;here&lt;/a&gt; (note: this site appears to be down right now; use the &lt;a href=&quot;http://209.85.173.104/search?q=cache:uR4hIIEnyYsJ:eigenclass.org/hiki.rb%3FChanges%2Bin%2BRuby%2B1.9+ruby+1.9&amp;#x26;hl=en&amp;#x26;ct=clnk&amp;#x26;cd=3&amp;#x26;gl=us&quot;&gt;Google cached version&lt;/a&gt; instead).&lt;/p&gt;
&lt;p&gt;One of the things that stuck out for me was that Enumerator is now an inherent part of the core and no longer a module that needs to be required. Even more importantly though, Enumerators can now be chained together. For example, you were previously able to call &lt;code&gt;each_with_index&lt;/code&gt; to iterate over the elements of a collection and their corresponding index at the same time, but you could not apply this to other methods provided by the Enumerable module, such as &lt;code&gt;map&lt;/code&gt;. In Ruby 1.9, you can achieve this by chaining several Enumerators like this: &lt;code&gt;[1,2,3,4].map.with_index {|x, i| ...}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;And of course there&apos;s the new Ruby VM (YARV), which is supposed to bring some speed increases (up to 50x in extreme cases, but Matz expects more like 1.5x-2x on average). But then again, there are other related projects such as JRuby or Rubinius.&lt;/p&gt;
&lt;p&gt;Anyway, I have not really followed Ruby 1.9 development much, but I might have to check it out a bit. Oh, it also sounds like Ruby 2.0 is not that far off any more (probably coming out some time this year)...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; &lt;a href=&quot;http://youtube.com/watch?v=oEkJvvGEtB4&quot;&gt;Matz&apos;s talk is on Youtube&lt;/a&gt; now. You can even see me (or at least the back of my head) at the beginning and end of the talk, in the second row, towards the right. :)&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Goodbye HTML, Hello Markdown</title><link>https://www.digitalhobbit.com/legacy/2008/02/18/goodbye-html-hello-markdown/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/02/18/goodbye-html-hello-markdown/</guid><description>Yesterday I set up Markdown support for my blog, as I was getting tired of typing , , etc. I&apos;ve had my blog for almost four years now, and I can&apos;t believe that I have not done this before. It finally allows me to focus on the actual content while I&apos;m writing a blog post, without having to contort my fingers to type the necessary HTML tags.</description><pubDate>Mon, 18 Feb 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday I set up &lt;a href=&quot;http://daringfireball.net/projects/markdown/&quot;&gt;Markdown&lt;/a&gt; support for my blog, as I was getting tired of typing &lt;code&gt;&amp;#x3C;li&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;a href=&quot;...&quot;&gt;&lt;/code&gt;, etc. I&apos;ve had my blog for almost four years now, and I can&apos;t believe that I have not done this before. It finally allows me to focus on the actual content while I&apos;m writing a blog post, without having to contort my fingers to type the necessary HTML tags.&lt;/p&gt;
&lt;p&gt;I&apos;m using the &lt;a href=&quot;http://michelf.com/projects/php-markdown/&quot;&gt;PHP Markdown&lt;/a&gt; script, which can be used standalone but also functions as a WordPress plugin. You simply copy the script into your &lt;code&gt;wp-content\plugins&lt;/code&gt; folder, activate it on the Plugins tab, and you&apos;re all set.&lt;/p&gt;
&lt;p&gt;I am currently evaluating &lt;a href=&quot;http://www.red-sweater.com/marsedit/&quot;&gt;MarsEdit&lt;/a&gt;, a very nice blogging application for OSX. When configuring your blog in MarsEdit, you can set the &lt;em&gt;Preview Text Filter&lt;/em&gt; to &lt;em&gt;Markdown&lt;/em&gt;, which will give you a nice realtime preview of your post, the same way it is going to appear on your blog.&lt;/p&gt;
&lt;p&gt;See here for a &lt;a href=&quot;http://michelf.com/projects/php-markdown/concepts/&quot;&gt;brief overview of Markdown syntax&lt;/a&gt;, and here for the full &lt;a href=&quot;http://daringfireball.net/projects/markdown/syntax&quot;&gt;Markdown syntax reference&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>blogging</category><category>software</category></item><item><title>Merb 0.9.0 Released</title><link>https://www.digitalhobbit.com/legacy/2008/02/18/merb-090-released/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/02/18/merb-090-released/</guid><description>Merb 0.9.0 was released 5 days ago. It looks like the download instructions on the homepage have also been updated for 0.9.0. You can now install it as a gem or from source, by checking out the code from the Merb Git repository. Aside from a more modular design, Merb 0.9 also introduces a more flexible application layout. Previously, the layout was essentially the same as for a Rails app.</description><pubDate>Mon, 18 Feb 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Merb 0.9.0 was &lt;a href=&quot;http://www.gweezlebur.com/2008/2/14/merb-0-9-0-released-kinda&quot;&gt;released&lt;/a&gt; 5 days ago. It looks like the &lt;a href=&quot;http://merbivore.com/get_merb.html#trunk&quot;&gt;download instructions on the homepage&lt;/a&gt; have also been updated for 0.9.0. You can now install it as a gem or from source, by checking out the code from the &lt;a href=&quot;http://github.com/wycats&quot;&gt;Merb Git repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Aside from a more modular design, Merb 0.9 also introduces a more flexible application layout. Previously, the layout was essentially the same as for a Rails app. This is still the default, but if you create your app using &lt;code&gt;merb-gen my_app --very-flat&lt;/code&gt; or &lt;code&gt;--flat&lt;/code&gt;, you get a significantly smaller layout that might be better suited for small applications.&lt;/p&gt;
&lt;p&gt;In fact, a &lt;code&gt;--very-flat&lt;/code&gt; application consists of a single file with the following contents:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Merb::Router.prepare do |r|
  r.match(&apos;/&apos;).to(:controller =&gt; &apos;my_app&apos;, :action =&gt;&apos;index&apos;)
end

class MyApp &amp;#x3C; Merb::Controller
  def index
    &quot;hi&quot;
  end
end

Merb::Config.use { |c|
  c[:framework]           = {},
  c[:session_store]       = &apos;none&apos;,
  c[:exception_details]   = true
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&apos;s not quite as tight as a true micro framework like &lt;a href=&quot;http://sinatra.rubyforge.org/&quot;&gt;Sinatra&lt;/a&gt;, but it&apos;s pretty close. For very small applications, I have occasionally used Ruby&apos;s built-in &lt;a href=&quot;http://www.webrick.org/&quot;&gt;WEBrick&lt;/a&gt; server, but a very flat Merb app seems quite a bit simpler, as well as more future-proof, as this can be easily transformed into a full app with a more sophisticated layout if the app grows beyond its initial minimal scope.&lt;/p&gt;
&lt;p&gt;Oh, by the way: I have contributed my first (admittedly tiny) patch to Merb (&lt;a href=&quot;http://github.com/wycats/merb-core/commit/6be99f54af744cc84d3403cff5e11086b7f7496b&quot;&gt;part 1&lt;/a&gt;, &lt;a href=&quot;http://github.com/wycats/merb-core/commit/3ec8a0d67d96ea932f2b2d32a014404a5bda519f&quot;&gt;part 2&lt;/a&gt;), which adds support for dynamic layouts by allowing you to write something like &lt;code&gt;layout :determine_layout&lt;/code&gt; in your controller to specify a method that is used to dynamically determine the layout to use, rather than hardcoding it on the controller level or having to pass it in each &lt;code&gt;render&lt;/code&gt; call (yes, this works just like in Rails).&lt;/p&gt;</content:encoded><category>development</category><category>projects</category></item><item><title>Side Projects and Passion</title><link>https://www.digitalhobbit.com/legacy/2008/02/18/side-projects-and-passion/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/02/18/side-projects-and-passion/</guid><description>Earlier today, Alex Payne blogged about side projects, which prompted me to write down my own thoughts on this matter, as I had been planning a blog post on this subject for a while.</description><pubDate>Mon, 18 Feb 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Earlier today, Alex Payne blogged about &lt;a href=&quot;http://www.al3x.net/2008/02/on-side-projects.html&quot;&gt;side projects&lt;/a&gt;, which prompted me to write down my own thoughts on this matter, as I had been planning a blog post on this subject for a while. Alex states some of the benefits of having a side project, such as keeping you learning, dealing with different types of problems than during the day job, having fun, making new friends, and potentially even being profitable (all of which I completely agree with). Alex also mentions that side projects are a way of showing that you care and that they ask candidates about this in their job interviews at &lt;a href=&quot;http://twitter.com&quot;&gt;Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I tend to ask the same question when interviewing engineering candidates, and it&apos;s definitely a big plus when a candidate starts to excitedly talk about a side project they&apos;re working on. However, I would tend to generalize this a  bit further. Ultimately, I am looking for a strong sign of passion, but there are several equally relevant things that a developer might be passionate about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Coding&lt;/strong&gt;, which might manifest itself in a side project (either a project of their own, or contributing to another project, perhaps open source).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Technology&lt;/strong&gt;. Perhaps they like to examine the latest web or desktop application frameworks, testing tools, or programming languages. They might not be working on a concrete project in their spare time, but they clearly like to follow what&apos;s going on in the software development arena. They probably get their actual coding fix at work, but being aware of the technologies out there will broaden their horizon and help them in making informed decisions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Software Engineering&lt;/strong&gt;, i.e. things like best practices, process (such as Agile Development), or design patterns. They might not be interested in working on an actual spare time project (or lacking the time to do so due to family obligations), but they love to keep up with the software engineering discipline by reading books and blogs, discussing these subjects with their peers, etc.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Domain&lt;/strong&gt; relevant to the job. For example, my previous job was at a &lt;a href=&quot;http://www.digitalchocolate.com&quot;&gt;mobile games company&lt;/a&gt;, and being able to convey passion (and ideally knowledge) about either the mobile industry or gaming was definitely an advantage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Personally, I tend to go through phases. I always have ideas about various potential projects, and I maintain a personal wiki that allows me to capture and flesh out these ideas at any time. Sometimes an idea from this list seems exciting enough (either immediately or after maturing for a while) that I start playing with it by writing some code, although admittedly very few of these projects end up seeing the light of day. At other times, I spend more time exploring various tools and frameworks, or perhaps learning a new programming language. Granted, this is often triggered by a concrete project, but I often end up embarking on a mission to try out various new web or desktop frameworks, etc., and the concrete project gets left by the wayside for a while. Yet other times (for example during times in the past were I had very little spare time due to a long commute and a newborn daughter) I have spent very little time in front of the computer and a lot of time reading software engineering books instead. But a domain that I can relate to and get excited about is generally something I look for in all my jobs. Life is too short to work on boring applications...&lt;/p&gt;
&lt;p&gt;It can be difficult during the short time frame of an interview or even a phone screen, but it&apos;s worth trying to figure out what makes a candidate tick. An actual side project is a huge plus in my opinion. If they don&apos;t have a side project (or at least a good idea for a spare time project that they would work on if they had the time), and they don&apos;t manage to convey any enthusiasm for technology or the domain of the position they&apos;re interviewing for, that&apos;s definitely a big red flag. I am always surprised when I come across such a candidate, but it happens way more often than I would expect...&lt;/p&gt;</content:encoded><category>career</category><category>development</category></item><item><title>Technology Update (Part 2: Merb &amp; More)</title><link>https://www.digitalhobbit.com/legacy/2008/02/13/technology-update-part-2-merb-more/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/02/13/technology-update-part-2-merb-more/</guid><description>So where was I? Ah yes, in yesterday&apos;s post I left off with me going back to Ruby for my personal projects. My standard choice for web development has been Ruby on Rails for a while now (although I haven&apos;t had a chance to try Rails 2.0 yet). However, lately I&apos;ve been playing with Merb.</description><pubDate>Wed, 13 Feb 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So where was I? Ah yes, in &lt;a href=&quot;/legacy/2008/02/12/technology-update-part-1-catching-up/&quot;&gt;yesterday&apos;s post&lt;/a&gt; I left off with me going back to Ruby for my personal projects.&lt;/p&gt;
&lt;p&gt;My standard choice for web development has been &lt;a href=&quot;http://rubyonrails.com&quot;&gt;Ruby on Rails&lt;/a&gt; for a while now (although I haven&apos;t had a chance to try Rails 2.0 yet). However, lately I&apos;ve been playing with &lt;a href=&quot;http://merbivore.com/&quot;&gt;Merb&lt;/a&gt;. Merb is essentially a lightweight Rails replacement, originally built to address some specific (largely bloat and performance related) concerns. For Rails developers, Merb will seem quite familiar (at least superficially), as it uses the same application layout as Rails, with the usual directories for controllers and views, etc. But unlike Rails, the core framework is very lightweight, with additional functionality being provided by plugins. Unlike Rails&apos; slightly awkward plugin framework, Merb plugins are actually just standard Ruby gems that can be installed either as part of the Rails installation or inside the Merb application. In particular, Merb does not include an ORM framework for its model layer. There is a plugin that adds support for &lt;a href=&quot;http://ar.rubyonrails.org/&quot;&gt;ActiveRecord&lt;/a&gt;, the ORM framework that Rails uses as well. But as an alternative, Merb also offers plugins for &lt;a href=&quot;http://datamapper.org/&quot;&gt;DataMapper&lt;/a&gt; and &lt;a href=&quot;http://sequel.rubyforge.org/&quot;&gt;Sequel&lt;/a&gt;. And of course very simple applications might not need a database at all.&lt;/p&gt;
&lt;p&gt;I am particularly interested in DataMapper, which offers several improvements over ActiveRecord. Most importantly, it is thread-safe. But it also moves the definition of a model&apos;s properties from the database into the Ruby class. The fact that ActiveRecord infers all attributes from the database has always seemed slightly unnatural to me, so moving the definition into Ruby code makes more sense to me. I do however miss ActiveRecord&apos;s support for migrations (anyone remember when ActiveRecord did not have this feature yet and how big a difference it made when it was released?).&lt;/p&gt;
&lt;p&gt;One thing I should mention is that Merb is currently undergoing a major transformation. The 0.5 version (which &lt;a href=&quot;http://merbivore.com&quot;&gt;the Merb website&lt;/a&gt; still refers to) has been end-of-lifed (0.5.3 was the final release), and development has shifted to the 0.9 version. 0.9 takes an even more radical approach: The existing Merb gem will be split into merb-core (the actual core, very lightweight), merb-more (support for generators, mailers, the &lt;a href=&quot;http://haml.hamptoncatlin.com/&quot;&gt;Haml&lt;/a&gt; template language, etc.), and merb-plugins (things like ORM framework support). Merb is also adopting the &lt;a href=&quot;http://rack.rubyforge.org/&quot;&gt;Rack&lt;/a&gt; interface, which is becoming the standard way for Ruby web applications to plug into any compatible web servers (similar to Python&apos;s &lt;a href=&quot;http://wsgi.org/wsgi&quot;&gt;WSGI&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The 0.9 release is expected to come out any day now, and you can follow its development on &lt;a href=&quot;http://github.com/wycats&quot;&gt;github&lt;/a&gt; (Merb shifted from Subversion to Git) and &lt;a href=&quot;http://merb.lighthouseapp.com&quot;&gt;the Lighthouse bug tracker&lt;/a&gt;. If you want to get more involved with Merb, Michael Ivey wrote an interesting two-part article on &lt;a href=&quot;http://gweezlebur.com/2008/2/1/so-you-want-to-contribute-to-merb-core-part-1&quot;&gt;contributing to Merb&lt;/a&gt; (and &lt;a href=&quot;http://gweezlebur.com/2008/2/9/contributing-to-merb-part-2&quot;&gt;part two&lt;/a&gt;). There is also a pretty active and helpful community on IRC (#merb on Freenode). Merb was originally implemented by &lt;a href=&quot;http://brainspl.at/&quot;&gt;Ezra Zygmuntowicz&lt;/a&gt;, who founded the &lt;a href=&quot;http://www.engineyard.com/&quot;&gt;Engine Yard&lt;/a&gt; hosting service, and with the recent &lt;a href=&quot;http://www.engineyard.com/2008/1/11/engine-yard-benchmark-capital&quot;&gt;investment into Engine Yard&lt;/a&gt;, Merb (as well as other Engine Yard supported apps such as &lt;a href=&quot;http://rubini.us/&quot;&gt;Rubinius&lt;/a&gt;) now has several dedicated developers working on it and seems to have a bright future.&lt;/p&gt;
&lt;p&gt;Right now I am using Merb to build a simple Facebook application. I&apos;ll blog more about this later, but so far it seems like a good choice for this type of application. The transition from Rails is relatively easy (although this is likely more complicated if you are relying on a lot of the Rails magic such as the various helper classes), and the Merb community is very helpful. Deploying a Merb app is not much different from deploying a Rails app. I am currently deploying my Merb app-in-progress via &lt;a href=&quot;http://capify.org/&quot;&gt;Capistrano&lt;/a&gt; to &lt;a href=&quot;https://manage.slicehost.com/customers/new?referrer=237062620&quot;&gt;SliceHost&lt;/a&gt; and running on &lt;a href=&quot;http://nginx.net/&quot;&gt;Nginx&lt;/a&gt; and &lt;a href=&quot;http://mongrel.rubyforge.org/&quot;&gt;Mongrel&lt;/a&gt; (mainly following &lt;a href=&quot;http://www.benr75.com/articles/2007/12/24/taking_merb_to_production_nginx_evented_mongrel_capistrano&quot;&gt;these instructions&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In my current application, I am also giving &lt;a href=&quot;http://haml.hamptoncatlin.com/&quot;&gt;Haml&lt;/a&gt; a shot for the first time. It takes some getting used to (after being indoctrinated with HTML for over a decade...), but you quickly learn to appreciate its elegance and conciseness (it really makes you realize how much redundancy HTML carries around).&lt;/p&gt;
&lt;p&gt;One thing I haven&apos;t tried yet is &lt;a href=&quot;http://rspec.info/&quot;&gt;RSpec&lt;/a&gt; (so far I&apos;ve been using good old-fashioned &lt;a href=&quot;http://www.ruby-doc.org/stdlib/libdoc/test/unit/rdoc/classes/Test/Unit.html&quot;&gt;Test::Unit&lt;/a&gt;), but the trend seems to go towards RSpec, so I&apos;ll have to check it out one of these days. It&apos;s amazing how quickly these technologies shift in the very dynamic Ruby world, and sometimes quite hard to keep up when I&apos;m only using it occasionally in my spare time...&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Technology Update (Part 1: Catching Up)</title><link>https://www.digitalhobbit.com/legacy/2008/02/12/technology-update-part-1-catching-up/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/02/12/technology-update-part-1-catching-up/</guid><description>It&apos;s been a while since I last blogged about any technologies I&apos;ve been playing with, so I figured I&apos;m due for an update. I am going to split this into a two-part series: First I will play catch up and talk about the technologies that I&apos;ve played with over the past 6 months or so.</description><pubDate>Tue, 12 Feb 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been a while since I last blogged about any technologies I&apos;ve been playing with, so I figured I&apos;m due for an update. I am going to split this into a two-part series: First I will play catch up and talk about the technologies that I&apos;ve played with over the past 6 months or so. In the second article, I will go over some of the technologies that I&apos;m currently exploring, or that I am planning to explore next.&lt;/p&gt;
&lt;p&gt;Last Summer, I was &lt;a href=&quot;/legacy/2007/07/09/my-dynamic-dilemma/&quot;&gt;contemplating getting into Python&lt;/a&gt;, which I had used briefly at my job. I had been more of a Ruby fan up until then, but I figured I&apos;d give Python a chance and try to focus on a single scripting language. Therefore, I decided to explore some of the more popular Python web frameworks. I am not going to go into great detail here, but below are some brief notes. Also keep in mind that it&apos;s been about 6 months since I&apos;ve played with these, and that some of them are evolving rapidly, so the situation has likely changed quite a bit.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://turbogears.org/&quot;&gt;TurboGears&lt;/a&gt;&lt;/strong&gt; combines several components (such as the &lt;a href=&quot;http://www.sqlobject.org&quot;&gt;SQLObject&lt;/a&gt; ORM library, the &lt;a href=&quot;http://www.kid-templating.org/&quot;&gt;Kid&lt;/a&gt; templating system, and the &lt;a href=&quot;http://www.mochikit.com/index.html&quot;&gt;MochKit&lt;/a&gt; JavaScript library) into a full web application stack. This seems very promising, but when I looked at TurboGears, its future appeared to be a bit uncertain, which is why I decided not to explore it in more detail. Since then, the team has announced that the 2.0 version is going to be based on the Pylons framework, but I am a bit unclear on what functionality TurboGears would add on top of Pylons (which itself combines multiple components into a web app stack).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://pylonshq.com/&quot;&gt;Pylons&lt;/a&gt;&lt;/strong&gt;: I really like the philosophy of this framework. Instead of a full, tightly integrated stack, Pylons mainly consists of a lightweight core that integrates with other best-of-breed libraries to form a custom stack. Instead of being tied to a built-in ORM framework, Pylons supports either &lt;a href=&quot;http://www.sqlalchemy.org/&quot;&gt;SQLAlchemy&lt;/a&gt; or &lt;a href=&quot;http:/www.sqlobject.org/&quot;&gt;SQLObject&lt;/a&gt;. It also supports many templating frameworks, such as &lt;a href=&quot;http://www.makotemplates.org/&quot;&gt;Mako&lt;/a&gt; or &lt;a href=&quot;http://genshi.edgewall.org/&quot;&gt;Genshi&lt;/a&gt;, and of course AJAX helpers like &lt;a href=&quot;http://prototype.conio.net/&quot;&gt;Prototype&lt;/a&gt; or &lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery&lt;/a&gt; can be plugged in as well. I really wanted to like Pylons, but in my brief experiments things weren&apos;t quite so easy to plug in as I had hoped, requiring modifications to various Pylons files (the instructions for which I had to hunt down on the web and in mailing lists). If it can overcome this limitation and evolve into a slightly more coherent framework where subcomponents can be cleanly picked &quot;a la carte&quot;, this would be quite promising. However, it looks like the last release (0.9.6.1) was in September of 2007, so there does not seem to be much momentum at this point...&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.djangoproject.com/&quot;&gt;Django&lt;/a&gt;&lt;/strong&gt; has been gaining a lot of traction and is being hailed as the &lt;a href=&quot;http://rubyonrails.com/&quot;&gt;&quot;Ruby on Rails&quot;&lt;/a&gt; for Python. In my brief experiments, it definitely seemed to have a lot of potential. Unlike Pylons, Django includes a full web application stack. It includes its own ORM support (pluggable ORM support would have been nice, as both SQLObject and SQLAlchemy seem to be powerful and mature) and a (deliberately) very limited template language, but other templating systems can apparently be plugged in as well. The documentation is pretty good (and the &lt;a href=&quot;http://www.amazon.com/gp/product/1590597257?ie=UTF8&amp;#x26;tag=sfgeek-20&amp;#x26;linkCode=as2&amp;#x26;camp=1789&amp;#x26;creative=9325&amp;#x26;creativeASIN=1590597257&quot;&gt;first Django book&lt;/a&gt; was published two months ago). It is however lacking some of the convenience of Rails that I have come to accept as standard, such as support for database migrations or easy deployment via &lt;a href=&quot;http://www.capify.org/&quot;&gt;Capistrano&lt;/a&gt;. The last official release (0.96) was in April of 2007, which is a while ago... Still, Django seems like a popular web framework in the Python community, and I might very well take another look at this at some point in the future.
This is where we get to the somewhat anticlimactic resolution of this post... Ultimately, I realized that I was happier working with Ruby and Ruby on Rails. Although Python is a perfectly fine language, I still prefer Ruby. And there are just too many convenient features that I had gotten used to in Rails (such as migrations and Capistrano) that made it difficult for me to pick one of the Python frameworks over Rails. Therefore, I decided to continue using Ruby and Ruby on Rails for my personal projects for the time being.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&apos;re an experienced Python programmer, any of the frameworks above are certainly worth a look, though.&lt;/p&gt;
&lt;p&gt;In my next post, I will go over some of the technologies that I am playing with right now, or planning to explore in the future.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Get paid to interview for jobs?</title><link>https://www.digitalhobbit.com/legacy/2008/01/22/get-paid-to-interview-for-jobs/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/01/22/get-paid-to-interview-for-jobs/</guid><description>Today, TechCrunch posted an article about a stealth job site that makes companies pay candidates to interview with them.</description><pubDate>Tue, 22 Jan 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today, TechCrunch posted an article about a &lt;a href=&quot;http://www.techcrunch.com/2008/01/22/stealth-job-site-notchup-makes-companies-pay-to-interview-you/&quot;&gt;stealth job site that makes companies pay candidates to interview with them&lt;/a&gt;. &lt;a href=&quot;http://www.notchup.com&quot;&gt;NotchUp&lt;/a&gt; is currently in beta and invitation-only, but apparently the site will allow candidates to set their own price (although a calculator is provided that suggests a price based on experience, current salary, etc.), in an attempt to lure the kind of passive job seekers that many companies would be interested in finding.&lt;/p&gt;
&lt;p&gt;This is certainly innovative, trying to solve a real problem, and I like the idea, but ultimately I have a hard time imagining this working. I don&apos;t doubt at all that potential job seekers (even ones that are not actively looking for a job) will be tempted to put their resume up on NotchUp. But how are companies supposed to tell the true, previously passive rock-star candidates from the legions of mediocre candidates or even worse, candidates out to make a quick buck by exploiting the NotchUp system? It sounds like they are going to implement some sort of ratings system to prevent abuse, but I remain skeptical. I am also curious about the logistics. Most companies perform a phone screen before inviting candidates for an in-person interview. Do candidates get paid if they don&apos;t pass the phone screen? The full amount or just a fraction? Or do only in-person interviews count (which would be open for abuse on the employer&apos;s side by subjecting candidates to a longer and more thorough phone screen)?&lt;/p&gt;
&lt;p&gt;If all these obstacles can be avoided, this might turn out to be interesting from the employers&apos; perspectives, although I still wonder if small startups would be willing to pay $600 per candidate (especially given that presumably only 10-25% of interview candidates actually end up getting a job offer, depending on the quality and rigidity of the resume and phone screens). Then again, paying 10 times $600 for 10 interview candidates is likely still a lot cheaper than paying a recruiter.&lt;/p&gt;
&lt;p&gt;Oh, it seems like the site is still having some stability issues: Somebody posted the NochUp beta username / password on &lt;a href=&quot;http://www.techcrunch.com/2008/01/22/stealth-job-site-notchup-makes-companies-pay-to-interview-you/&quot;&gt;TechCrunch&lt;/a&gt;, and now the website keeps timing out. But I guess that&apos;s why it&apos;s supposed to be a private beta, so perhaps we should cut them some slack... ;)&lt;/p&gt;
&lt;p&gt;Anyway, it will be interesting to keep an eye on how this shapes up.&lt;/p&gt;</content:encoded><category>career</category><category>websites</category></item><item><title>Twitter</title><link>https://www.digitalhobbit.com/legacy/2008/01/22/twitter/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2008/01/22/twitter/</guid><description>As you may have noticed, I haven&apos;t been blogging much lately. I am hoping to change this and start posting more regularly again. In the mean time, I have adopted Twitter, so please feel free to follow my Twitter stream.</description><pubDate>Tue, 22 Jan 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As you may have noticed, I haven&apos;t been blogging much lately. I am hoping to change this and start posting more regularly again. In the mean time, I have adopted Twitter, so please feel free to follow &lt;a href=&quot;http://twitter.com/digitalhobbit&quot;&gt;my Twitter stream&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>Best Wishes for Terry Pratchett</title><link>https://www.digitalhobbit.com/legacy/2007/12/15/best-wishes-for-terry-pratchett/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/12/15/best-wishes-for-terry-pratchett/</guid><description>A few days ago, fantasy author Terry Pratchett announced some sad news on Josh Kirby&apos;s blog (in a post titled &quot;An Embuggerance&quot;). Apparently he has been diagnosed with a rare, early onset form of Alzheimer&apos;s.</description><pubDate>Sat, 15 Dec 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few days ago, fantasy author &lt;a href=&quot;http://www.paulkidby.com/news/index.html&quot;&gt;Terry Pratchett announced some sad news on Josh Kirby&apos;s blog&lt;/a&gt; (in a post titled &quot;An Embuggerance&quot;). Apparently he has been diagnosed with a rare, early onset form of Alzheimer&apos;s. His blog post sounds optimistic under the circumstances:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Folks,&lt;/p&gt;
&lt;p&gt;I would have liked to keep this one quiet for a little while, but because of upcoming conventions and of course the need to keep my &gt; publishers informed, it seems to me unfair to withhold the news.  I have been diagnosed with a very rare form of early
onset Alzheimer&apos;s, which lay behind this year&apos;s phantom &quot;stroke&quot;.&lt;/p&gt;
&lt;p&gt;We are taking it fairly philosophically down here and possibly with a mild optimism.  For now work is continuing on the completion of &gt; Nation and the basic notes are already being laid down for Unseen Academicals. All other things being equal, I
expect to meet most current and, as far as possible, future commitments but will discuss things with the various organisers.  Frankly, &gt; I would prefer it if people kept things cheerful, because I think there&apos;s time for at least a few more books yet :o)&lt;/p&gt;
&lt;p&gt;Terry Pratchett&lt;/p&gt;
&lt;p&gt;PS  I would just like to draw attention to everyone reading the above that this should
be interpreted as &apos;I am not dead&apos;.  I will, of course, be dead at some future point, as
will everybody else.  For me, this maybe further off than you think - it&apos;s too soon to tell.
I know it&apos;s a very human thing to say &quot;Is there anything I can do&quot;, but in this case I
would only entertain offers from very high-end experts in brain chemistry.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Terry Pratchett has been one of my favorite authors ever since I first discovered his &lt;a href=&quot;http://en.wikipedia.org/wiki/Discworld&quot;&gt;Discworld&lt;/a&gt; series about 20 years ago, and his cheerful satirism has made my life richer numerous times. I wish him all the best and sincerely hope he pulls through this.&lt;/p&gt;</content:encoded><category>books</category></item><item><title>Leopard: First Impressions</title><link>https://www.digitalhobbit.com/legacy/2007/10/29/leopard-first-impressions/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/10/29/leopard-first-impressions/</guid><description>So I went out and bought Leopard last Friday when it was released. I even got a free T-Shirt for being one of the first 500 customers at my Apple store. This was the first time I can think of that I ever went out and bought an OS on its release day (or any piece of software for that matter, perhaps aside from a computer game or two).</description><pubDate>Mon, 29 Oct 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So I went out and bought Leopard last Friday when it was released. I even got a free T-Shirt for being one of the first 500 customers at my Apple store. This was the first time I can think of that I ever went out and bought an OS on its release day (or any piece of software for that matter, perhaps aside from a computer game or two). I was worried there might be a long line, but my Apple store was pretty deserted (this was at 8PM). Maybe I just had the right instinct to go to the much smaller store at Stanford Shopping Center rather than the one on University Ave.&lt;/p&gt;
&lt;p&gt;Regardless, I installed Leopard the same day, opting for a fresh install instead of an update. The install was very smooth, and about an hour later I had a nice upgraded Leopard system.&lt;/p&gt;
&lt;p&gt;There are plenty of in-depth Leopard reviews out there, so I&apos;ll refrain from boring you with another full review (aside from the fact that I haven&apos;t played with Leopard enough to warrant a full review). Instead, here are a few bullet items:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New Finder:&lt;/strong&gt; I love it! The new aesthetics are quite pleasing, but it also packs some nice new features. Quick view (triggered by pressing &apos;Space&apos; when a file is selected) is very convenient. Cover flow mode should be useful as well, although I probably don&apos;t manage enough documents on my system to really benefit from this (since most of my work is online these days). It has a &lt;a href=&quot;http://www.drury.net.nz/2007/10/26/leopard-easter-egg/&quot;&gt;neat Easter Egg&lt;/a&gt;, by the way. :) The new sidebar is well organized and deals well with network shares. I haven&apos;t used the new search shortcuts yet, but they seem convenient. Finder now includes a Search box at the top. This itself is useful, but the fact that the search results are global by default (as opposed to limited to the open folder) is confusing to me. I&apos;ll have to figure out a way to change this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Dock:&lt;/strong&gt; I&apos;m still making up my mind about this, but so far my sentiments are more on the negative side. The visual mirror effect is nice and the dock locks pretty polished, but this probably gets old very quick. Running applications are now indicated with a small blue dot underneath, which is hard to spot. It also takes up more vertical space, which is quite valuable on a widescreen display. I might end up moving my dock to the side. It does not use the new 3D look in that mode and actually looks quite nice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stacks:&lt;/strong&gt; Definitely a nice feature and some cute eye candy. Makes for a pretty application menu if you drag your Applications folder to the dock. I only wish there was a way to recurse into subfolders in that mode, perhaps by hovering over them with the mouse for half a second.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safari 3.0:&lt;/strong&gt; Probably warrants its own blog post at some point, but I haven&apos;t really used it enough at this point (still loving &lt;a href=&quot;http://www.caminobrowser.org&quot;&gt;Camino&lt;/a&gt;). But this is a significant upgrade and I&apos;ll have to take it for a serious spin one of these days. The new tab functionality works great, including dragging tabs, a feature that I miss in Camino (and that Firefox has had for ages). Safari finally has an incremental find functionality, which is very well implemented. It also seems a lot snappier than the previous version.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;: You can now very easily turn part of any website into a Dashboard, simply by selecting it in Safari. This feature works as advertised and should prove to be very useful.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spaces:&lt;/strong&gt; Nothing ground breaking (after all virtual desktops have been standard in Linux for over a decade...), but still a very elegant and nicely integrated implementation of a virtual desktop.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was originally going to talk about the developer tools and particularly the improved Ruby support, but this post is already getting much longer than I intended, plus I haven&apos;t had a chance to test drive the new RubyCocoa support. So expect a follow-up post on this topic soon.&lt;/p&gt;</content:encoded><category>software</category></item><item><title>1.5GB for a Printer Driver???</title><link>https://www.digitalhobbit.com/legacy/2007/10/28/15gb-for-a-printer-driver/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/10/28/15gb-for-a-printer-driver/</guid><description>Before I start blogging about OSX Leopard itself, I have to voice one short rant: During the installation (I opted for a fresh install rather than an upgrade), I selected &quot;Customize&quot;, and I&apos;m sure glad I did. It turns out that the default installation includes all printer drivers.</description><pubDate>Sun, 28 Oct 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Before I start blogging about OSX Leopard itself, I have to voice one short rant:&lt;/p&gt;
&lt;p&gt;During the installation (I opted for a fresh install rather than an upgrade), I selected &quot;Customize&quot;, and I&apos;m sure glad I did. It turns out that the default installation includes all printer drivers. This in itself isn&apos;t a bad thing (or at least it shouldn&apos;t have to be), but then I noticed how much space some of these drivers occupy on the hard drive. The worst offender are the Epson drivers, which weigh in at an unbelievable 1.5GB! Next in line is HP with 722MB, then Canon with 488MB. I have a hard enough time understanding how something as simple as a printer driver can take up more than 20MB or so, but several hundred MB and even over one GB is simply insane. Back in 1985, I had no problems using a dot matrix printer on my Commodore 64, and the whole computer only had 64KB of RAM (and no hard drive). So why in the world would a printer driver now take up 1.5GB (this is over 24,000 times the size of the C64&apos;s RAM)?&lt;/p&gt;
&lt;p&gt;Thankfully, my printer is a Brother, and the Brother drivers &quot;only&quot; take up 64MB (still unreasonably much if you ask me...). The Fuji / Xerox and Samsung drivers only take up 3.3MB and 5.7MB respectively, so it clearly can be done. Also, the Gutenberg printers (which I&apos;ve never tried myself, but which are supposed to support most common printers) only weigh in with 15.3MB.&lt;/p&gt;
&lt;p&gt;Anyway, by deselecting the printer drivers I don&apos;t need, I was able to save 3.3GB of hard drive space and bring the footprint down from 11.4GB to 8.1GB (yes, this means that more than one quarter of the default installation consists of frickin&apos; printer drivers...).&lt;/p&gt;
&lt;p&gt;The next thing I noticed was that the default installation also includes all languages, and each language takes up between 107 and 122MB (German, being the most verbose, takes up the max of 122MB ;) ). Deselecting all unneeded languages (I left German in there even though I doubt I&apos;ll ever use it) brought my installation size down to 6.3GB, which is only a little over half of the original size. I have saved a total of 5.1GB compared to the default. I normally wouldn&apos;t care about a few gigs, except on my laptop, where space still comes at a premium.&lt;/p&gt;
&lt;p&gt;If anybody has any ideas what could make these printer drivers so large, please let me know. In the mean time, you may want to take a close look at your printer drivers and languages and uninstall the unneeded choices if you would like to save some hard drive space.&lt;/p&gt;</content:encoded><category>software</category></item><item><title>Boot Camp</title><link>https://www.digitalhobbit.com/legacy/2007/10/22/boot-camp/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/10/22/boot-camp/</guid><description>A few days ago, I broke down and committed blasphemy: I installed Boot Camp and Windows XP on my MacBook Pro.</description><pubDate>Mon, 22 Oct 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few days ago, I broke down and committed blasphemy: I installed &lt;a href=&quot;http://www.apple.com/macosx/features/bootcamp.html&quot;&gt;Boot Camp&lt;/a&gt; and Windows XP on my MacBook Pro. I was originally going to wait until OSX 10.5 / Leopard comes out, but since I am planning to do a fresh install with Leopard anyway, I figured I&apos;d give Boot Camp a shot to see if I like it, and so I can wipe it out when I install Leopard in case I don&apos;t.&lt;/p&gt;
&lt;p&gt;But I have to say it works just great! The installation was very smooth, and now I have a nice dual boot system. The only thing I changed after the installation was to replace the stock ATI driver with the &lt;a href=&quot;http://www.omegadrivers.net/&quot;&gt;Omega Drivers&lt;/a&gt;. These are supposed to offer more opportunities for performance tweaks, but the main reason I installed them was to provide better controls for my external 22&quot; monitor (the stock drivers would not allow me to set this as my primary display, whereas the Omega drivers do). I was originally concerned about hard drive space, but I recently picked up a portable external, USB powered hard drive. Boot Camp won&apos;t let you install Windows on an external drive (although there are a few hacks to get around this...), but I only reserved a relatively modest 15GB on my internal hard drive for Windows and a few important applications or games, and I am installing all large applications (and particularly the recent crop of 5+ GB sized games...) on the external drive.&lt;/p&gt;
&lt;p&gt;Now I can play many games (including &lt;a href=&quot;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;#x26;location=http%3A%2F%2Fwww.amazon.com%2F2K-Games-BioShock%2Fdp%2FB000MK694E%3Fie%3DUTF8%26s%3Dvideogames%26qid%3D1193116685%26sr%3D1-2&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=ur2&amp;#x26;camp=1789&amp;#x26;creative=9325&quot;&gt;BioShock&lt;/a&gt;, &lt;a href=&quot;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;#x26;location=http%3A%2F%2Fwww.amazon.com%2FElder-Scrolls-4-Oblivion-DVD-ROM%2Fdp%2FB000G6XH1W%3Fie%3DUTF8%26s%3Dvideogames%26qid%3D1193116557%26sr%3D1-3&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=ur2&amp;#x26;camp=1789&amp;#x26;creative=9325&quot;&gt;Oblivion&lt;/a&gt;, and the &lt;a href=&quot;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;#x26;location=http%3A%2F%2Fwww.amazon.com%2FValve-The-Orange-Box%2Fdp%2FB000PS2XES%3Fie%3DUTF8%26s%3Dvideogames%26qid%3D1193116631%26sr%3D1-2&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=ur2&amp;#x26;camp=1789&amp;#x26;creative=9325&quot;&gt;Half Life Orange Box&lt;/a&gt; with Portal and Team Fortress 2) in much better quality and with better frame rates than on my (admittedly somewhat outdated) desktop PC. Very nice!&lt;/p&gt;
&lt;p&gt;I am especially curious how Boot Camp will perform with Leopard (only 4 more days!), as it is supposed to include some sort of fast reboot mechanism that should make the switch from OSX to Windows a bit more seamless.&lt;/p&gt;</content:encoded><category>software</category></item><item><title>Trekkies of the Round Table</title><link>https://www.digitalhobbit.com/legacy/2007/10/10/trekkies-of-the-round-table/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/10/10/trekkies-of-the-round-table/</guid><description>I came across a hilariously funny video on YouTube (via Laughing Squid): Star Trek Meets Monty Python. It&apos;s a very well done mashup of clips from the original Star Trek series with the &quot;Knights of the Round Table&quot; song from Monty Python&apos;s Holy Grail. Simply awesome! :)</description><pubDate>Wed, 10 Oct 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I came across a hilariously funny video on YouTube (via Laughing Squid): &lt;a href=&quot;http://laughingsquid.com/star-trek-goes-to-camelot-via-monty-python/&quot;&gt;Star Trek Meets Monty Python&lt;/a&gt;. It&apos;s a very well done mashup of clips from the original Star Trek series with the &quot;Knights of the Round Table&quot; song from Monty Python&apos;s Holy Grail. Simply awesome! :)&lt;/p&gt;</content:encoded><category>fun</category></item><item><title>Trent Reznor Sticks it to the Music Industry</title><link>https://www.digitalhobbit.com/legacy/2007/10/09/trent-reznor-sticks-it-to-the-music-industry/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/10/09/trent-reznor-sticks-it-to-the-music-industry/</guid><description>Once and for all, Nine Inch Nails&apos; Trent Reznor sticks it to the music industry. Yesterday, he posted the following text on the Nine Inch Nails home page: Hello everyone. I&apos;ve waited a LONG time to be able to make the following announcement: as of right now Nine Inch Nails is a totally free agent, free of any recording contract with any label.</description><pubDate>Tue, 09 Oct 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Once and for all, Nine Inch Nails&apos; Trent Reznor sticks it to the music industry. Yesterday, he posted the following text on the &lt;a href=&quot;http://www.nin.com&quot;&gt;Nine Inch Nails home page&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello everyone. I&apos;ve waited a LONG time to be able to make the
following announcement: as of right now Nine Inch Nails is a totally
free agent, free of any recording contract with any label. I have
been under recording contracts for 18 years and have watched the
business radically mutate from one thing to something inherently very
different and it gives me great pleasure to be able to finally have a
direct relationship with the audience as I see fit and appropriate.
Look for some announcements in the near future regarding 2008.
Exciting times, indeed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Whatever you may think of their music (I for one am a big fan of their old stuff, but not so much of anything that was released after the amazing Downward Spiral album), but this is exciting news. I definitely liked Nine Inch Nails better before they went mainstream, but now I&apos;m quite happy they took this route, as they&apos;ll be able to have a much bigger impact on the industry. With acts like Nine Inch Nails and Radiohead demonstrating that it is entirely possible to bypass the music industry, I sincerely hope that times are about to change...&lt;/p&gt;
&lt;p&gt;I hadn&apos;t bothered to pick up the latest Nine Inch Nails album (&lt;a href=&quot;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;#x26;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB000VZSEWA&amp;#x26;tag=sfgeek-20&amp;#x26;linkCode=ur2&amp;#x26;camp=1789&amp;#x26;creative=9325&quot;&gt;Year Zero&lt;/a&gt;), but after this I felt compelled to download it from Amazon&apos;s music store.&lt;/p&gt;
&lt;p&gt;There&apos;s also some interesting coverage of this (along with tons of comments) on &lt;a href=&quot;http://www.techcrunch.com/2007/10/08/nine-inch-nails-help-seal-record-industrys-coffin/&quot;&gt;TechCrunch&lt;/a&gt; and &lt;a href=&quot;http://gizmodo.com/gadgets/burn/nine-inch-nails-dumps-record-labels-going-direct-to-fans-308409.php&quot;&gt;Gizmodo&lt;/a&gt; (not even counting the &gt; 1000 &lt;a href=&quot;http://www.blogger.com/comment.g?blogID=3531509609051187076&amp;#x26;postID=4760760856064929357&amp;#x26;isPopup=true&quot;&gt;comments on the Nine Inch Nails home page&lt;/a&gt;).&lt;/p&gt;</content:encoded><category>entertainment</category><category>music</category></item><item><title>The Future of the Music Industry</title><link>https://www.digitalhobbit.com/legacy/2007/10/04/the-future-of-the-music-industry/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/10/04/the-future-of-the-music-industry/</guid><description>TechCruch&apos;s Michael Arrington posted an interesting (and controversial) article on the future of the music industry: The Inevitable March of Recorded Music Towards Free Definitely some good points, and an interesting read (although I haven&apos;t had the patience to troll through the numerous comments...). I am not sure I completely agree with the fact that the price of music will inevitably be free, although I can follow his reasoning.</description><pubDate>Thu, 04 Oct 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TechCruch&apos;s Michael Arrington posted an interesting (and controversial) article on the future of the music industry: &lt;a href=&quot;http://www.techcrunch.com/2007/10/04/the-inevitable-march-of-recorded-music-towards-free/&quot;&gt;The Inevitable March of Recorded Music Towards Free&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Definitely some good points, and an interesting read (although I haven&apos;t had the patience to troll through the numerous comments...). I am not sure I completely agree with the fact that the price of music will inevitably be free, although I can follow his reasoning. But I for one am definitely willing to pay a reasonable amount of money for music if the conditions are right, even if I could easily download it for free. An amount of $5 per album (in high quality digital form, and of course without DRM) seems fair, as long as the majority of this money goes directly to the artist.&lt;/p&gt;
&lt;p&gt;I also loved hearing &lt;a href=&quot;http://www.youtube.com/watch?v=TJ5iHaV0dP4&quot;&gt;Trent Reznor&apos;s (aka Nine Inch Nails) take on this issue&lt;/a&gt;. :)&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>amazonmp3</title><link>https://www.digitalhobbit.com/legacy/2007/09/26/amazonmp3/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/09/26/amazonmp3/</guid><description>Last month I blogged about DRM-free Online Music Stores. Well, today Amazon unveiled their own MP3 music store: amazonmp3 Even though it&apos;s been a while since a new Amazon feature has blown me away, I have to say I am very impressed with amazonmp3! They only offer DRM-free music in MP3 format, generally encoded using 256kbps.</description><pubDate>Wed, 26 Sep 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last month I blogged about &lt;a href=&quot;/legacy/2007/08/24/drm-free-online-music-stores/&quot;&gt;DRM-free Online Music Stores&lt;/a&gt;. Well, today Amazon unveiled their own MP3 music store: &lt;a href=&quot;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;#x26;location=http%3A%2F%2Fwww.amazon.com%2Fexec%2Fobidos%2Ftg%2Fbrowse%2F-%2F163856011&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=ur2&amp;#x26;camp=1789&amp;#x26;creative=9325&quot;&gt;amazonmp3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Even though it&apos;s been a while since a new Amazon feature has blown me away, I have to say I am very impressed with amazonmp3! They only offer DRM-free music in MP3 format, generally encoded using 256kbps. The website is laid out well, all songs are previewable, it is fast, and the navigation is well-thought-out and conveniently enables both searching and browsing for music. The catalog is reasonably large (and I assume it will grow over time as they sign up new labels), and among other things I have been able to find a fair selection of obscure European Industrial bands (although amazonmp3 often only seems to have a single album of these bands, not their whole discography). Individual songs generally cost $0.89, although a few songs cost $0.99. Given that all songs are DRM-free, this compares quite favorably to iTunes Music Store&apos;s $1.29 for DRM-free songs. Most albums cost $8.99, a few cost $9.99, and I have been able to find a lot of albums for as little as $6.99, including German imports that would have cost $16 in CD-format on Amazon.com!&lt;/p&gt;
&lt;p&gt;The purchase experience is simple and straightforward in usual 1-click Amazon style. amazonmp3 has a nice free downloader app (currently only Mac and Windows, but supposedly a Linux version is being worked on) that makes it very easy to download entire albums. If desired, it even automatically adds the downloaded songs to your iTunes library. The downloader is optional; individual songs can also be manually downloaded from the website.&lt;/p&gt;
&lt;p&gt;As you can tell, I am quite excited about this new service, and I think I&apos;ll make this my standard mechanism for acquiring music from now on (assuming it is available in their catalog). I will still check out some of the other music stores I previously wrote about, as sites with an affordable subscription model might be more economical for regular downloads, but in the mean time I&apos;m glad I now have a convenient way to buy DRM-free music on Amazon.&lt;/p&gt;</content:encoded><category>entertainment</category><category>music</category></item><item><title>DRM-free Online Music Stores</title><link>https://www.digitalhobbit.com/legacy/2007/08/24/drm-free-online-music-stores/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/08/24/drm-free-online-music-stores/</guid><description>Techcrunch posted a nice article on finding DRM-dree music online. I have long been frustrated with the state of online music sales. While I love iTunes, I have never used the iTunes Music Store because I refuse to buy any DRM-crippled songs.</description><pubDate>Fri, 24 Aug 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Techcrunch posted a nice article on &lt;a href=&quot;http://www.techcrunch.com/2007/08/24/finding-drm-free-music-online/&quot;&gt;finding DRM-dree music online&lt;/a&gt;. I have long been frustrated with the state of online music sales. While I love iTunes, I have never used the iTunes Music Store because I refuse to buy any DRM-crippled songs. The fact that Apple recently made EMI&apos;s catalog available without DRM is a step in the right direction, but unfortunately most of the music I listen to is on smaller labels. I really want to support the artists I like and would much prefer buying their music over downloading it illegally or buying a CD (only to rip it into iTunes and put it into a box in the garage). But I&apos;m sorry, I&apos;m just not going to buy any music with DRM.&lt;/p&gt;
&lt;p&gt;So I was happy to see that a bunch of new options for buying DRM free songs are springing up. Many years ago when they first launched, I bought some music from &lt;a href=&quot;http://www.emusic.com&quot;&gt;eMusic&lt;/a&gt; (but mainly because this was at the height of the dot-com boom and at the time they were giving away crazy expensive things for free with any music purchase, such as a nice set of Logitech speakers and a Creative MP3 player). Since then they have switched to a subscription model, but I haven&apos;t checked them out lately. From what I hear, their catalog is quite large, particularly with music from smaller labels. Unfortunately it seems to be impossible to view their catalog without signing up for a subscription, which is rather annoying. Still, I might give them another try.&lt;/p&gt;
&lt;p&gt;Another site I found via the Techcrunch article is &lt;a href=&quot;http://audiolunchbox.com/&quot;&gt;Audio Lunchbox&lt;/a&gt;. They seem to have quite a large collection, and I was happy to recognize many small Industrial / Electronic artists that I was familiar with. Their prices are comparable to iTunes ($9.99 per album), but all the songs are DRM-free MP3s (encoded with 192kbps VBR, which is adequate for my purposes). Their website allows individual songs to be previewed, but unfortunately the interface is clunky (for example you cannot jump to a particular song by clicking on it; instead, you have to click &quot;forward&quot; until you get to it) and you can only listen to the first 30 seconds of each song. Why not offer the whole song for preview, but in lower audio quality? It is usually difficult to judge a song by its beginning. Still, these minor issues aside, Audio Lunchbox looks very promising and I will keep this in mind. I would prefer slightly lower pricing ($5-$7 seems reasonable for an entire album), given that I can buy a CD for $13 at Amazon, but at least it is DRM-free.&lt;/p&gt;
&lt;p&gt;One thing I was very surprised reading is that two of the music stores (&lt;a href=&quot;http://musicdownloads.walmart.com/&quot;&gt;WalMart&lt;/a&gt; and &lt;a href=&quot;http://gbox.com/&quot;&gt;gBox&lt;/a&gt;) are apparently only compatible with Windows. How somebody can try to build a business on the web and be so ignorant of other platforms is beyond my comprehension...&lt;/p&gt;</content:encoded><category>entertainment</category><category>music</category><category>websites</category></item><item><title>Airport Extreme</title><link>https://www.digitalhobbit.com/legacy/2007/07/24/airport-extreme/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/07/24/airport-extreme/</guid><description>For the past half year or so, I have mainly been using my MacBook Pro - particularly for the past few weeks since I hooked it up to my new 22&quot; widescreen LCD monitor. However, I have still had to keep my Linux PC running as a print- and fileserver (serving, among other things, my mp3 music collection), which has been bothering me.</description><pubDate>Tue, 24 Jul 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For the past half year or so, I have mainly been using my MacBook Pro - particularly for the past few weeks since I hooked it up to my new 22&quot; widescreen LCD monitor. However, I have still had to keep my Linux PC running as a print- and fileserver (serving, among other things, my mp3 music collection), which has been bothering me.&lt;/p&gt;
&lt;p&gt;So yesterday I picked up an &lt;a href=&quot;http://www.apple.com/airportextreme/&quot;&gt;Airport Extreme&lt;/a&gt;, and so far I am extremely impressed with it. I could have swapped out my existing 802.11g wireless router, but that would have required running in the less performant 802.11b/g compatible mode. Instead, I chose to hook it up to my existing router and configure it for bridge mode. Everything worked beautifully right from the start. With this setup, my wife&apos;s older Macbook (which unlike my Core 2 Duo MacBook Pro does not support 802.11n) as well as my other devices (my two Tivos, my Airport Express that I use to stream music to my stereo, my Nintendo Wii, my Xbox running XBMC, my old Windows laptops, etc. - damn, I just realized that&apos;s a lot of wireless devices... ;) ) can continue to connect to the old router via 801.11b/g, while my MacBook Pro can connect to the Airport Extreme using the full 802.11n speed.&lt;/p&gt;
&lt;p&gt;I also hooked up a 500GB external USB drive and my printer, and sharing these devices via the Airport Extreme has been pretty painless. I can access my USB drive from my Macs as well as my Linux and Windows boxes. I am still having some trouble with my Xbox, but this is probably just a simple configuration issue. I have also successfully set up my printer in Windows (using &lt;a href=&quot;http://developer.apple.com/networking/bonjour/download/&quot;&gt;Bonjour for Windows&lt;/a&gt;) and don&apos;t foresee any issues setting it up as a CUPS printer in Linux.&lt;/p&gt;
&lt;p&gt;The speed of the networked drive is quite impressive, both via 801.11n and 801.11g. Streaming movies is no problem at all, I can even skip to any place in the movie with hardly any delay.&lt;/p&gt;
&lt;p&gt;As Hannibal Smith would say, &quot;I love it when a plan comes together!&quot;&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Mouse Support in Linux vs OSX</title><link>https://www.digitalhobbit.com/legacy/2007/07/14/mouse-support-in-linux-vs-osx/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/07/14/mouse-support-in-linux-vs-osx/</guid><description>Until recently, I have mostly used my MacBook Pro without an external mouse, but I recently hooked it up to a KVM switch that allows me to share my external keyboard, mouse, and monitor with my Linux box. I always felt that the mouse support in OSX was lacking, even though I wasn&apos;t quite able to pin it down.</description><pubDate>Sat, 14 Jul 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Until recently, I have mostly used my MacBook Pro without an external mouse, but I recently hooked it up to a KVM switch that allows me to share my external keyboard, mouse, and monitor with my Linux box. I always felt that the mouse support in OSX was lacking, even though I wasn&apos;t quite able to pin it down. But now that I&apos;m comparing the same mouse on two systems, the difference is quite pronounced.&lt;/p&gt;
&lt;p&gt;I&apos;m used to pretty sensitive mouse settings, as I like to avoid unnecessary mouse movement. Therefore, I have my tracking speed set to the second to fastest setting in OSX. Fast movements seem OK, but whenever I move the mouse slowly, the pointer movement becomes annoyingly jerky. Unfortunately &quot;Tracking Speed&quot; is the only setting that OSX offers. I wonder if a way to set speed and acceleration independently (like I remember from Windows) would solve the problem. I used to think that the mouse itself or the mousing surface was to blame, but now that I&apos;m using the same mouse on Linux without any problems (both fast and slow movements are smooth and precise), this turns out not to be the case.&lt;/p&gt;
&lt;p&gt;Has anybody else noticed this? Are there any hacks or software utilities to improve the mouse support in OSX?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Apparently this is a known issue:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://db.tidbits.com/article/8893&quot;&gt;Mac OS X&apos;s Mouse Acceleration Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://emperor.tidbits.com/webx?128@@.3c8e6f4e&quot;&gt;Comments on the article above&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://forums.macrumors.com/showthread.php?t=210515&quot;&gt;A MacRumors forum post&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While some people seem to prefer the Mac&apos;s mouse behavior, I agree with those that find it extremely annoying. I briefly tried &lt;a href=&quot;http://lavacat.com/iMouseFix/&quot;&gt;iMouseFix&lt;/a&gt; but it didn&apos;t seem to improve things for me. I am currently evaluating &lt;a href=&quot;http://www.usboverdrive.com/&quot;&gt;USB Overdrive&lt;/a&gt;, a $20 shareware application. Among other things (such as mapping buttons to actions, etc.), it allows speed and acceleration to be modified independently. Right now I am trying a very high speed combined with a relatively modest acceleration of 70%, and it definitely seems to improve things quite a bit. I&apos;ll probably have to play with the settings some more until it feels perfect, though.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>My Dynamic Dilemma</title><link>https://www.digitalhobbit.com/legacy/2007/07/09/my-dynamic-dilemma/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/07/09/my-dynamic-dilemma/</guid><description>For the past 8-9 years, Java has been my bread-and-butter programming language, and to this date it is the language I am most familiar with. However, for the past few years I have developed a growing interest in dynamic scripting languages, and Ruby in particular.</description><pubDate>Mon, 09 Jul 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For the past 8-9 years, Java has been my bread-and-butter programming language, and to this date it is the language I am most familiar with. However, for the past few years I have developed a growing interest in dynamic scripting languages, and &lt;a href=&quot;http://www.ruby-lang.org/&quot;&gt;Ruby&lt;/a&gt; in particular. To a large extent this was fueled by the elegant &lt;a href=&quot;http://www.rubyonrails.org/&quot;&gt;Ruby on Rails&lt;/a&gt; web application framework, although I have written a few standalone Ruby applications as well. To be honest I have never learned Ruby as thoroughly as I would have liked, and I have not really taken much advantage of its metaprogramming facilities. I still have a stack of Ruby (and Ruby on Rails) books that I am hoping to make it through at some point... Regardless, so far it has served me very well and always felt like an enjoyable programming language.&lt;/p&gt;
&lt;p&gt;At work, the most widely used scripting language is &lt;a href=&quot;http://python.org/&quot;&gt;Python&lt;/a&gt;. I had never written any Python code until a few weeks ago. Somehow the (admittedly superficial) fact that indentation is meaningful in Python has always put me off just enough, and that combined with the increasing buzz that Ruby was generating made me choose Ruby over Python or other scripting languages (I&apos;m afraid Perl wasn&apos;t even in the running...). However, after writing a couple of Python scripts over the past few weeks, I have to admit that it really is not a bad language. Surprisingly, I actually quite like the fact that indentation rather than explicit &quot;end&quot; statements or braces is used to delineate code blocks. There are few things that strike me as slightly ugly, such as the constant &quot;self&quot; references and the fact that it somehow feels less OO (for example in Python the length of a string is determined using &lt;code&gt;len(&quot;foo&quot;)&lt;/code&gt;, not &lt;code&gt;&quot;foo&quot;.length()&lt;/code&gt;). Still, overall Python and Ruby seem about equally powerful and much more akin than I initially thought, to the point that I would gladly pick either of them over Java (not to mention C/C++) whenever I can get away with it.&lt;/p&gt;
&lt;p&gt;My dilemma is that I cannot decide which language to use for my personal projects. I am usually always working on some web application or other (most of which never see the light of day, but still...), and sometimes I have a need to whip out a simple script. Every once in a while I also become compelled to start writing a computer game, and one of these years I might actually finish one. ;)&lt;/p&gt;
&lt;p&gt;On the one hand, I still slightly prefer Ruby&apos;s elegance over Python, but not to the point that this should be a significant factor. Ruby on Rails is a stronger sticking point, as it is an excellent web framework with a strong community to support it. Python has a few interesting web frameworks that seem to be gaining some traction (I will write about these in a separate post), and while some of these seem like potential alternatives, none are as mature as Rails, nor do they have as strong a community behind them. However, it seems like while Python was slightly late to the game, it is catching up and only a matter of time until its web frameworks are strong competitors for Rails.&lt;/p&gt;
&lt;p&gt;My main reason for considering to focus on Python for personal projects is that I am going to keep getting exposure to Python at work (at least occasionally), and learning two very similar dynamic, scripting languages seems like a waste of effort (particularly considering that we are not only talking about the core language, but also the corresponding standard library and common third party libraries). I would much rather learn one scripting language really well and then pick up another, very different language (&lt;a href=&quot;http://www.erlang.org/&quot;&gt;Erlang&lt;/a&gt; seems most interesting to me right now, but I might consider &lt;a href=&quot;http://www.haskell.org/&quot;&gt;Haskell&lt;/a&gt; or &lt;a href=&quot;http://caml.inria.fr/ocaml/&quot;&gt;OCAML&lt;/a&gt; as well). One could argue that Rails is really a DSL for web apps and should be considered independent of Ruby (in which case I might be tempted to continue to use Rails for web development and use Python for everything else), but I don&apos;t think that this would really do it justice (in fact I&apos;ve often wished I was better at Ruby in order to write more elegant Rails code). So I would strongly prefer to choose a single scripting language and a corresponding web framework.&lt;/p&gt;
&lt;p&gt;Another thing that Python has going for it is the sheer amount as well as maturity of its third party libraries. Ruby is very quickly catching up in this respect, but it still seems like Python&apos;s offerings are generally better in terms of both availability and stability. For example, Python has strong game and graphics programming libraries (such as &lt;a href=&quot;http://www.pygame.org&quot;&gt;PyGame&lt;/a&gt;), whereas I was not able to find any equally strong libraries for Ruby the last time I looked for them about 6 months ago (although some are in the works).&lt;/p&gt;
&lt;p&gt;So that&apos;s my dilemma... I have started playing with some of the Python web frameworks (again, I&apos;ll write more about this in the future), and I think I will use my experience with this to guide my decision. If things go well, I will probably decide to focus on Python for now. Otherwise, I simply won&apos;t be able to justify not using Rails, in which case I will have to bite the bullet and continue to use (and further study) Ruby and Ruby on Rails for personal projects, while at the same time using Python at work.&lt;/p&gt;
&lt;p&gt;Surely some of you must have been in similar situations, so any advice is appreciated. :)&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Social Networking Spree</title><link>https://www.digitalhobbit.com/legacy/2007/07/05/social-networking-spree/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/07/05/social-networking-spree/</guid><description>Up till now I&apos;ve never really gotten that much into social networking applications. I joined Tribe.net about 3 years ago but haven&apos;t really checked in for 2 years. I steered clear of MySpace so far...</description><pubDate>Thu, 05 Jul 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Up till now I&apos;ve never really gotten that much into social networking applications. I joined &lt;a href=&quot;http://tribe.net&quot;&gt;Tribe.net&lt;/a&gt; about 3 years ago but haven&apos;t really checked in for 2 years. I steered clear of &lt;a href=&quot;http://www.myspace.com&quot;&gt;MySpace&lt;/a&gt; so far...&lt;/p&gt;
&lt;p&gt;But yesterday I went on a bit of a social networking spree and decided to sign up for a few services: &lt;a href=&quot;http://www.facebook.com&quot;&gt;Facebook&lt;/a&gt;, &lt;a href=&quot;http://www.bebo.com&quot;&gt;Bebo&lt;/a&gt; (2 former coworkers of mine are at Bebo now), and the recently launched &lt;a href=&quot;http://www.pownce.com&quot;&gt;Pownce&lt;/a&gt; (I don&apos;t have any more Pownce invites, but you might find &lt;a href=&quot;http://mashable.com/2007/06/30/pownce-invites/&quot;&gt;this post&lt;/a&gt; useful - it worked for me).&lt;/p&gt;
&lt;p&gt;I&apos;m not done setting up my profile in all of these sites, and at this point I really don&apos;t know which ones (if any) I will end up using on a regular basis. It&apos;s too early to talk about my initial impressions, but I&apos;ll probably blog more about this topic later.&lt;/p&gt;
&lt;p&gt;If you&apos;re reading my blog and want to add me as a friend, please go ahead. I&apos;m &quot;digitalhobbit&quot; in all three sites.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>AT&amp;T is teh suck!</title><link>https://www.digitalhobbit.com/legacy/2007/06/24/att-is-teh-suck/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/06/24/att-is-teh-suck/</guid><description>Last week I&apos;ve had a real unfortunate experience with AT&amp;T: Our phone line (which includes DSL) was down for a whole 4 days, from Monday morning to Friday morning. This is by far the most severe outage I have ever experienced, and suffice to say I am extremely annoyed with AT&amp;T&apos;s ineptitude, and their obvious lack of concern for their customers.</description><pubDate>Sun, 24 Jun 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week I&apos;ve had a real unfortunate experience with AT&amp;#x26;T: Our phone line (which includes DSL) was down for a whole 4 days, from Monday morning to Friday morning. This is by far the most severe outage I have ever experienced, and suffice to say I am extremely annoyed with AT&amp;#x26;T&apos;s ineptitude, and their obvious lack of concern for their customers. I first reported the problem Monday morning at 10AM, but it took them until the next day before they even sent someone out there. And after that, it took them another 3 days to determine that during a recent maintenance at a node in the phone line they had incorrectly connected our line. Part of the problem seems to be that they are apparently working with 3rd party contractors to perform much of the actual maintenance work, which adds another layer of inefficiency on top of an already messed up company...&lt;/p&gt;
&lt;p&gt;I have mostly been lucky with my phone / DSL service for the past few years (up until we moved to San Mateo last year), but this was the third outage in only 6 months (the first one lasted about a day, the second one a few hours). This seems absolutely unacceptable for a technology that should be mature by now...&lt;/p&gt;
&lt;p&gt;We will be moving to Palo Alto in about a month, which means that it&apos;s time to pick a new provider for our phone, TV, and Internet services. Last week&apos;s outage combined with the &lt;a href=&quot;http://arstechnica.com/news.ars/post/20070613-att-willing-to-spy-for-nsa-mpaa-and-riaa.html&quot;&gt;recent bad press about the fact that AT&amp;#x26;T is willing to spy on their customers on behalf of the NSA, RIAA, and MPAA&lt;/a&gt; simplifies my choice by eliminating AT&amp;#x26;T from the list of contenders. I still need to pick between Comcast, RCA, and perhaps other options, but at least I won&apos;t have to be an AT&amp;#x26;T customer any more (OK, that&apos;s unfortunately only half true: I am still using their mobile service. Perhaps I should consider switching to Spring or Verizon when my contract is up...).&lt;/p&gt;</content:encoded><category>personal</category></item><item><title>No more CRTs in my house</title><link>https://www.digitalhobbit.com/legacy/2007/06/24/no-more-crts-in-my-house/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/06/24/no-more-crts-in-my-house/</guid><description>Call me a late adopter, but I have finally gotten rid of all CRTs in my house (partially as a space saving measure in preparation for our upcoming move to a smaller house, although this may just be a subconscious way of justifying the expense ;) ). I replaced my 32&quot; CRT TV with a 37&quot; LCD TV and my 19&quot; CRT computer monitor with a 22&quot; widescreen LCD monitor.</description><pubDate>Sun, 24 Jun 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Call me a late adopter, but I have finally gotten rid of all CRTs in my house (partially as a space saving measure in preparation for our upcoming move to a smaller house, although this may just be a subconscious way of justifying the expense ;) ). I replaced my 32&quot; CRT TV with a 37&quot; LCD TV and my 19&quot; CRT computer monitor with a 22&quot; widescreen LCD monitor. The difference is amazing, although my remaining video equipment isn&apos;t quite up to par (particularly my DVD player, which is not upconverting and seems to have a broken component output).&lt;/p&gt;
&lt;p&gt;I&apos;m thinking of hooking up my old modded Xbox (original, not 360) and relying on the absolutely amazing &lt;a href=&quot;http://www.xboxmediacenter.com/&quot;&gt;XBMC&lt;/a&gt; (Xbox Media Center) software. Sure, an Xbox isn&apos;t quite as sleek as an Apple TV, but in terms of features it&apos;s actually surprisingly close, and better in some respects. I can stream movies (in pretty much any format including DiVX) and music over the network or store them on the 160GB hard drive inside the Xbox. There are also plugins to view Youtube videos, movie trailers, listen to Internet radio, and more. But I digress...&lt;/p&gt;
&lt;p&gt;My Wii also looks much better on the new TV. Even though the Wii only supports 480p. this actually is a significant improvement over 480i. But now I&apos;m starting to wish I had an Xbox 360 or a PS3 to really get some high def gaming on. :)&lt;/p&gt;
&lt;p&gt;The 22&quot; computer monitor is also a world of difference from my old 19&quot; CRT (which was getting close to the end of its lifetime with annoying brightness and color distortion issues anyway). I have hooked it up to both my Linux / Windows dual boot machine and my Macbook Pro, although I find myself using the Mac for pretty much anything these days (a topic for another day, perhaps). I&apos;ve been getting neck pains from staring down too much at my Macbook screen lately, and hooking it up to a nice big monitor helps a lot. But the new monitor has also prompted me to boot into Windows (it had been a while...) and try out some games. Overall the picture quality is great, but it&apos;s surprising how many reasonably recent (1-2 years old) games still lack proper support for widescreen aspect ratios. Still, I might have to do some more gaming on my PC again.&lt;/p&gt;
&lt;p&gt;Bye bye, good old cathode ray tube...&lt;/p&gt;</content:encoded><category>entertainment</category><category>personal</category></item><item><title>Camino 1.5</title><link>https://www.digitalhobbit.com/legacy/2007/06/16/camino-15/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/06/16/camino-15/</guid><description>Earlier this month, version 1.5 of the OSX Camino browser was released. Camino is based on the same Mozilla rendering engine as Firefox, but unlike Firefox, Camino behaves much more like a native OSX application, without a lot of the overhead (such as the XUL user interface) that Firefox brings with it. Ever since I started using the Mac, I&apos;ve never been a big fan of Safari.</description><pubDate>Sat, 16 Jun 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Earlier this month, version 1.5 of the OSX &lt;a href=&quot;http://www.caminobrowser.org&quot;&gt;Camino&lt;/a&gt; browser was released. Camino is based on the same &lt;a href=&quot;http://www.mozilla.org/newlayout/&quot;&gt;Mozilla rendering engine&lt;/a&gt; as Firefox, but unlike Firefox, Camino behaves much more like a native OSX application, without a lot of the overhead (such as the &lt;a href=&quot;http://www.mozilla.org/projects/xul/&quot;&gt;XUL user interface&lt;/a&gt;) that Firefox brings with it.&lt;/p&gt;
&lt;p&gt;Ever since I started using the Mac, I&apos;ve never been a big fan of Safari. I have used Firefox up till now, but I&apos;ve been getting less and less excited about it. It simply seems to be getting a bit bloated and unresponsive, and I&apos;ve gotten quite sick of continuously seeing the &lt;a href=&quot;http://www.urbandictionary.com/define.php?term=spinning+wheel+of+death&quot;&gt;&quot;spinning wheel of death&quot;&lt;/a&gt;. I have even used the Intel Mac optimized &lt;a href=&quot;http://www.beatnikpad.com/archives/2007/03/29/firefox-2002&quot;&gt;Bon Echo&lt;/a&gt; build for a while, but this didn&apos;t seem to improve things that greatly either.&lt;/p&gt;
&lt;p&gt;I tried an earlier version of Camino before and wasn&apos;t that impressed with it, because it was sorely lacking in features at the time. However, a lot of these were added in Camino 1.5, so I decided to give it another try. I have been using it for a good week now, and so far I am very pleasantly surprised. It feels extremely fast and responsive, at least as fast as Safari and significantly faster than Firefox. Camino now supports &quot;search as you type&quot;, one of the features that I have always missed in non-Firefox browsers. It also saves your sessions and restores these after a restart, including all open tabs (a Firefox 2.0 feature that I would not be able to do without any more).&lt;/p&gt;
&lt;p&gt;It does have a few shortcomings, though:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tabs cannot be reordered (although it has been rumored that this feature will be added in the 1.6 version).&lt;/li&gt;
&lt;li&gt;&quot;Find as you type&quot; is initiated by pressing &quot;/&quot; instead of Command-F (the latter brings up the regular Find dialog). I much prefer the Firefox implementation of this feature.&lt;/li&gt;
&lt;li&gt;You cannot use Command-1 through Command-9 (or any other shortcut) to jump to the 1st through 9th tab respectively. I have gotten very used to this feature in Firefox, epecially since I always keep certain tabs open in a particular order (such as Gmail, Calendar, Google Reader, etc.). Now I have to use Command-Option-Left/Right to scroll through the tabs (or use the mouse) instead, which is less convenient.&lt;/li&gt;
&lt;li&gt;In general the tab handling could use an overhaul. It resembles older versions of Firefox. Only as many tabs as fit the width of the window are displayed at once. When this number is exceeded, a button appears on the right that displays a popup window to select the remaining tabs, which seems clunky. In Firefox, I often position the mouse on the tab bar and use the scroll wheel to scroll the tabs left or right. &lt;em&gt;&lt;strong&gt;Update (7/14/07):&lt;/strong&gt; Today I downloaded the &lt;a href=&quot;http://www.caminobrowser.org/download/releases/nightly/&quot;&gt;latest nightly Camino build&lt;/a&gt; (these have generally been very stable in my experience). While tabs still cannot be reorderd, they otherwise behave like in Firefox now. You get arrow buttons that allow you to scroll the tabs left / right, or you can scroll them via the mouse wheel. Nice!&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;The search bar does not display &lt;a href=&quot;http://labs.google.com/suggestfaq.html&quot;&gt;Google Suggest&lt;/a&gt; results as you type.&lt;/li&gt;
&lt;li&gt;Firefox allows me to subscribe to RSS feeds using Google Reader. Camino has a similar feature, but it only appears to support local feed reader applications and I have not been able to figure out how to make this work with Google Reader instead.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So while there are still several mildly annoying shortcomings (mostly around tab handling), I am excited about Camino&apos;s sheer speed and responsiveness, as well as stability (no crashes so far, knock on wood...). And of course, you still get the same great HTML rendering compatibility as Firefox.&lt;/p&gt;
&lt;p&gt;I think I&apos;ll try to stick with Camino for now. I might end up going back to Firefox for certain tasks due to the awesome plugin support (particularly for web development), but I don&apos;t have much of a reason to use Safari any more.&lt;/p&gt;
&lt;p&gt;I should also mention that while Camino isn&apos;t nearly as extensible as Firefox, many useful extensions can be found at &lt;a href=&quot;http://pimpmycamino.com/&quot;&gt;Pimp My Camino&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>technology</category><category>software</category></item><item><title>Google Maps: Street View</title><link>https://www.digitalhobbit.com/legacy/2007/05/29/google-maps-street-view/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/05/29/google-maps-street-view/</guid><description>Today, Google Maps launched the new Street View feature, and I&apos;m very impressed (no, even though I work at Google I had not seen this until now). Street View gives you a 360 degree panoramic view of the chosen location. You can use the mouse to turn around, virtually walk up or down the street, as well as zoom in or out.</description><pubDate>Tue, 29 May 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today, Google Maps launched the new Street View feature, and I&apos;m very impressed (no, even though I work at Google I had not seen this until now). Street View gives you a 360 degree panoramic view of the chosen location. You can use the mouse to turn around, virtually walk up or down the street, as well as zoom in or out. The picture quality is quite good (particularly in fullscreen mode), generally detailed enough to make out signs and house numbers.&lt;/p&gt;
&lt;p&gt;Check out this &lt;a href=&quot;http://maps.google.com/maps?f=q&amp;#x26;hl=en&amp;#x26;q=embarcadero,+san+francisco,+ca&amp;#x26;sll=37.760164,-122.418981&amp;#x26;sspn=0.017744,0.028968&amp;#x26;ie=UTF8&amp;#x26;om=0&amp;#x26;layer=c&amp;#x26;cbll=37.805402,-122.40352&amp;#x26;cbp=2,338.896428571428,0.478577945196716,0&amp;#x26;ll=37.841309,-122.395763&amp;#x26;spn=0.0709,0.172176&amp;#x26;z=13&quot;&gt;map of the Embarcadero in San Francisco&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This should be an awesome tool for house / apartment hunting. In the past I have used the Satellite view to get at least a rough idea of the neighborhood, but this adds a whole other dimension and level of detail. You can view houses in the neighborhood, check out the kinds of cars, and virtually stroll down the street to get a feel for the area.&lt;/p&gt;
&lt;p&gt;At this point only a few locations in the US are covered, but luckily the Bay Area is one of them (although coverage outside of San Francisco is still spotty). Very nice!&lt;/p&gt;</content:encoded><category>technology</category><category>websites</category></item><item><title>My new gig</title><link>https://www.digitalhobbit.com/legacy/2007/04/05/my-new-gig/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/04/05/my-new-gig/</guid><description>I&apos;ve been negligent about updating my blog for the past two months... I&apos;ve also been told that I really need to post an update about my new job, so here you go: A few weeks ago, I joined Google! Due to the sheer size of the company and the corresponding infrastructure, there&apos;s a huge learning curve, so I can&apos;t post anything specific about my concrete job yet.</description><pubDate>Thu, 05 Apr 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been negligent about updating my blog for the past two months... I&apos;ve also been told that I really need to post an update about my new job, so here you go:&lt;/p&gt;
&lt;p&gt;A few weeks ago, I joined Google! Due to the sheer size of the company and the corresponding infrastructure, there&apos;s a huge learning curve, so I can&apos;t post anything specific about my concrete job yet. However, the environment is truly fantastic. Google very much feels like a college campus, and the collective brain power in this place is pretty amazing. But what is even more amazing is the degree to which engineers are empowered at Google, which has a strong bottom-up culture. Not to mention the quality of the many gourmet food cafeterias across the campus (I haven&apos;t even had a chance to try half of them yet...).&lt;/p&gt;
&lt;p&gt;I&apos;ve mostly worked at small startups (although some of these ultimately ended up as part of a somewhat larger organization due to acquisitions), so Google is definitely a big change. But this is not your typical rigid and formal large company, and in many (good) aspects it still reminds of a startup. In other ways it almost feels like its own autonomous ecosystem. For example, for whatever question you might have or whatever topic might interest you, there&apos;s bound to be a mailing list with plenty of experts on it. Almost like good old Usenet when it was still working... There are extensive training sessions, self organizing user groups for various topics, etc.&lt;/p&gt;
&lt;p&gt;It feels good to be part of a massively successful, impactful company like Google.&lt;/p&gt;</content:encoded><category>work</category></item><item><title>Useless Account</title><link>https://www.digitalhobbit.com/legacy/2007/02/07/useless-account/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/02/07/useless-account/</guid><description>If you&apos;ve been as overwhelmed as myself with the amount of new, often indistinguishable social web applications that are going live every week, you might get a kick out of this hoax site: Useless Account Its only purpose is to allow you to create and edit an account (as you might in a social web app), nothing else.</description><pubDate>Wed, 07 Feb 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you&apos;ve been as overwhelmed as myself with the amount of new, often indistinguishable social web applications that are going live every week, you might get a kick out of this hoax site:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.uselessaccount.com/&quot;&gt;Useless Account&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Its only purpose is to allow you to create and edit an account (as you might in a social web app), nothing else. And heck, it&apos;s officially &quot;Slightly more useful than Twitter&quot;, according to the fake TechCrunch quote (OK, they call it TechLunch) on the site. ;)&lt;/p&gt;</content:encoded><category>fun</category><category>websites</category></item><item><title>Setting up a virgin Mac</title><link>https://www.digitalhobbit.com/legacy/2007/01/31/setting-up-a-virgin-mac/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/01/31/setting-up-a-virgin-mac/</guid><description>About half a year ago, I started using an old PowerBook at work. Shortly afterwards, I was hooked and bought a MacBook for my wife. Now I finally bought a Mac for myself: a shiny, nice MacBook Pro. One of the great things about the Mac is that it is highly usable right out of the box.</description><pubDate>Wed, 31 Jan 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;About half a year ago, I started using an old PowerBook at work. Shortly afterwards, I was hooked and bought a MacBook for my wife. Now I finally bought a Mac for myself: a shiny, nice MacBook Pro. One of the great things about the Mac is that it is highly usable right out of the box. It includes a decent browser, a very nice email application, a chat application, video editing tools, audio software, and much more. However, as with any operating system, certain third party tools always prove to be invaluable. Now that I have gone through this process several times, installing everything I need on my new MacBook Pro was a breeze. I figured I&apos;d take that opportunity to blog about the list of applications I recommend. Most of these are useful to anybody, although some applications reveal a certain software development bias. Next time I&apos;ll go into some of the additional tools that belong to a Mac development environment for Ruby or Java, such as Ruby itself, Rails, Subversion, Eclipse, etc.&lt;/p&gt;
&lt;p&gt;All of the applications below are either freeware or open source.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.mozilla.com&quot;&gt;Firefox&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Safari is nice, but in my opinion it still doesn&apos;t come close to Firefox. For web development, certain plugins are a must-have (such as the wonderful &lt;a href=&quot;http://chrispederick.com/work/webdeveloper/&quot;&gt;Web Developer Extension&lt;/a&gt;).&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://iterm.sourceforge.net/&quot;&gt;iTerm&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This is a great terminal replacement, as native OSX Terminal tool is sorely lacking. Most importantly, iTerm features tabs, but it also supports transparency and is highly customizable.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://quicksilver.blacktree.com/&quot;&gt;Quicksilver&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Quicksilver is an invaluable tool that allows you to access applications, emails, and other things via convenient keyboard shortcuts. You invoke Quicksilver by hitting Ctrl+Space (of course this is configurable) and simply type a few letters of the application you want to start. It uses plugins to add support for various applications, such as iTunes (to quickly locate music), iTerm, Firefox, and more.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.jedit.org/&quot;&gt;jEdit&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Frankly, this one is a bit subjective and arguable. There are many great editors for the Mac, such as the popular &lt;a href=&quot;http://macromates.com/&quot;&gt;TextMate&lt;/a&gt;. I briefly evaluated TextMate at some point but didn&apos;t get enough exposure to it to convince myself that I really need it, although I might give it another shot later. But jEdit is a great open source alternative. It also works in all major operating systems, which is a big advantage as I still do a lot of work in Linux. jEdit is also very extensible, and particularly the &lt;a href=&quot;http://rubyjedit.org/&quot;&gt;Ruby Editor&lt;/a&gt; plugin is very useful if you do any Ruby or Rails development. If you&apos;re an old-school hacker, you may prefer &lt;a href=&quot;http://www.vim.org/&quot;&gt;Vim&lt;/a&gt; or &lt;a href=&quot;http://www.gnu.org/software/emacs/&quot;&gt;Emacs&lt;/a&gt;, but jEdit is my preferred standalone text editor.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.adiumx.com/&quot;&gt;Adium&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Adium is a multi-protocol instant messaging client. Works great, and is very extensible and skinnable.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://mail.google.com/mail/help/notifier/notifier_mac.html&quot;&gt;Google Notifier&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Adds a notification icon for Gmail and Google Calendar events to the menu bar. Obviously, you only need Google Notifier if you use either of these tools...&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.neooffice.org/&quot;&gt;NeoOffice&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.neooffice.org/&quot;&gt;NeoOffice&lt;/a&gt; is a port of &lt;a href=&quot;http://www.openoffice.org/&quot;&gt;OpenOffice&lt;/a&gt;, an open source Office suite. In contrast to OpenOffice however, NeoOffice uses the native Aqua UI, which makes it look far less out of place. It&apos;s not quite like Microsoft Office, but it comes pretty close for most purposes, and you can&apos;t beat the price (plus it allows you to keep your Mac free from Microsoft applications ;) ).&lt;/p&gt;</content:encoded><category>software</category></item><item><title>Setting up a virgin Mac, part 2 (Rails dev tools)</title><link>https://www.digitalhobbit.com/legacy/2007/01/31/setting-up-a-virgin-mac-part-2-rails-dev-tools/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/01/31/setting-up-a-virgin-mac-part-2-rails-dev-tools/</guid><description>As I promised, here is the second part of my notes on setting up a new Mac. This time I will focus on development tools for Ruby on Rails. MacPorts In theory, Ruby is already installed on the Mac.</description><pubDate>Wed, 31 Jan 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I promised, here is the second part of my notes on setting up a new Mac. This time I will focus on development tools for Ruby on Rails.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.macports.org/&quot;&gt;MacPorts&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In theory, Ruby is already installed on the Mac. Unfortunately, the bundled Ruby interpreter has some problems, and even if it didn&apos;t, you&apos;d want to use a more up-to-date version than 1.8.2 (which is included in OSX as of Tiger) for Rails development. There are a bunch of ways to install this. Most of them involve recompiling Ruby from scratch, but there are several handy tools that make this process quite painless. The two most prominent ones are &lt;a href=&quot;http://www.macports.org/&quot;&gt;MacPorts&lt;/a&gt; (formerly &lt;a href=&quot;http://darwinports.opendarwin.org/&quot;&gt;DarwinPorts&lt;/a&gt;) and &lt;a href=&quot;http://fink.sourceforge.net/&quot;&gt;Fink&lt;/a&gt;. Both provide convenient access to a large set of Unix software. Each distribution has some pros and cons, and overall the choice appears to be pretty subjective. I chose to go with MacPorts mainly because its packages appears to be slightly more up-to-date than Fink. My instructions below are a derived from the &lt;a href=&quot;http://trac.macosforge.org/projects/macports/wiki/InstallingMacPorts&quot;&gt;official MacPorts installation instructions&lt;/a&gt; as well as &lt;a href=&quot;http://www.robbyonrails.com/articles/2006/05/29/install-ruby-rails-and-postgresql-on-osx&quot;&gt;Robby Russel&apos;s related post&lt;/a&gt;, with some adaptations (for example to account for the fact that the latest MacPorts version only comes as a .tar.gz and not as an IMG file).&lt;/p&gt;
&lt;h4&gt;Xcode&lt;/h4&gt;
&lt;p&gt;Before we can install MacPorts, we need to install Xcode. This can be found on the installation DVD, but it is generally recommended to download the latest version from the &lt;a href=&quot;http://www.apple.com/macosx/developertools/&quot;&gt;Apple Developer Tools&lt;/a&gt; website (be warned, though: the download weighs in at over 900MB!). Xcode includes many development tools, but most importantly (for our purposes) the GCC compiler that is needed to compile most of the packages that are available via MacPorts.&lt;/p&gt;
&lt;h4&gt;X11&lt;/h4&gt;
&lt;p&gt;It may not be strictly necessary for your purposes, but it is recommended to also install the X11 window system in order to be able to run graphical Unix applications. This can be found on the OSX Tiger installation disk (click on the &quot;Optional Installs&quot; package).&lt;/p&gt;
&lt;h4&gt;MacPorts itself&lt;/h4&gt;
&lt;p&gt;Now moving on to the actual MacPorts installation. Head over to the &lt;a href=&quot;http://svn.macports.org/repository/macports/downloads/&quot;&gt;MacPorts Download Site&lt;/a&gt;, located the latest version (currently 1.3.2) and download the .tar.gz file (&lt;a href=&quot;http://svn.macports.org/repository/macports/downloads/DarwinPorts-1.3.2/DarwinPorts-1.3.2.tar.gz&quot;&gt;here&lt;/a&gt; is the most recent as of the time of this writing). Unpack it by double-clicking on the archive. You&apos;ll need to perform the following commands in a shell in order to complete the installation:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd [wherever you unpacked the DarwinPorts archive]
./configure
make
sudo make install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This installs MacPorts in /opt/local. If you prefer to install it into /usr/local, you can append &quot;--prefix=/usr/local&quot; to the &quot;./configure&quot; command above.&lt;/p&gt;
&lt;p&gt;Since MacPorts is installed in /opt/local, you will need to add this directory to your path. You will also need to set the DISPLAY environment variable in order to run X11 applications. Using a text editor, create a file named &quot;.profile&quot; in your home directory and add the following two lines:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export DISPLAY=:0.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In your shell, you&apos;ll now need to type &quot;source .profile&quot; in order for these changes to take effect right away in your current session (or simply start a new one). Note: Alternatively, you could put these lines into /etc/profile, which would make MacPorts available to all users.&lt;/p&gt;
&lt;p&gt;Next you may want to update MacPorts (it might already be up-to-date, but just in case):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo port selfupdate
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now you&apos;re all set for installing all kinds of cool Unix tools via MacPorts. The general syntax is &quot;sudo port install [name]&quot;, so whenever you&apos;re looking for a particular application, chances are that this command will do the trick.&lt;/p&gt;
&lt;h3&gt;Ruby&lt;/h3&gt;
&lt;p&gt;Use the following command to install Ruby and RubyGems via MacPorts:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo port install ruby rb-rubygems
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Be prepared to wait for a while... When this completes, type &quot;ruby -v&quot; to confirm that you are now using the upgraded Ruby version (currently 1.8.5).&lt;/p&gt;
&lt;h3&gt;Rails&lt;/h3&gt;
&lt;p&gt;Now that RubyGems is installed, we&apos;ll use this to install Rails and all its dependencies:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo gem install -y rails
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.sqlite.org/&quot;&gt;Sqlite&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;You will need to install a database in order to build any meaningful Rails applications. Mysql and Postgresql are popular choices (and you will probably want to deploy your application on one of these databases), but for Rails development I generally favor &lt;a href=&quot;http://www.sqlite.org/&quot;&gt;Sqlite&lt;/a&gt; because of its small footprint and easy installation. Installing it is as simple as:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo port install sqlite3
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Sit back and enjoy!&lt;/h3&gt;
&lt;p&gt;You should now be all set for Rails development on your Mac. Feel free to follow the steps in &lt;a href=&quot;http://www.robbyonrails.com/articles/2006/05/29/install-ruby-rails-and-postgresql-on-osx&quot;&gt;Robby&apos;s instructions&lt;/a&gt; to create an initial Rails app, but replace &quot;postgresql&quot; with &quot;sqlite3&quot;.&lt;/p&gt;
&lt;p&gt;There are of course many other tools that you may want to install for development (such as &lt;a href=&quot;http://www.radrails.org/&quot;&gt;RadRails&lt;/a&gt;), but I&apos;ll cover these another time.&lt;/p&gt;</content:encoded><category>development</category><category>software</category></item><item><title>MIT OpenCourseWare</title><link>https://www.digitalhobbit.com/legacy/2007/01/06/mit-opencourseware/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2007/01/06/mit-opencourseware/</guid><description>I was just browsing through the MIT OpenCourseWare, and the amount of freely available information available is quite impressive. The courses span many departments, although I mainly checked out the Electrical Engineering and Computer Science section. They have lecture notes on many different classes, both undergraduate and graduate, covering pretty much all aspects of the Computer Science field. Some of the courses also come with full video presentations.</description><pubDate>Sat, 06 Jan 2007 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I was just browsing through the &lt;a href=&quot;http://ocw.mit.edu/index.html&quot;&gt;MIT OpenCourseWare&lt;/a&gt;, and the amount of freely available information available is quite impressive. The courses span many departments, although I mainly checked out the &lt;a href=&quot;http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/index.htm&quot;&gt;Electrical Engineering and Computer Science&lt;/a&gt; section. They have lecture notes on many different classes, both undergraduate and graduate, covering pretty much all aspects of the Computer Science field. Some of the courses also come with full video presentations. This is definitely well worth keeping in mind as a source of information.&lt;/p&gt;</content:encoded></item><item><title>Wii Safety Manual</title><link>https://www.digitalhobbit.com/legacy/2006/12/06/wii-safety-manual/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/12/06/wii-safety-manual/</guid><description>Apparently the Japanese version of the Nintendo Wii ships with an insane Safety Guide. Who would have thought that it is not a good idea to stick four leaf clovers into the Wii? Wii Clover Of course, the community was quick to respond with a spoof: Wii Safety: The Missing Pages</description><pubDate>Wed, 06 Dec 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Apparently the Japanese version of the Nintendo Wii ships with an insane &lt;a href=&quot;http://g99.kotaku.com/gaming/top/the-japanese-super-safe-wii-safety-manual-218939.php&quot;&gt;Safety Guide&lt;/a&gt;. Who would have thought that it is not a good idea to stick four leaf clovers into the Wii?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/legacy/img/wp-content/uploads/2006/12/wiiDSCF7160.jpg&quot; alt=&quot;Wii Clover&quot;&gt;&lt;/p&gt;
&lt;p&gt;Of course, the community was quick to respond with a spoof: &lt;a href=&quot;http://www.flickr.com/photos/iconfactory/sets/72157594406897342/detail&quot;&gt;Wii Safety: The Missing Pages&lt;/a&gt;&lt;/p&gt;</content:encoded><category>fun</category><category>games</category></item><item><title>Initial thoughts on the Wii</title><link>https://www.digitalhobbit.com/legacy/2006/12/04/initial-thoughts-on-the-wii/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/12/04/initial-thoughts-on-the-wii/</guid><description>Last week, I was finally able to get a hold of a Nintendo Wii. Somehow the Wii resonated with me since details about it were first announced (and when it was still codenamed &quot;Revolution&quot;), and for the past few months I&apos;ve been eager to try it out first hand.</description><pubDate>Mon, 04 Dec 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week, I was finally able to get a hold of a &lt;a href=&quot;http://wii.nintendo.com&quot;&gt;Nintendo Wii&lt;/a&gt;. Somehow the Wii resonated with me since details about it were first announced (and when it was still codenamed &quot;Revolution&quot;), and for the past few months I&apos;ve been eager to try it out first hand.&lt;/p&gt;
&lt;p&gt;Traditionally, I&apos;m a PC gamer, and the types of games that I tend to enjoy most are RPGs and first person shooters. However, over the past years I have become a much more casual gamer, and I&apos;ve played more on my Xbox and less on my PC (although this is also due to other reasons, such as the fact that I normally run Linux at home, and that I try to avoid using the mouse for too long because it hurts my wrist). But these days I tend to play more in bite size chunks, since I have a job, a wife, and kids.&lt;/p&gt;
&lt;p&gt;I thought about buying an Xbox 360 last year, but couldn&apos;t quite justify the $399 expense. The PS3 with its astronomic price tag was out of the question... But even aside from the price, there doesn&apos;t seem to be anything particularly compelling about these new consoles. Sure, they&apos;ve got upgraded graphics and sound, which certainly makes a big difference, but I feel that the more significant breakthrough needs to be made on the gameplay side. And significant innovations on that side have been very sparse...&lt;/p&gt;
&lt;p&gt;The Wii promised to change this by taking a different approach: Instead of investing into graphics and pure processing power, Nintendo focused on completely revamping the user interface for console games, and I dare say that they strongly succeeded at this! After having played with my Wii over the weekend, I can honestly say that the Wii is all that it&apos;s cracked up to be. The controller is amazingly powerful and sensitive, and enables whole new types of gameplay. In conjunction with the Nunchuk attachment, it offers many of the same inputs as a regular console controller. However, it also supports motion sensing and acts as a pointer device. Both methods are surprisingly accurate.&lt;/p&gt;
&lt;p&gt;Wii Sports acts as a great demo for the console and showcases the way the controller can be used in innovative ways. In Bowling, you swing the controller like you would swing your arm, and let go of the &quot;B&quot; button when you would normally release the ball. In Golf, you hold the controller sideways and swing it like a Golf club. In Baseball, you similarly swing it like a Baseball bat (although I have to admit that Baseball on the Wii is about as boring as Baseball in real life...). Same with Tennis, which is my personal favorite. Boxing adds the nunchuk to the mix: You hold the controller in the right hand, the nunchuk in the left, and these essentially become extensions of your hands that translate all your movements into the game. If you hold your hands up, your player holds his hands up. If you duck sideways, so does your player. If you swing one of your hands into the opponent&apos;s face or body, your player takes a swing - you get the idea. All the sports games have excellent physics, very cute graphics, and while I normally hate sports and would never consider buying a sports game, I have to admit that Wii Sports is a lot of fun. Another Wii feature that Wii Sports introduces is the Mii. The Wii includes a feature to create avatars, called &quot;Mii&quot;. These can be used in various games. They can also &quot;travel&quot; to your friends&apos; consoles, which is a fun little gimmick.&lt;/p&gt;
&lt;p&gt;Of course I have also bought Zelda. I have only played it for about two hours so far, but it is a lot of fun. And even though the graphics can&apos;t compete with next generation consoles, they actually look very nice. Then again, I don&apos;t even have an HDTV, so what do I know... ;)
The controls are perhaps a bit more cumbersome than they need to be, and many people are saying that they have essentially been bolted on a game that was originally designed for the GameCube, but overall it controls quite well, based on what I&apos;ve seen so far.&lt;/p&gt;
&lt;p&gt;After playing Wii Sports and Zelda, it is becoming pretty clear to me that the Wii would be an excellent platform for immersive RPGs or strategy games. The controller&apos;s pointing feature is pretty much equivalent to mouse input on the PC (if not better, due to the tactile force feedback whenever you hover over a button, etc.), and the nunchuk and motion control add additional methods of input. I&apos;m very curious what is going to happen on that front.&lt;/p&gt;
&lt;p&gt;Last not least, the Wii includes a virtual console, which allows you to purchase (for $5-$10 each) and download classic games. I downloaded Super Mario 64, and the process was very smooth and the game plays well. And of course the Wii is also backwards compatible with the GameCube. Since I never owned a GameCube, I certainly plan to tap into this as well and pick up some classic GameCube titles.&lt;/p&gt;
&lt;p&gt;All in all, I am extremely excited about the Wii. I am sure that the next generation of Wii titles will provide an even better example of what this console is capable of. Nintendo also recently announced that Q2 2007 will see the first Wii games with online multiplayer, which is sorely missing at this point. It remains to be seen whether it will compete with Microsoft&apos;s Xbox Live service in this arena, but I&apos;m hoping for the best.&lt;/p&gt;</content:encoded><category>games</category></item><item><title>Joel Spolsky on Hiring Software Engineers</title><link>https://www.digitalhobbit.com/legacy/2006/11/16/joel-spolsky-on-hiring-software-engineers/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/11/16/joel-spolsky-on-hiring-software-engineers/</guid><description>Joel Spolsky recently posted an excellent series of articles about hiring software engineers. I don&apos;t always agree with Joel&apos;s opinions (particularly on topics like Ruby on Rails or agile development), but he definitely has a strong perspective on hiring software engineers. Click on the headings below to get to the original articles on the Joel on Software website.</description><pubDate>Thu, 16 Nov 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Joel Spolsky recently posted an excellent series of articles about hiring software engineers. I don&apos;t always agree with Joel&apos;s opinions (particularly on topics like Ruby on Rails or agile development), but he definitely has a strong perspective on hiring software engineers.&lt;/p&gt;
&lt;p&gt;Click on the headings below to get to the original articles on the &lt;a href=&quot;http://www.joelonsoftware.com/&quot;&gt;Joel on Software&lt;/a&gt; website.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.joelonsoftware.com/articles/FindingGreatDevelopers.html&quot;&gt;Finding Great Developers&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Joel &lt;a href=&quot;http://www.joelonsoftware.com/articles/FindingGreatDevelopers.html&quot;&gt;convincingly argues&lt;/a&gt; that the great developers are never on the market, whereas the bad programmers are always looking for new jobs. So job boards (like Craigslist) and recruiters are some of the least promising methods. He describes great success with internships. As a relatively small company, we have not seriously explored this option ourselves, but Joel makes a compelling case. Another good option is to seek out qualified candidates at the places they hang out, such as conferences or virtual communities.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.joelonsoftware.com/articles/SortingResumes.html&quot;&gt;Sorting Resumes&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This is another tricky topic. After reviewing more than a handful of resumes, they all start looking the same (this seems to be especially true for resumes sent in by recruiters, who ensure that no buzzword is left out...). Joel presents some strict but fair criteria for &lt;a href=&quot;http://www.joelonsoftware.com/articles/SortingResumes.html&quot;&gt;filtering and sorting resumes&lt;/a&gt; based on passion, brains, communication skills (and English language skills in particular), &quot;hard-core&quot;-ness, diversity, selectivity, and the candidate&apos;s desire to work for the company (as expressed in a custom cover letter). He concludes that resumes provide a very weak signal for judging candidates, but the criteria described in the article sound like an objective way of filtering and ordering potential candidates.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.joelonsoftware.com/articles/ThePhoneScreen.html&quot;&gt;The Phone Screen&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In this article, Joel outlines a good &lt;a href=&quot;http://www.joelonsoftware.com/articles/ThePhoneScreen.html&quot;&gt;phone screen strategy&lt;/a&gt;. We always go through a phone screen before inviting a candidate for an in-person interview, but I will start incorporating some of the ideas from this article to better screen for people who are both smart and passionate and whose communication skills go beyond reciting low level technical details...&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html&quot;&gt;The Guerilla Guide to Interviewing&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Last not least, we come to the actual &lt;a href=&quot;http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html&quot;&gt;in-person interview&lt;/a&gt;. Again, Joel presents sound advice for this stage of the hiring process. The main goal is to find people who are &lt;em&gt;smart&lt;/em&gt; and &lt;em&gt;get things done&lt;/em&gt;, as opposed to people who are &lt;em&gt;smart&lt;/em&gt; but don&apos;t &lt;em&gt;get things done&lt;/em&gt; (such as the PhDs who prefer to mull over theoretical issues), the people who &lt;em&gt;get things done&lt;/em&gt; but are not &lt;em&gt;smart&lt;/em&gt; (who more often than not turn out to be a liability), and of course the people who are neither. He also stresses the importance of making a &quot;&lt;em&gt;no hire&lt;/em&gt;&quot; decision if there is any doubt whatsoever, as a potentially bad developer is a much bigger liability than potentially losing out on a decent developer. I like to think that we have a high bar ourselves, and while it can sometimes be frustrating to turn down candidate after candidate (although phone screens help to filter out the obvious non-matches), I agree that it does not make sense to compromise on this.&lt;/p&gt;
&lt;p&gt;Interestingly, Joel seems to have come around with regards to puzzle questions, even though he used to be famous for only hiring people who were able to figure out a logic puzzle involving pirates and treasure.&lt;/p&gt;</content:encoded><category>work</category></item><item><title>Richard Dawkins in Lynchburg, VA</title><link>https://www.digitalhobbit.com/legacy/2006/11/12/richard-dawkins-in-lynchburg-va/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/11/12/richard-dawkins-in-lynchburg-va/</guid><description>Richard Dawkins has posted a video of his October 23 speech at Randolph-Macon Woman&apos;s College in Lynchburg, Virginia. The speech contains excerpts of his latest book &quot;The Good Delusion&quot;, but what makes this video particularly interesting is how Dawkins answers questions from several students from Liberty University, a conservative Christian university that shamelessly teaches young earth creationism (and apparently displays dinosaur fossils dated approx. 3000 years ago...).</description><pubDate>Sun, 12 Nov 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Richard Dawkins has posted a &lt;a href=&quot;http://richarddawkins.net/article,303,Reading-of-The-God-Delusion-in-Lynchburg-VA,Richard-Dawkins--C-SPAN2&quot;&gt;video of his October 23 speech at Randolph-Macon Woman&apos;s College in Lynchburg, Virginia&lt;/a&gt;. The speech contains excerpts of his latest book &quot;The Good Delusion&quot;, but what makes this video particularly interesting is how Dawkins answers questions from several students from Liberty University, a conservative Christian university that shamelessly teaches young earth creationism (and apparently displays dinosaur fossils dated approx. 3000 years ago...).&lt;/p&gt;
&lt;p&gt;I haven&apos;t seen the entire video (113GB quicktime), but the &lt;a href=&quot;http://onegoodmove.org/1gm/&quot;&gt;following website&lt;/a&gt; contains some great excerpts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://onegoodmove.org/1gm/1gmarchive/2006/11/not_a_trivial_e.html&quot;&gt;Not a trivial error&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://onegoodmove.org/1gm/1gmarchive/2006/11/blind_faith.html&quot;&gt;Blind faith&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://onegoodmove.org/1gm/1gmarchive/2006/11/christian_stran.html&quot;&gt;Quantum Theory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>society</category></item><item><title>Firefox 2.0</title><link>https://www.digitalhobbit.com/legacy/2006/10/31/firefox-20/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/10/31/firefox-20/</guid><description>With relatively little fanfare, Firefox 2.0 was released last week. (Yes, I know, IE 7 was also released recently. Does anybody actually still use IE???) Firefox 2.0 brings some very nice improvements. My favorite feature is session recovery. Although Firefox is generally pretty stable, it nevertheless suffers the occasional crash. Thanks to session recovery, it is now possible after a restart to continue where one left off before the crash.</description><pubDate>Tue, 31 Oct 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;With relatively little fanfare, &lt;a href=&quot;http://www.mozilla.com/en-US/firefox/&quot;&gt;Firefox 2.0&lt;/a&gt; was released last week.  (Yes, I know, IE 7 was also released recently. Does anybody actually still use IE???)&lt;/p&gt;
&lt;p&gt;Firefox 2.0 brings some very nice improvements. My favorite feature is session recovery. Although Firefox is generally pretty stable, it nevertheless suffers the occasional crash. Thanks to session recovery, it is now possible after a restart to continue where one left off before the crash. Firefox can also be configured to always start with the previous session, which is a tremendous improvement. I usually have a few standard tabs open (Gmail, corporate web email, RSS aggregator, company Wiki, etc.), and having all of these open up immediately after starting the browser is a huge time saver. It is surprising that it took so long to add this functionality (after all Opera has had this for at least 5 years), but I&apos;m glad that it&apos;s finally available in my favorite browser.&lt;/p&gt;
&lt;p&gt;Another very cool feature is inline spell checking, which works with any form field and thus supports webmail, blogs, etc.&lt;/p&gt;
&lt;p&gt;In addition, there were several changes to the tabbed interface (for example the close button is now on each tab, as opposed to a single close button on the right hand side), and search now provides suggestions as you type. Firefox 2.0 also seems faster and more responsive to me (on both Mac and Linux).&lt;/p&gt;
&lt;p&gt;Last not least, there were many security and privacy enhancements.&lt;/p&gt;
&lt;p&gt;Overall, a very worthwhile update, so go grab it!&lt;/p&gt;</content:encoded><category>technology</category><category>software</category></item><item><title>Hacking the Buffalo WHR-G54S Wireless Router</title><link>https://www.digitalhobbit.com/legacy/2006/10/31/hacking-the-buffalo-whr-g54s-wireless-router/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/10/31/hacking-the-buffalo-whr-g54s-wireless-router/</guid><description>Last week I added a new device to the list of hacked devices in my house, next to my hacked Tivo and Xbox: the Buffalo WHR-G54S wireless router. My D-Link DI-624 router had been giving me trouble for a while, and since I had heard a lot about the various open source firmware alternatives that are available for many routers, I decided to give this a try.</description><pubDate>Tue, 31 Oct 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week I added a new device to the list of hacked devices in my house, next to my hacked Tivo and Xbox: the Buffalo WHR-G54S wireless router.&lt;/p&gt;
&lt;p&gt;My D-Link DI-624 router had been giving me trouble for a while, and since I had &lt;a href=&quot;http://www.lifehacker.com/software/router/hack-attack-turn-your-60-router-into-a-600-router-178132.php&quot;&gt;heard a lot&lt;/a&gt; about the various open source firmware alternatives that are available for many routers, I decided to give this a try.&lt;/p&gt;
&lt;p&gt;One of the most popular router firmwares is &lt;a href=&quot;http://www.dd-wrt.com&quot;&gt;DD-WRT&lt;/a&gt;, which is based on the original Linksys firmware that Linksys had to release as open source in order to comply with the GPL.&lt;/p&gt;
&lt;p&gt;The firmware was originally intended for Linksys routers, but there are many other compatible models, including the &lt;a href=&quot;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;#x26;location=http%3A%2F%2Fwww.amazon.com%2FG54-Cable-dsl-Router-aoss%2Fdp%2FB000AODZQ2%2Fsr%3D8-1%2Fqid%3D1162280886%3Fie%3DUTF8%26s%3Delectronics&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=ur2&amp;#x26;camp=1789&amp;#x26;creative=9325&quot;&gt;Buffalo WHR-G54S&lt;/a&gt; router I decided to go for because of its cheaper price, while being 100% compatible. The DD-WRT Wiki contains a full list of &lt;a href=&quot;http://www.dd-wrt.com/wiki/index.php/Installation#Supported_Devices&quot;&gt;supported devices&lt;/a&gt;, along with customized installation instructions.&lt;/p&gt;
&lt;p&gt;I initially had some trouble flashing the firmware from my Mac, but once I put the router behind a switch and performed the update from my Linux box, I was able to get it working. I have not had a chance to fully explore the new firmware, but so far the router has been working great. The speed is very nice.&lt;/p&gt;
&lt;p&gt;One of the main things I intend to play with over the next few weeks is the QoS (Quality of Service) support that DD-WRT adds. It sounds very promising and should allow me to prioritize online gaming or HTTP traffic over P2P traffic, for example.&lt;/p&gt;
&lt;p&gt;A full list of &lt;a href=&quot;http://www.dd-wrt.com/wiki/index.php/What_is_%22DD-WRT%22%3F#Features_.28Overview.29&quot;&gt;DD-WRT features&lt;/a&gt; can be found here.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Richard Dawkins interviewed by Salon.com</title><link>https://www.digitalhobbit.com/legacy/2006/10/15/richard-dawkins-interviewed-by-saloncom/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/10/15/richard-dawkins-interviewed-by-saloncom/</guid><description>Salon.com posted a very good interview with Richard Dawkins (this link goes to the more readable printer friendly page). As usual, Dawkins comes across as sharp and non-compromising on his views. He also defends his confrontational position on religion - after all, he has been characterized as &quot;Darwin&apos;s Rottweiler&quot; and is certainly one of the most famous atheists in the world.</description><pubDate>Sun, 15 Oct 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Salon.com posted a very good &lt;a href=&quot;http://www.salon.com/books/int/2006/10/13/dawkins/&quot;&gt;interview with Richard Dawkins&lt;/a&gt; (this link goes to the more readable printer friendly page).&lt;/p&gt;
&lt;p&gt;As usual, Dawkins comes across as sharp and non-compromising on his views. He also defends his confrontational position on religion - after all, he has been characterized as &quot;Darwin&apos;s Rottweiler&quot; and is certainly one of the most famous atheists in the world.&lt;/p&gt;
&lt;p&gt;One quote I particularly liked (even though I have heard this in similar form before):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Everybody nowadays is an atheist about Thor and Apollo. Some of us just go one god further.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This finally prompted me to order Dawkins&apos; latest book, &lt;a href=&quot;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;#x26;location=http%3A%2F%2Fwww.amazon.com%2FGod-Delusion-Richard-Dawkins%2Fdp%2F0618680004%2Fsr%3D8-1%2Fqid%3D1160977561%3Fie%3DUTF8&amp;#x26;tag=digitalhobbit-20&amp;#x26;linkCode=ur2&amp;#x26;camp=1789&amp;#x26;creative=9325&quot;&gt;The God Delusion&lt;/a&gt;. Of course now I really need to make some progress to catch up on the stack of Dawkins and Sam Harris books I&apos;ve accumulated...&lt;/p&gt;
&lt;p&gt;Speaking of Richard Dawkins: He&apos;s currently on tour to promote his new book, and according to his &lt;a href=&quot;http://richarddawkins.net/calendar&quot;&gt;calendar&lt;/a&gt; he&apos;ll be in the SF Bay Area October 29 (Menlo Park) and 30 (San Francisco). I hope I&apos;ll be able to make it to one of these events.&lt;/p&gt;
&lt;p&gt;Last not least, Dawkins recently formed the &quot;Richard Dawkins Foundation for Reason &amp;#x26; Science&quot;. A &lt;a href=&quot;http://richarddawkins.net/ourMission&quot;&gt;12-minute video on their Mission page&lt;/a&gt; outlines the noble mission of this foundation. I&apos;ll definitely keep them in mind for any future charity donations.&lt;/p&gt;</content:encoded><category>society</category></item><item><title>SkepticWiki</title><link>https://www.digitalhobbit.com/legacy/2006/10/15/skepticwiki/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/10/15/skepticwiki/</guid><description>I just came across SkepticWiki - the Encyclopedia of Science and Critical Thinking. This looks like a comprehensive resource for all skeptics out there, and the articles on the Wiki debunk such popular myths as UFOs, alternative medicine, pseudohistory (such as Holocaust Denial), and of course religion. The amount of information on the site (both in terms of breadth and depth) is very impressive!</description><pubDate>Sun, 15 Oct 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just came across &lt;a href=&quot;http://www.skepticwiki.org/wiki/index.php/Main_Page&quot;&gt;SkepticWiki - the Encyclopedia of Science and Critical Thinking&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This looks like a comprehensive resource for all skeptics out there, and the articles on the Wiki debunk such popular myths as UFOs, alternative medicine, pseudohistory (such as Holocaust Denial), and of course religion. The amount of information on the site (both in terms of breadth and depth) is very impressive!&lt;/p&gt;</content:encoded><category>society</category></item><item><title>Ruby Editors / IDEs</title><link>https://www.digitalhobbit.com/legacy/2006/09/24/ruby-editors-ides/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/09/24/ruby-editors-ides/</guid><description>I&apos;ve been working with Ruby (mostly Ruby on Rails) for over a year now, both at work and at home, but I still haven&apos;t settled on a Ruby IDE or editor.</description><pubDate>Sun, 24 Sep 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been working with Ruby (mostly Ruby on Rails) for over a year now, both at work and at home, but I still haven&apos;t settled on a Ruby IDE or editor. Most of my development is done in Linux, but lately I&apos;ve started working in Mac OSX, as I have recently adopted an old PowerBook G4 at work, which then got me hooked and prompted me to go out and buy a Macbook for home as well... (more about my initial experience with OSX later).&lt;/p&gt;
&lt;p&gt;The list below is not exhaustive, it merely contains the alternatives that I have seriously considered. A few additional editors and IDEs are included in the articles listed in the resources section at the bottom.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://macromates.com/&quot;&gt;TextMate&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Of course, I immediately tried out &lt;a href=&quot;http://macromates.com/&quot;&gt;TextMate&lt;/a&gt; on the Mac, and it is indeed a very nice editor. In addition to snippets and rudimentary code completion, it has some nice Rails shortcuts for switching between views and controllers, etc. It also supports a large list of languages, so if your primary development environment is OSX, you should be able to use it for most of your projects. Last not least, TextMate has a very nice and hip UI. However, during the course of the 30-day trial I haven&apos;t really invested enough in learning about all the productivity enhancing features. Now that the trial is over, I am trying to determine whether I should buy it. 39 Euro (about $50) is certainly reasonable for a useful tool like this, but at the same time there are some solid open source alternatives that I want to check out first. I would also prefer a multi-platform editor that works on both Linux and OSX, rather than having to invest in learning two different editors. So I might come back to TextMate, but for now I&apos;ll evaluate some of the alternatives.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.radrails.org/&quot;&gt;RadRails&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.radrails.org/&quot;&gt;RadRails&lt;/a&gt; is an Eclipse based Ruby on Rails IDE that combines the &lt;a href=&quot;http://rubyeclipse.sourceforge.net/&quot;&gt;RDT&lt;/a&gt; Ruby plugin with some Rails specific features. I have mostly used earlier versions, which were still a little rough around the edges, but I&apos;ve heard that RadRails has come a long way since then. Since my primary programming language is still Java and I use Eclipse for this, RadRails is a natural choice for working with Ruby on Rails. It comes both as a standalone version and as an Eclipse plugin, so you can work on Java and Rails projects in the same IDE.&lt;/p&gt;
&lt;p&gt;Of course, as it is based on Eclipse, it does sometimes feel a bit heavyweight. Especially at home, where I rarely work with Java these days, a more lightweight solution might be preferable - particularly as RadRails still doesn&apos;t come close to the kind of functionality you get in any decent Java IDE (including Eclipse) these days in terms of code completion, refactoring, etc. But according to &lt;a href=&quot;http://richtextblog.blogspot.com/2006/09/radrails-all-is-forgiven.html&quot;&gt;this blog post&lt;/a&gt;, it seems to be possible to debug Rails applications from within RadRais, which would be a nice feature.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://jedit.org/&quot;&gt;jEdit&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://jedit.org/&quot;&gt;jEdit&lt;/a&gt; is one of my favorite cross platform editors. Even though it is Java based, it still feels pretty lightweight. Out of the box it supports syntax highlighting for many languages, but it really shines for Ruby development when you add the &lt;a href=&quot;http://rubyjedit.org/&quot;&gt;Ruby Editor Plugin&lt;/a&gt;. As of version 0.8 of the plugin, this is as simple as installing it using jEdit&apos;s built-in Plugin Manager. With this plugin, jEdit easily has the best auto-completion support I&apos;ve seen in any Ruby IDE (again, I have not tested recent versions of RadRails). It actually parses your code to infer the classes that correspond to your variables, and pops up the relevant rdoc at appropriate times, such as when typing a period after a variable name. It also adds some configurable shortcuts to pop up searchable ruby docs or a view of the file structure.&lt;/p&gt;
&lt;p&gt;If you want to get the same level of support that TextMate has in form of its Snippets functionality, you may also want to install the SuperAbbrevs plugin. If you&apos;re running the stable jEdit version (currently 4.2), you should be able to install this using the Plugin Manager as well. If you&apos;re on 4.3, you&apos;ll need to manually download and manually install the &lt;a href=&quot;http://community.jedit.org/?q=node/view/2762&quot;&gt;SuperAbbrevs Beta 2 for jEdit 4.3&lt;/a&gt;. You&apos;ll probably also want to install these &lt;a href=&quot;http://synthesis.sbecker.net/articles/2006/03/20/jedit-snippets-for-ruby-on-rails&quot;&gt;jEdit Snippets for Ruby on Rails&lt;/a&gt;, which simulate all the TextMate snippets and more. There&apos;s also a good tutorial on &lt;a href=&quot;http://ifakedit.com/log/2006/02/19/jedit-tutorial-a-how-to-on-abbreviations-superabbrevs-in-html-ruby-on-rails-and-more/&quot;&gt;setting up the SuperAbbrevs plugin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A good collection of resources to set up jEdit as a TextMate equivalent for Ruby on Rails development can be found &lt;a href=&quot;http://toserveman.kalebwalton.com/articles/2006/07/30/jedit-as-textmate-equivalent-for-ruby-on-rails-development&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For now, I think I will stick with jEdit. It takes a bit of effort to configure it to work the way you want, but it is extremely versatile. It is also available on pretty much any platform, and investing in learning how to use jEdit as a general purpose editor should well be worth the effort.&lt;/p&gt;
&lt;h3&gt;vi&lt;/h3&gt;
&lt;p&gt;I am not much of a vi / vim person, but vi certainly has one thing going for it: It&apos;s installed by default on pretty much any Unix machine, and it&apos;s available for pretty much any other platform. It is also extremely powerful, but this comes with a steep learning curve that I have so far always shied away from. If you&apos;re already a vi expert, this may be a natural choice for Ruby / Rails development as well. The Rails Wiki contains a page that describes various alternative setups for &lt;a href=&quot;http://wiki.rubyonrails.org/rails/pages/HowtoUseVimWithRails&quot;&gt;using vim with Rails&lt;/a&gt;, some of which sound quite powerful.&lt;/p&gt;
&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ifakedit.com/log/2006/01/17/best-ideeditor-for-ruby-on-rails/&quot;&gt;Best IDE / Editor for Ruby on Rails&lt;/a&gt; (a similar comparison)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://toserveman.kalebwalton.com/articles/2006/07/29/finding-the-best-ruby-on-rails-ide-for-windows&quot;&gt;Finding the best Ruby on Rails IDE for Windows&lt;/a&gt; (and another one; with one exception, all of the options should apply to Linux / Mac as well)&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category></item><item><title>WordPress Syntax Highlighting Plugin</title><link>https://www.digitalhobbit.com/legacy/2006/09/04/wordpress-syntax-highlighting-plugin/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/09/04/wordpress-syntax-highlighting-plugin/</guid><description>I&apos;ve been meaning to post some sample code for a while, and I always wanted to have a nice WordPress plugin to perform syntax highlighting of code. A cursory search of the WordPress website brought up this page, which lists a bunch of syntax highlighting pluging.</description><pubDate>Mon, 04 Sep 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been meaning to post some sample code for a while, and I always wanted to have a nice WordPress plugin to perform syntax highlighting of code. A cursory search of the WordPress website brought up &lt;a href=&quot;http://codex.wordpress.org/Plugins/Syntax_Highlighting&quot;&gt;this page, which lists a bunch of syntax highlighting pluging&lt;/a&gt;. However, it appears to be a bit outdated, and many of the plugins are no longer supported, don&apos;t work with WordPress 2.x, or their websites have simply disappeared. Some of the other plugins are too specific and only handle PHP code, etc.&lt;/p&gt;
&lt;p&gt;However, the &lt;a href=&quot;http://blog.igeek.info/wp-plugins/igsyntax-hiliter/&quot;&gt;iG:Syntax Hiliter&lt;/a&gt; plugin completely fits the bill. It uses the popular and powerful &lt;a href=&quot;http://qbnz.com/highlighter/&quot;&gt;GeSHI Syntax Highlighter&lt;/a&gt;, which is also embedded in several Wiki syntax highlighting plugins that I&apos;ve used. Installation is simple as usual for WordPress plugins: Just download the plugin and copy it to the &quot;plugins&quot; folder. It uses tags of the form&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[language name]...[/language name]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and supports most popular languages, including Ruby (the support for which was actually added by the plugin author).&lt;/p&gt;
&lt;p&gt;The plugin also adds a nice options page in the WordPress admin interface, which allows configuration of many details, including colors, whether to display line numbers, the name of the language, whether to add a plaintext option, and more.&lt;/p&gt;
&lt;p&gt;Here are some samples:&lt;/p&gt;
&lt;p&gt;[ruby]
class Foo
attr_reader: @bar&lt;/p&gt;
&lt;p&gt;def initialize(bar)
@bar = bar
end&lt;/p&gt;
&lt;p&gt;def do_stuff
puts &quot;Bar: #{bar}&quot;
end
end
[/ruby]&lt;/p&gt;
&lt;p&gt;[java]
public class Foo {
String bar;&lt;/p&gt;
&lt;p&gt;public Foo(String bar) {
this.bar = bar;
}&lt;/p&gt;
&lt;p&gt;public doStuff() {
System.out.println(&quot;Bar: &quot; + bar);
}
}
[/java]&lt;/p&gt;
&lt;p&gt;[sql]
SELECT People.*
FROM People, Cars
WHERE People.car_id = Cars.id
AND Cars.manufacturer = &apos;honda&apos;
[/sql]&lt;/p&gt;</content:encoded><category>blogging</category><category>development</category></item><item><title>Ruby on Rails Security Patch</title><link>https://www.digitalhobbit.com/legacy/2006/08/10/ruby-on-rails-security-patch/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/08/10/ruby-on-rails-security-patch/</guid><description>Earlier today, David Heinemeier Hansson posted on the Ruby on Rails weblog regarding an urgent Ruby on Rails security patch (Rails version 1.1.5 ). No detailed information regarding the nature of the vulnerability was mentioned in the post, but it does sound very serious.</description><pubDate>Thu, 10 Aug 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Earlier today, David Heinemeier Hansson posted on the Ruby on Rails weblog regarding an &lt;a href=&quot;http://weblog.rubyonrails.org/2006/8/9/rails-1-1-5-mandatory-security-patch-and-other-tidbits&quot;&gt;urgent Ruby on Rails security patch (Rails version 1.1.5 )&lt;/a&gt;. No detailed information regarding the nature of the vulnerability was mentioned in the post, but it does sound very serious.&lt;/p&gt;
&lt;p&gt;Originally all Rails versions starting at 0.13 were supposed to be affected, which would have been extremely bad news for the many individuals and businesses out there who are running a production site on Rails 1.0. However, DHH later followed up with another post stating that &lt;a href=&quot;http://weblog.rubyonrails.org/2006/8/10/security-update-rails-1-0-not-affected&quot;&gt;Rails 1.0 and 1.1.3 are not affected&lt;/a&gt;. So for now it seems like Rails 1.0 users are off the hook, although it might be a good idea to consider upgrading to Rails 1.1.5 anyway...&lt;/p&gt;
&lt;p&gt;Unfortunately, details about the issue still have not been posted, and many members of the Rails community are very unhappy with this. I understand that DHH is attempting to protect Rails users by giving them a chance to upgrade their installations before the Rails team announces further details on the issue, but &quot;security through obscurity&quot; has generally proven not to work. Adventurous (or malicious?) minds should be able to figure out the vulnerability by downloading the freely available source code and performing a diff on the patch, while the community at large is left in the dark on the nature of the issue. This is obviously a vital data point when presenting a case to management to urgently upgrade the Rails version for your production applications, and without this there is bound to be some serious hesitation on performing the upgrade, which utimately may lead to larger problems than publicly announcing the vulnerability would.&lt;/p&gt;
&lt;p&gt;Anyway, I&apos;m curious to find out what the problem was, and I&apos;ll follow up with more updates as soon as further details are announced.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; The &lt;a href=&quot;http://weblog.rubyonrails.org/2006/8/10/rails-1-1-6-backports-and-full-disclosure&quot;&gt;full disclosure on the vulnerability has finally been posted&lt;/a&gt;. There&apos;s also another new version: 1.1.6. The description of the issue does sound very serious indeed, so if you&apos;re running one of the affected versions you should upgrade immediately.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Online Billing with Cingular and Allstate</title><link>https://www.digitalhobbit.com/legacy/2006/08/06/online-billing-with-cingular-and-allstate/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/08/06/online-billing-with-cingular-and-allstate/</guid><description>While going through the paperwork that has accumulated since our move a few weeks ago and paying bills, I had to log into the Cingular and Allstate websites. For some reason, both are down for maintenance right now (and this is not even the first time this has happened to me). Is this really necessary?</description><pubDate>Sun, 06 Aug 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While going through the paperwork that has accumulated since our move a few weeks ago and paying bills, I had to log into the Cingular and Allstate websites. For some reason, both are down for maintenance right now (and this is not even the first time this has happened to me). Is this really necessary? Even if they need to upgrade their services, it seems like they should be able to do this in a more seamless fashion. And if it absolutely needs to happen on the weekend, at least it should occur at night. Sunday afternoon seems like a good time for people to have a chance to catch up on paperwork, and doing a time intensive website upgrade at that time is a bad idea...&lt;/p&gt;</content:encoded></item><item><title>The downside of a quick commute</title><link>https://www.digitalhobbit.com/legacy/2006/07/26/the-downside-of-a-quick-commute/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/07/26/the-downside-of-a-quick-commute/</guid><description>Since we moved to San Mateo a little over a week ago, my commute shrunk from about 25-45 minutes (depending on traffic) to less than 10 minutes. This in itself is great, and I really don&apos;t miss driving. However, it does have a minor downside: I can no longer catch up on podcasts while commuting.</description><pubDate>Wed, 26 Jul 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Since we moved to San Mateo a little over a week ago, my commute shrunk from about 25-45 minutes (depending on traffic) to less than 10 minutes. This in itself is great, and I really don&apos;t miss driving. However, it does have a minor downside: I can no longer catch up on podcasts while commuting.&lt;/p&gt;
&lt;p&gt;Until about two years ago, I commuted to work by train, about 1 hour each way. I hated wasting so much time on commuting, but on the positive side I was able to get a lot of reading done, both professional as well as personal literature. When I started working in San Mateo, I first listened to the radio but quickly got bored of it and bought an iPod instead. Initially I was quite happy to enjoy my music collection on the road, but I later got into podcasts, and I now have enough podcasts that I regularly listen to to keep me busy for about 4-5 hours each week, about the time I used to spend on my commute.&lt;/p&gt;
&lt;p&gt;Oh well, I guess I&apos;ll get into the habit of listening to podcasts at home, while reading email, etc. Now I just have to make an effort to make more time for reading books again...&lt;/p&gt;</content:encoded></item><item><title>Which fantasy character are you?</title><link>https://www.digitalhobbit.com/legacy/2006/07/18/which-fantasy-character-are-you/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/07/18/which-fantasy-character-are-you/</guid><description>I came across this interesting little survey application that matches you up with the Fantasy / SciFi character you have most in common with. It looks like most of the characters are drawn from Star Trek, Star Wars, and the Lord of the Rings.</description><pubDate>Tue, 18 Jul 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I came across &lt;a href=&quot;http://www.tk421.net/character/&quot;&gt;this interesting little survey&lt;/a&gt; application that matches you up with the Fantasy / SciFi character you have most in common with. It looks like most of the characters are drawn from Star Trek, Star Wars, and the Lord of the Rings. According to this application, I&apos;m most similar to Jean-Luc Picard:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;An accomplished diplomat who can virtually do no wrong, you sometimes know it is best to rely on the council of others while holding the reins.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;http://www.tk421.net/character/&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;figure&gt;&lt;a href=&quot;http://www.tk421.net/character/&quot;&gt;&lt;img src=&quot;http://www.tk421.net/character/picard.jpg&quot; alt=&quot;Which Fantasy/SciFi Character Are You?&quot; width=&quot;164&quot; height=&quot;225&quot;&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;</content:encoded><category>fun</category></item><item><title>Frequently Awkward Questions for the Entertainment Industry</title><link>https://www.digitalhobbit.com/legacy/2006/07/11/frequently-awkward-questions-for-the-entertainment-industry/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/07/11/frequently-awkward-questions-for-the-entertainment-industry/</guid><description>The Electronic Frontier Foundation (EFF) has posted a list of \Frequently Awkward Questions for the Entertainment Industry\, just in case you ever need to challenge one of the deceptive RIAA or MPAA representatives. Some of my favorites: The RIAA has sued over 20,000 music fans for file sharing, who have on average paid a $3,750 settlement. That&apos;s over $75,000,000.</description><pubDate>Tue, 11 Jul 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The Electronic Frontier Foundation (EFF) has posted a list of [Frequently Awkward Questions for the Entertainment Industry](&lt;a href=&quot;http://www.eff.org/IP/faq/&quot;&gt;http://www.eff.org/IP/faq/&lt;/a&gt;), just in case you ever need to challenge one of the deceptive RIAA or MPAA representatives.&lt;/p&gt;
&lt;p&gt;Some of my favorites:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The RIAA has sued over 20,000 music fans for file sharing, who have on average paid a $3,750 settlement. That&apos;s over $75,000,000. Has any money collected from your lawsuits gone to pay actual artists? Where&apos;s all that money going?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The RIAA has sued over 20,000 music fans for file sharing. Recently, an RIAA representative reportedly suggested that &quot;students drop out of college or go to community college in order to be able to afford [P2P lawsuit] settlements.&quot; Do you stand by this advice? Is this really good advice for our children&apos;s futures?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;DRM has clearly failed to stop songs from getting on file sharing networks, but it does prevent me from moving lawfully purchased music onto my iPod and other portable devices. Unlike the major record labels, many popular indie labels offer mp3 downloads through sites like eMusic. Why won&apos;t you let fans purchase mp3s as well?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The major movie studios have been enjoying some of their most profitable years in history over the past five years. Can you cite to any specific studies that prove noncommercial file sharing among fans, as opposed to commercial DVD piracy, has hurt the studios&apos; bottom line in any significant way?
There are plenty of other good points on the site.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(via &lt;a href=&quot;http://www.boingboing.net/2006/07/11/embarrassing_questio.html&quot;&gt;BoingBoing&lt;/a&gt;)&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>Moving to San Mateo</title><link>https://www.digitalhobbit.com/legacy/2006/06/29/moving-to-san-mateo/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/06/29/moving-to-san-mateo/</guid><description>Well, whining about our frustrating rental house hunt experience yesterday must have helped somehow. It turns out that the person who got the last place we applied for decided to pass on it and move to Japan instead. The property manager just called me back to offer us the place, and we&apos;ll be signing the lease tomorrow. Yay! :)</description><pubDate>Thu, 29 Jun 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Well, whining about our frustrating rental house hunt experience yesterday must have helped somehow. It turns out that the person who got the last place we applied for decided to pass on it and move to Japan instead. The property manager just called me back to offer us the place, and we&apos;ll be signing the lease tomorrow. Yay! :)&lt;/p&gt;</content:encoded><category>personal</category></item><item><title>Home Hunting Frustrations</title><link>https://www.digitalhobbit.com/legacy/2006/06/28/home-hunting-frustrations/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/06/28/home-hunting-frustrations/</guid><description>A while ago we decided to move to the Peninsula, preferably somewhere around San Mateo where I work, or surrounding areas like Foster City, Belmont, San Carlos, or Burlingame. We&apos;ll be selling our house and renting for the time being, as I&apos;m not all that confident about the real estate market - at least in the short term.</description><pubDate>Wed, 28 Jun 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A while ago we decided to move to the Peninsula, preferably somewhere around San Mateo where I work, or surrounding areas like Foster City, Belmont, San Carlos, or Burlingame. We&apos;ll be selling our house and renting for the time being, as I&apos;m not all that confident about the real estate market - at least in the short term. But for some reason things are proving to be a bit more difficult than we were expecting. First of all it is of course hard to find the right place (and I admit that we&apos;re quite picky in that regard). Still, in the past month or so we have filled out 4 rental applications. Unfortunately we have not been successful in either of these cases... I&apos;m not sure what we&apos;re doing wrong. Our credit is excellent and we should have a pretty strong application. Maybe this is simply due to the large amount of competition. Now that interest rates have been rising, it seems like more people that might otherwise consider buying decide to rent, and this trend will probably continue.&lt;/p&gt;
&lt;p&gt;Anyway, if you know any good home hunting strategies or have any suggestions for improving our chances to land a place, please let me know. In either case, please wish me luck.&lt;/p&gt;</content:encoded><category>personal</category></item><item><title>Some interesting IT workforce trends</title><link>https://www.digitalhobbit.com/legacy/2006/06/04/some-interesting-it-workforce-trends/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/06/04/some-interesting-it-workforce-trends/</guid><description>I came across two interesting pieces of news this morning: HP is cutting back on telecommuting. By August, most of HP&apos;s IT employees will be required to work from one of HP&apos;s office instead of from home, even though HP pioneered the telecommuting trend starting in the late sixties.</description><pubDate>Sun, 04 Jun 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I came across two interesting pieces of news this morning:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.mercurynews.com/mld/mercurynews/news/14732974.htm&quot;&gt;HP is cutting back on telecommuting&lt;/a&gt;. By August, most of HP&apos;s IT employees will be required to work from one of HP&apos;s office instead of from home, even though HP pioneered the telecommuting trend starting in the late sixties. Apparently they have found that significant efficiencies are gained by allowing the IT employees to collaborate in person and learn from each other. (via &lt;a href=&quot;http://apple.slashdot.org/article.pl?sid=06/06/04/0022215&amp;#x26;from=rss&quot;&gt;Slashdot&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Up until a few years ago I always thought that telecommuting was a good thing, but my views have changed since then - particularly in light of agile methodologies. Obviously, Extreme Programming (or most other agile methodologies) would be impossible without being colocated with the other developers. One of the most obvious practices that would not work when telecommuting is of course &lt;a href=&quot;http://www.pairprogramming.com/&quot;&gt;pair programming&lt;/a&gt;, but this extends to many other agile principles and practices, such as collaborative code ownership and continuous integration. But even outside of agile development, there is simply no substitute for direct collaboration with your fellow developers as well as with other project stakeholders. Developers should learn from each other every day, ad-hoc discussions and model-storming sessions are needed for important design decisions, and last not least I think it is vital to achieve team spirit and common goals.&lt;/p&gt;
&lt;p&gt;I still think that companies should trust their employees enough to allow occasional telecommuting, for example when a doctor&apos;s appointment in the middle of the day makes it infeasible to come into the office. But if this trust does not exist, it seems like the company is facing more important problems, anyway...&lt;/p&gt;
&lt;p&gt;In other news, &lt;a href=&quot;http://timesofindia.indiatimes.com/articleshow/1611960.cms&quot;&gt;Apple is pulling its software operations out of India&lt;/a&gt;. They did not specify any reasons, but presumably this is another move to increase efficiencies. (also via &lt;a href=&quot;http://apple.slashdot.org/article.pl?sid=06/06/04/0022215&amp;#x26;from=rss&quot;&gt;Slashdot&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Perhaps Apple has found that having the developers separated too far from the project stakeholders didn&apos;t work for them?&lt;/p&gt;
&lt;p&gt;It&apos;ll be interesting to keep an eye on these telecommuting and outsourcing trends to see if they signal a global change in corporate workforce strategies...&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Nice Ruby on Rails Reference</title><link>https://www.digitalhobbit.com/legacy/2006/05/30/nice-ruby-on-rails-reference/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/05/30/nice-ruby-on-rails-reference/</guid><description>I just found this very nice Ruby on Rails reference. Both a 33-page PDF version and an even nicer HTML version with colors and syntax highlighting are available.</description><pubDate>Tue, 30 May 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just found this &lt;a href=&quot;http://blog.invisible.ch/2006/05/01/ruby-on-rails-reference/&quot;&gt;very nice Ruby on Rails reference&lt;/a&gt;. Both a 33-page &lt;a href=&quot;http://blog.invisible.ch/files/rails-reference-1.1.pdf&quot;&gt;PDF&lt;/a&gt; version and an even nicer &lt;a href=&quot;http://blog.invisible.ch/files/rails-reference-1.1.html&quot;&gt;HTML&lt;/a&gt; version with colors and syntax highlighting are available.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Temporarily Disabling Comments</title><link>https://www.digitalhobbit.com/legacy/2006/05/18/temporarily-disabling-comments/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/05/18/temporarily-disabling-comments/</guid><description>I had to temporarily disable comments until I have time to upgrade Wordpress and improve my spam protection. I had barely gotten any comment spam over the last year or so, but since yesterday this has changed again. I am currently getting spammed at the rate of about 2 comments per minute...</description><pubDate>Thu, 18 May 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had to temporarily disable comments until I have time to upgrade Wordpress and improve my spam protection.&lt;/p&gt;
&lt;p&gt;I had barely gotten any comment spam over the last year or so, but since yesterday this has changed again. I am currently getting spammed at the rate of about 2 comments per minute...&lt;/p&gt;</content:encoded></item><item><title>WordPress 2.02</title><link>https://www.digitalhobbit.com/legacy/2006/05/18/wordpress-202/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/05/18/wordpress-202/</guid><description>I decided to take my recent comment / trackback spam issues as an opportunity to upgrade Wordpress from 1.5 to the latest version (2.02) and try the new Akismet anti-comment-spam plugin that is included in the release. Comments are re-enabled for now. Let&apos;s see how this goes... Either way, the upgrade was worth it.</description><pubDate>Thu, 18 May 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I decided to take my recent comment / trackback spam issues as an opportunity to upgrade Wordpress from 1.5 to the latest version (2.02) and try the new &lt;a href=&quot;http://akismet.com/&quot;&gt;Akismet&lt;/a&gt; anti-comment-spam plugin that is included in the release.&lt;/p&gt;
&lt;p&gt;Comments are re-enabled for now. Let&apos;s see how this goes... Either way, the upgrade was worth it. The WordPress 2.02 admin interface looks a lot more modern and polished, and I look forward to exploring some of the new themes and plugins.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; So far so good. Akismet already caught over 200 spam comments / trackbacks in the 11 hours since I installed it...&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>Rails Plugins</title><link>https://www.digitalhobbit.com/legacy/2006/05/10/rails-plugins/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/05/10/rails-plugins/</guid><description>Geoffrey Grossenbach recently posted two excellent articles on using and implementing Rails plugins: Complete Guide to Rails Plugins, Part 1 Complete Guide to Rails Plugins, Part 2</description><pubDate>Wed, 10 May 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Geoffrey Grossenbach recently posted two excellent articles on using and implementing Rails plugins:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://nubyonrails.topfunky.com/articles/2006/05/04/the-complete-guide-to-rails-plugins-part-i&quot;&gt;Complete Guide to Rails Plugins, Part 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://nubyonrails.topfunky.com/articles/2006/05/09/the-complete-guide-to-rails-plugins-part-ii&quot;&gt;Complete Guide to Rails Plugins, Part 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category></item><item><title>Shameless Bank of America Advertising Practice</title><link>https://www.digitalhobbit.com/legacy/2006/05/08/shameless-bank-of-america-advertising-practice/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/05/08/shameless-bank-of-america-advertising-practice/</guid><description>My wife just received a new Bank of America debit card and managed to persuade me to activate the card by calling the number on the sticker. In the past, this was usually a simple and painless procedure: enter the card number, the expiration date, and the last 4 digits of the SSN, and you were all set. But this time, I almost couldn&apos;t believe my ears.</description><pubDate>Mon, 08 May 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My wife just received a new Bank of America debit card and managed to persuade me to activate the card by calling the number on the sticker. In the past, this was usually a simple and painless procedure: enter the card number, the expiration date, and the last 4 digits of the SSN, and you were all set. But this time, I almost couldn&apos;t believe my ears. While the activation was supposedly being processed, I had to endure 4 lengthy and annoying advertisements for credit reports and similar services, before I finally got the confirmation that the activation was successfully completed. After each ad, I was given the option to press &quot;1&quot; to take advantage of the &quot;offer&quot;, but I was never given an option to skip further ads. Overall the call probably took about 5 minutes...&lt;/p&gt;
&lt;p&gt;This is an absolutely shameless and rude way to treat your customers. It is one thing to place ads like this on your website or on paper statements, but forcing loyal customers to sit through several minutes worth of this crap is simply unacceptable.&lt;/p&gt;</content:encoded><category>commerce</category></item><item><title>Oblivion re-rated M for Mature</title><link>https://www.digitalhobbit.com/legacy/2006/05/04/oblivion-re-rated-m-for-mature/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/05/04/oblivion-re-rated-m-for-mature/</guid><description>Yesterday the ESRB re-rated Oblivion M for Mature. Bethesda&apos;s response to the re-rating followed shortly afterwards. Apparently the re-rating was mainly triggered by a user created modification that allows players to play with topless versions of female characters (Hot Coffee anyone?). In addition, the ESRB accused Bethesda of improperly disclosing the excessive amounts of blood and gore that go beyond a Teen rating.</description><pubDate>Thu, 04 May 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday the ESRB &lt;a href=&quot;http://www.gamespot.com/news/6148897.html&quot;&gt;re-rated Oblivion M for Mature&lt;/a&gt;. &lt;a href=&quot;http://www.gamespot.com/news/2006/05/03/news_6148925.html&quot;&gt;Bethesda&apos;s response to the re-rating&lt;/a&gt; followed shortly afterwards.&lt;/p&gt;
&lt;p&gt;Apparently the re-rating was mainly triggered by a user created modification that allows players to play with topless versions of female characters (Hot Coffee anyone?). In addition, the ESRB accused Bethesda of improperly disclosing the excessive amounts of blood and gore that go beyond a Teen rating.&lt;/p&gt;
&lt;p&gt;Personally, I don&apos;t agree with the new rating. Oblivion certainly contains a fair amount of violence, but it doesn&apos;t strike me as any worse than similar games in this genre. Still, I understand how a case might be made based on violent content (although it is ridiculous that this was not properly assessed at the time the original rating was assigned, and I can only fault the ESRB, not Bethesda for this). But I simply can&apos;t grasp how the fact that user created modifications can introduce nudity into the game should influence the rating. I believe that this sets a very bad precedent for similar cases and represents a huge threat for consumer created content in general.&lt;/p&gt;
&lt;p&gt;User created game content has been an important feature for the past 10-15 years (dating back to Doom and Quake mods, etc.) that significantly increases the replay value of games and brings out the creative skills in players who otherwise would only be able to consume spoon-fed gaming content... Game developers like Bethesda should be applauded for the extensibility afforded by their plugin system and not be held responsible for the nature of user created content.&lt;/p&gt;
&lt;p&gt;Aside from that, is having some topless female characters (or nude male characters for that matter) in the game really such a big deal? Maybe I&apos;m just desensitized because I&apos;m from Germany (where day time TV commercials for almost any type of consumer product, ranging from soap to cereal bars, contain nudity), but I just couldn&apos;t care less. Let the teenies have some fun with the game...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; I just filed a complaint with the ESRB, and I encourage you to &lt;a href=&quot;http://www.esrb.org/about/contact.jsp&quot;&gt;do the same&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>games</category></item><item><title>Upcoming MMO Games</title><link>https://www.digitalhobbit.com/legacy/2006/05/04/upcoming-mmo-games/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/05/04/upcoming-mmo-games/</guid><description>Joystiq posted an excellent roundup of 31 upcoming MMO games. Themes include everything from the standard fantasy and sci-fi fare to wild west, robot, zombie, sex, pirate, and post-apocalyptic themed worlds. Similarly, many of the titles are pretty traditional MMORPG games, but some provide an emphasis on strategy, FPS gameplay, chat and casual gameplay, or other variations.</description><pubDate>Thu, 04 May 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Joystiq posted an excellent &lt;a href=&quot;http://www.joystiq.com/2006/05/04/pre-e3-mmo-roundup/&quot;&gt;roundup of 31 upcoming MMO games&lt;/a&gt;. Themes include everything from the standard fantasy and sci-fi fare to wild west, robot, zombie, sex, pirate, and post-apocalyptic themed worlds. Similarly, many of the titles are pretty traditional MMORPG games, but some provide an emphasis on strategy, FPS gameplay, chat and casual gameplay, or other variations.&lt;/p&gt;
&lt;p&gt;The games that sound most interesting to me are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ageofconan.com/&quot;&gt;Age of Conan&lt;/a&gt; (described as an action-themed MMO set in a &quot;dark, lush, violent and sinful&quot; world)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.banghowdy.com/&quot;&gt;Bang! Howdy&lt;/a&gt; (a casual, wild west themed game)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.darkandlight.com/&quot;&gt;Dark and Light&lt;/a&gt; (billed as the largest MMORPG ever)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.darkfallonline.com/&quot;&gt;Darkfall Online&lt;/a&gt; (combines MMO and RTS elements)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dofus-arena.com/&quot;&gt;Dofus Arena&lt;/a&gt; (a casual, flash based MMO)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.webzengames.com/Game/Huxley/&quot;&gt;Huxley&lt;/a&gt; (an MMOFPS)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lotro.turbine.com/&quot;&gt;Lord of the Rings Online&lt;/a&gt; (looks like pretty standard fantasy MMORPG fare but nevertheless intriguing due to the Middle-Earth setting)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.burningsea.com/&quot;&gt;Pirates of the Burning Sea&lt;/a&gt; (a Pirate themed MMORPG - finally!)&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>games</category></item><item><title>Ron Jeffries on the Impact of Overtime on Productivity</title><link>https://www.digitalhobbit.com/legacy/2006/05/02/ron-jeffries-on-the-impact-of-overtime-on-productivity/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/05/02/ron-jeffries-on-the-impact-of-overtime-on-productivity/</guid><description>Extreme Programming advocate Ron Jeffries recently posted a very good article on the Impact of Overtime on Productivity. Among many other good points, he lists the following indicators that things might be going wrong. I am sure some of these will look familiar to many of you... Is the ratio of test lines to code lines going down? Is the ratio of customer tests to features going down?</description><pubDate>Tue, 02 May 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Extreme Programming advocate &lt;a href=&quot;http://www.xprogramming.com/index.htm&quot;&gt;Ron Jeffries&lt;/a&gt; recently posted a very good article on the &lt;a href=&quot;http://www.xprogramming.com/xpmag/jatSustainablePace.htm&quot;&gt;Impact of Overtime on Productivity&lt;/a&gt;. Among many other good points, he lists the following indicators that things might be going wrong. I am sure some of these will look familiar to many of you...&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Is the ratio of test lines to code lines going down?&lt;/li&gt;
&lt;li&gt;Is the ratio of customer tests to features going down?&lt;/li&gt;
&lt;li&gt;Is time spent fixing bugs going up?&lt;/li&gt;
&lt;li&gt;Are people pairing less often?&lt;/li&gt;
&lt;li&gt;Are integrations taking longer?&lt;/li&gt;
&lt;li&gt;Is the build broken light coming on more often and staying on longer?&lt;/li&gt;
&lt;li&gt;Are cosmetic tasks in the code being skipped?&lt;/li&gt;
&lt;li&gt;Is the refactoring board filling up with red cards?&lt;/li&gt;
&lt;li&gt;Is the team room messier than it used to be?&lt;/li&gt;
&lt;li&gt;Are there more food containers in the waste cans?&lt;/li&gt;
&lt;li&gt;Are people asking more questions about what is going on in the standup meeting?&lt;/li&gt;
&lt;li&gt;Have you stopped even having a standup meeting?&lt;/li&gt;
&lt;li&gt;Are there more arguments, more people who are angry with each other?&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;</content:encoded><category>development</category></item><item><title>Some Thoughts on Downloadable Content</title><link>https://www.digitalhobbit.com/legacy/2006/04/27/some-thoughts-on-downloadable-content/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/04/27/some-thoughts-on-downloadable-content/</guid><description>I just posted an article about downloadable game content on my Oblivion Blog. It&apos;s not all that Oblivion specific and contains some thoughts on the current state of downloadable content as well as the future direction, so I am linking to it here because I figured that it might be of general interest.</description><pubDate>Thu, 27 Apr 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just posted an article about &lt;a href=&quot;http://oblivion.digitalhobbit.com/2006/04/26/some-thoughts-on-downloadable-content/&quot;&gt;downloadable game content&lt;/a&gt; on my Oblivion Blog. It&apos;s not all that Oblivion specific and contains some thoughts on the current state of downloadable content as well as the future direction, so I am linking to it here because I figured that it might be of general interest.&lt;/p&gt;</content:encoded><category>games</category></item><item><title>Got API?</title><link>https://www.digitalhobbit.com/legacy/2006/04/15/got-api/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/04/15/got-api/</guid><description>gotAPI.com provides a very nice collection of reference documentation for various languages and technologies, including HTML, CSS, Ruby (incl. Rails), Java, various Java APIs (Struts, etc.), MySQL, Ant, and more. Very handy!</description><pubDate>Sat, 15 Apr 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://gotapi.com/&quot;&gt;gotAPI.com&lt;/a&gt; provides a very nice collection of reference documentation for various languages and technologies, including HTML, CSS, Ruby (incl. Rails), Java, various Java APIs (Struts, etc.), MySQL, Ant, and more. Very handy!&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Apple Bootcamp</title><link>https://www.digitalhobbit.com/legacy/2006/04/08/apple-bootcamp/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/04/08/apple-bootcamp/</guid><description>Earlier this week, Apple unexpectedly released their Bootcamp software, which allows owners of Intel based Macs to dual-boot into Windows XP. Bootcamp itself appears to mainly consist of the required Windows XP drivers, whereas a firmware update is actually responsible for enabling the dual boot feature. For the most part, this sounds like a pretty good deal to me.</description><pubDate>Sat, 08 Apr 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Earlier this week, Apple unexpectedly released their &lt;a href=&quot;http://www.apple.com/macosx/bootcamp/&quot;&gt;Bootcamp&lt;/a&gt; software, which allows owners of Intel based Macs to dual-boot into Windows XP. Bootcamp itself appears to mainly consist of the required Windows XP drivers, whereas a firmware update is actually responsible for enabling the dual boot feature.&lt;/p&gt;
&lt;p&gt;For the most part, this sounds like a pretty good deal to me. I don&apos;t own a Mac, but I am pretty certain that my next computer (Notebook or Desktop) will be a Mac, and this feature adds extra confidence to first time Mac users that they will be able to continue to run their Windows applications. For me, that mostly applies to games, as I have otherwise mostly switched to Linux. On the other hand, I see some danger in this feature: Relatively few games are being released for Mac right now, with some notable exceptions like World of Warcraft. I am hoping to see an upwards trend in Mac support, but I wonder if game developers will use the fact that Mac users can now dual boot into Windows as an excuse not to do any native Mac ports. We&apos;ll see...&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Oblivion</title><link>https://www.digitalhobbit.com/legacy/2006/03/25/oblivion/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/03/25/oblivion/</guid><description>On Friday I finally got my copy of Oblivion (thanks Amazon for taking so long on this one...). Anyway, I&apos;ve been a big fan of the previous Elder Scrolls games (starting with Arena about 13 years ago) and really look forward to playing this latest installment.</description><pubDate>Sat, 25 Mar 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;On Friday I finally got my copy of Oblivion (thanks &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;#x26;tag=digitalhobbit-20&amp;#x26;camp=1789&amp;#x26;creative=9325&amp;#x26;path=tg%2Fdetail%2F-%2FB000BNKBCI%2Fsr%3D8-2%2Fqid%3D1143351602%2Fref%3Dpd_bbs_2%3F%255Fencoding%3DUTF8%26v%3Dglance&quot;&gt;Amazon&lt;/a&gt; for taking so long on this one...). Anyway, I&apos;ve been a big fan of the previous &lt;a href=&quot;http://elderscrolls.com&quot;&gt;Elder Scrolls&lt;/a&gt; games (starting with Arena about 13 years ago) and really look forward to playing this latest installment. Rather than bore everyone else with this (as I will undoubtedly feel the need to share my enthusiasm ;) ), I have decided to start an &lt;a href=&quot;http://oblivion.digitalhobbit.com&quot;&gt;Oblivion Blog&lt;/a&gt;, so check this out if you&apos;re interested in this game.&lt;/p&gt;</content:encoded><category>games</category></item><item><title>Who needs P2P when we have Google?</title><link>https://www.digitalhobbit.com/legacy/2006/03/20/who-needs-p2p-when-we-have-google/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/03/20/who-needs-p2p-when-we-have-google/</guid><description>Here&apos;s a cool way of using Google to find MP3s. Essentially, it&apos;s a simple matter of using a query like the following: intitle:index.of &quot;mp3&quot; +&quot;Keyword&quot; -htm -html -php -asp &quot;Last Modified&quot; (replace Keyword with the name of an artist, song, etc.) There are a whole bunch of similar (and other) Google tricks on this website. Update: The following two websites further automate this process: G2P ExploSeek</description><pubDate>Mon, 20 Mar 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here&apos;s a cool way of &lt;a href=&quot;http://www.emewiki.com/article.php?story=20060317023659853&quot;&gt;using Google to find MP3s&lt;/a&gt;. Essentially, it&apos;s a simple matter of using a query like the following:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;intitle:index.of &quot;mp3&quot; +&quot;Keyword&quot; -htm -html -php -asp &quot;Last Modified&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;(replace Keyword with the name of an artist, song, etc.)&lt;/p&gt;
&lt;p&gt;There are a whole bunch of similar (and other) Google tricks &lt;a href=&quot;http://www.searchlores.org/rabbits.htm&quot;&gt;on this website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Update: The following two websites further automate this process:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://g2p.org/&quot;&gt;G2P&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.exploseek.com&quot;&gt;ExploSeek&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>technology</category></item><item><title>Google Mars</title><link>https://www.digitalhobbit.com/legacy/2006/03/12/google-mars/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/03/12/google-mars/</guid><description>It hasn&apos;t been officially announced yet, but as reported by this blog post, Google has launched a new service: Google Mars It&apos;s just like Google Maps, except that it allows you to view Mars (doh!). There are three different views: Elevation, Visible, and Infrared. There are also clickable landmarks for the various successful and unsuccessful Mars spacecraft, lists of named regions and craters, and more.</description><pubDate>Sun, 12 Mar 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It hasn&apos;t been officially announced yet, but as reported by &lt;a href=&quot;http://blogs.zdnet.com/Google/?p=128&quot;&gt;this blog post&lt;/a&gt;, Google has launched a new service: &lt;a href=&quot;http://www.google.com/mars/&quot;&gt;Google Mars&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s just like Google Maps, except that it allows you to view Mars (doh!). There are three different views: Elevation, Visible, and Infrared. There are also clickable landmarks for the various successful and unsuccessful Mars spacecraft, lists of named regions and craters, and more.&lt;/p&gt;
&lt;p&gt;Check it out, it&apos;s pretty cool!&lt;/p&gt;</content:encoded></item><item><title>Need a tax break? Go do some whale hunting...</title><link>https://www.digitalhobbit.com/legacy/2006/02/25/need-a-tax-break-go-do-some-whale-hunting/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/02/25/need-a-tax-break-go-do-some-whale-hunting/</guid><description>While working on my taxes, I just came across this little gem in the IRS instructions for itemized deductions: Certain whaling captains may be able to claim a charitable deduction for whale hunting expenses. See Gifts to Charity on page A-6 for more details. WTF???</description><pubDate>Sat, 25 Feb 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While working on my taxes, I just came across this little gem in the IRS instructions for itemized deductions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Certain whaling captains may be able to claim a charitable deduction for whale hunting expenses. See Gifts to Charity on page A-6 for more details.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;WTF???&lt;/p&gt;</content:encoded><category>fun</category><category>society</category></item><item><title>Need customer support?</title><link>https://www.digitalhobbit.com/legacy/2006/02/15/need-customer-support/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/02/15/need-customer-support/</guid><description>If you&apos;ve ever been annoyed at how difficult it can be to get a customer support representative on the line instead of having to navigate through levels and levels of automated voice systems, this might be for you: gethuman cheats. The comprehensive list of phone numbers includes many banks, retailers, manufacturers, airlines, phone and other utility companies, and more. (via BoingBoing)</description><pubDate>Wed, 15 Feb 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you&apos;ve ever been annoyed at how difficult it can be to get a customer support representative on the line instead of having to navigate through levels and levels of automated voice systems, this might be for you: &lt;a href=&quot;http://gethuman.com/us/&quot;&gt;gethuman cheats&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The comprehensive list of phone numbers includes many banks, retailers, manufacturers, airlines, phone and other utility companies, and more.&lt;/p&gt;
&lt;p&gt;(via &lt;a href=&quot;http://www.boingboing.net/2006/02/14/customer_service_pho.html&quot;&gt;BoingBoing&lt;/a&gt;)&lt;/p&gt;</content:encoded><category>commerce</category></item><item><title>Human-Animal Hybrids</title><link>https://www.digitalhobbit.com/legacy/2006/02/03/human-animal-hybrids/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/02/03/human-animal-hybrids/</guid><description>I so gotta get me one of these Human-Animal Hybrids T-Shirts! Thanks to BoingBoing for the link, and thanks to George Bush for making this possible. :)</description><pubDate>Fri, 03 Feb 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I so gotta get me one of these &lt;a href=&quot;http://www.humananimalhybrid.net/&quot;&gt;Human-Animal Hybrids T-Shirts&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Thanks to BoingBoing for the &lt;a href=&quot;http://www.boingboing.net/2006/02/01/humananimal_hybrid_t.html&quot;&gt;link&lt;/a&gt;, and thanks to George Bush for making this possible.&lt;/p&gt;
&lt;p&gt;:)&lt;/p&gt;</content:encoded><category>fun</category></item><item><title>Switchtower and ActiveRecord Migrations</title><link>https://www.digitalhobbit.com/legacy/2006/02/02/switchtower-and-activerecord-migrations/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/02/02/switchtower-and-activerecord-migrations/</guid><description>In my spare time I&apos;ve been playing with Rails for a while now. This week I tried using SwitchTower and ActiveRecord Migrations for the first time, and I&apos;m very impressed. Migrations provide a way for versioning and applying database changes. A simple call to script/generate migration MigrationName generates a new blank migration file with the appropriate version number.</description><pubDate>Thu, 02 Feb 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In my spare time I&apos;ve been playing with Rails for a while now. This week I tried using &lt;a href=&quot;http://manuals.rubyonrails.com/read/book/17&quot;&gt;SwitchTower&lt;/a&gt; and &lt;a href=&quot;http://api.rubyonrails.com/classes/ActiveRecord/Migration.html&quot;&gt;ActiveRecord Migrations&lt;/a&gt; for the first time, and I&apos;m very impressed.&lt;/p&gt;
&lt;p&gt;Migrations provide a way for versioning and applying database changes. A simple call to &lt;code&gt;script/generate migration MigrationName&lt;/code&gt; generates a new blank migration file with the appropriate version number. The file contains two methods &lt;code&gt;up&lt;/code&gt; and &lt;code&gt;down&lt;/code&gt;, which up- and down-grade (for rollback purposes) the database respectively. After adding the necessary statements to both methods (for example an &lt;code&gt;add_column&lt;/code&gt; call in &lt;code&gt;up&lt;/code&gt; and the corresponding &lt;code&gt;remove_column&lt;/code&gt; call in &lt;code&gt;down&lt;/code&gt;), applying the migration is as easy as running &lt;code&gt;rake migrate&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;SwitchTower is a deployment framework, although this term doesn&apos;t really do it justice. It is highly configurable and able to execute multiple commands in parallel on different servers. This can be used to upgrade several application and database servers at the same time. While it can theoretically be used for any type of application (even non-Ruby applications), it is very much geared towards Rails and works best when used in conjunction with a Subversion or CVS repository.&lt;/p&gt;
&lt;p&gt;SwitchTower can be installed using &lt;code&gt;gem install switchtower&lt;/code&gt;. After that, a Rails app needs to be enabled for SwitchTower by running the following command: &lt;code&gt;switchtower --apply-to /path/to/my/app&lt;/code&gt;. This copies over the necessary Rake tasks and creates a default &lt;a href=&quot;http://manuals.rubyonrails.com/read/chapter/102&quot;&gt;recipe&lt;/a&gt; in &lt;code&gt;config/deploy.rb&lt;/code&gt;, which defines all deployment parameters for the application (repository, the various servers, username, etc.). After customizing the recipe, a number of SwitchTower tasks can be invoked via Rake. A comprehensive list of all relevant tasks can be obtained via &lt;code&gt;rake show_deploy_tasks&lt;/code&gt;. The most important task is &lt;code&gt;deploy&lt;/code&gt;, which deploys the latest version of the application to the remote servers. In case anything goes wrong, the &lt;code&gt;rollback&lt;/code&gt; task can be used to quickly roll back to the previously deployed version. A variant of the &lt;code&gt;deploy&lt;/code&gt; task, &lt;code&gt;deploy_with_migrations&lt;/code&gt; performs the necessary ActiveRecord Migrations (see above) as part of the deployment. Additionally, any task can be executed remotely via the &lt;code&gt;remote_exec&lt;/code&gt; task. For example, &lt;code&gt;rake remote_exec ACTION=migrate&lt;/code&gt; performs the remote database migrations. Note that if you haven&apos;t done so already, you will probably want to setup ssh keys on the remote server in order to avoid having to enter your password multiple times during the deployment process.&lt;/p&gt;
&lt;p&gt;So far I have only scratched the surface of SwitchTower. The basic functionality is easy to setup and use, and the &lt;a href=&quot;http://manuals.rubyonrails.com/read/book/17&quot;&gt;comprehensive documentation&lt;/a&gt; reveals a wealth of additional features.&lt;/p&gt;
&lt;p&gt;If you are using a hosting provider, you may want to google for some existing SwitchTower recipes for your provider. I am using &lt;a href=&quot;http://www.dreamhost.com/r.cgi?sfgeek&quot;&gt;DreamHost&lt;/a&gt;, and found Geoffrey Grossenbach&apos;s &lt;a href=&quot;http://nubyonrails.com/pages/shovel_dreamhost&quot;&gt;DreamHost SwitchTower recipe&lt;/a&gt;. I ended up having to change most of the file because my setup varied considerably from the assumptions in this recipe, but depending on your setup this may be a good starting point.&lt;/p&gt;
&lt;p&gt;If you are working with Rails, I strongly encourage you to check out these two technologies, as I can guarantee that they will make your life simpler.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Waterfall 2006</title><link>https://www.digitalhobbit.com/legacy/2006/01/26/waterfall-2006/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/01/26/waterfall-2006/</guid><description>Both a coworker and Andy Hunt&apos;s blog pointed me to this website. It&apos;s about time the venerable &quot;Waterfall&quot; software development methodology got its own conference: Waterfall 2006. :)</description><pubDate>Thu, 26 Jan 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Both a coworker and &lt;a href=&quot;http://toolshed.com/blog/articles/2006/01/26/return-of-the-waterfall-methodology&quot;&gt;Andy Hunt&apos;s blog&lt;/a&gt; pointed me to this website. It&apos;s about time the venerable &quot;Waterfall&quot; software development methodology got its own conference: &lt;a href=&quot;http://www.waterfall2006.com/&quot;&gt;Waterfall 2006&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;:)&lt;/p&gt;</content:encoded><category>fun</category></item><item><title>Enough with the Web 2.0 hype already...</title><link>https://www.digitalhobbit.com/legacy/2006/01/15/enough-with-the-web-20-hype-already/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/01/15/enough-with-the-web-20-hype-already/</guid><description>If you&apos;re getting tired of the hype around &quot;Web 2.0&quot;, you may get a kick out of this: Wankr</description><pubDate>Sun, 15 Jan 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you&apos;re getting tired of the hype around &quot;Web 2.0&quot;, you may get a kick out of this: &lt;a href=&quot;http://www.parm.net/web2.0/&quot;&gt;Wankr&lt;/a&gt;&lt;/p&gt;</content:encoded><category>fun</category></item><item><title>Mac Envy</title><link>https://www.digitalhobbit.com/legacy/2006/01/10/mac-envy/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/01/10/mac-envy/</guid><description>I so need to get me one of these babies: MacBook Pro.</description><pubDate>Tue, 10 Jan 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I so need to get me one of these babies: &lt;a href=&quot;http://www.apple.com/macbookpro/&quot;&gt;MacBook Pro&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The specs are quite awesome:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;15.4-inch TFT display with 1440x900 resolution&lt;/li&gt;
&lt;li&gt;1.83GHz Intel Core Duo processor with 2MB shared L2 Cache&lt;/li&gt;
&lt;li&gt;667MHz frontside bus&lt;/li&gt;
&lt;li&gt;1GB (single SO-DIMM) 667MHz DDR2 SDRAM (PC2-5300)&lt;/li&gt;
&lt;li&gt;100GB 5400rpm Serial ATA hard drive&lt;/li&gt;
&lt;li&gt;Slot-load SuperDrive (DVDÂ±RW/CD-RW)&lt;/li&gt;
&lt;li&gt;ATI Mobility Radeon X1600 with 256MB GDDR3 memory&lt;/li&gt;
&lt;li&gt;iSight camera&lt;/li&gt;
&lt;li&gt;801.11g and Bluetooth 2.0&lt;/li&gt;
&lt;li&gt;Gigabit Ethernet&lt;/li&gt;
&lt;li&gt;Apple Remote&lt;/li&gt;
&lt;li&gt;iLife 06&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Too bad I don&apos;t have $2500 to spare right now... Let&apos;s hope for a big tax refund this year.&lt;/p&gt;
&lt;p&gt;Still, I&apos;m somewhat surprised that Apple gave up on the PowerBook brand that they spent a lot of time on developing. But then again I have no doubt that the new MacBook brand will catch on very quickly...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Maybe I should hold off. Based on this &lt;a href=&quot;http://wiredblogs.tripod.com/cultofmac/index.blog?entry_id=1385976&quot;&gt;inside scoop&lt;/a&gt;, some really cool features might be coming our way soon...&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>More iPod Trouble</title><link>https://www.digitalhobbit.com/legacy/2006/01/09/more-ipod-trouble/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/01/09/more-ipod-trouble/</guid><description>This morning I turned on my iPod after not having used it over the weekend, and I was surprised to find that it had been completely erased, as if I had restored it to factory settings using the iPod updater. It prompted me to select my language, I had to re-enter all my settings, and all my songs and podcasts were gone.</description><pubDate>Mon, 09 Jan 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This morning I turned on my iPod after not having used it over the weekend, and I was surprised to find that it had been completely erased, as if I had restored it to factory settings using the iPod updater. It prompted me to select my language, I had to re-enter all my settings, and all my songs and podcasts were gone. I had used my iPod on Friday without any problems, and I hadn&apos;t used it since then and not even plugged into my PC or anything. The battery meter was still almost full.&lt;/p&gt;
&lt;p&gt;This is the second problem that I&apos;ve had with my iPod, and I&apos;m slowly losing confidence in it... At this point I would certainly not entrust it with any important data that is not backed up elsewhere, for example by syncing my digital camera to it while traveling. I wonder if this is a hardware problem and if I should try to get it replaced by Apple. &lt;em&gt;sigh&lt;/em&gt;...&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>Learn to Program</title><link>https://www.digitalhobbit.com/legacy/2006/01/08/learn-to-program/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/01/08/learn-to-program/</guid><description>The Pragmatic Programmers have published another Ruby book: &quot;Learn to Program&quot;, by Chris Pine. The book is intended for new or non-programmers and teaches programming from the ground up - variables, flow control, and everything. It&apos;s nice to see Ruby move even more into the mainstream, and this book looks like a great introduction for new programmers.</description><pubDate>Sun, 08 Jan 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The Pragmatic Programmers have published another Ruby book: &lt;a href=&quot;http://pragmaticprogrammer.com/titles/fr_ltp/index.html&quot;&gt;&quot;Learn to Program&quot;&lt;/a&gt;, by Chris Pine. The book is intended for new or non-programmers and teaches programming from the ground up - variables, flow control, and everything. It&apos;s nice to see Ruby move even more into the mainstream, and this book looks like a great introduction for new programmers.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Linux Anniversary (sort of)</title><link>https://www.digitalhobbit.com/legacy/2006/01/08/linux-anniversary-sort-of/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/01/08/linux-anniversary-sort-of/</guid><description>I just realized that it&apos;s been a little over a year since I pretty much permanently switched from Windows to Linux! I had been using Linux on and off over the past 10 years or so, but it wasn&apos;t until a year ago that I seriously ditched Windows in favor of Linux. On December 30, 2004 I blogged about my Gentoo installation, which I had completed the week before.</description><pubDate>Sun, 08 Jan 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just realized that it&apos;s been a little over a year since I pretty much permanently switched from Windows to Linux! I had been using Linux on and off over the past 10 years or so, but it wasn&apos;t until a year ago that I seriously ditched Windows in favor of Linux.&lt;/p&gt;
&lt;p&gt;On December 30, 2004 I &lt;a href=&quot;/legacy/2004/12/30/gentoo-linux/&quot;&gt;blogged about my Gentoo installation&lt;/a&gt;, which I had completed the week before. I kept Windows as a dual boot option, but these days I pretty much never boot Windows any more.&lt;/p&gt;
&lt;p&gt;Overall I was quite happy with Gentoo, and I still have a lot of admiration for this distribution and the community around it, but a few months ago I &lt;a href=&quot;/legacy/2005/10/28/kubuntu/&quot;&gt;decided to switch to Kubuntu&lt;/a&gt;, and I&apos;ve been extremely happy with this distribution so far.&lt;/p&gt;
&lt;p&gt;These days my Linux box serves many purposes, and it serves all of them well. First and foremost, it is my primary desktop machine that I use for email, browsing the web, posting to my blog, occasionally watching movies, doing some minor graphics work here and there, etc. Second, it is my development workstation that I use both for my personal projects, as well as occasional work related programming tasks. Third, it acts as a server: My MP3 collection is exposed to our various laptops via a Samba share. Recently I have also started running &lt;a href=&quot;http://galleon.tv/&quot;&gt;Galleon&lt;/a&gt;, the open source Tivo media server. This application is actually quite impressive, and I&apos;ll blog about it in more detail some other day.&lt;/p&gt;
&lt;p&gt;I do have to admit that I am still running Windows on my laptop. The main reason for this is actually iTunes, which is still far superior to any Linux application when it comes to syncing with an iPod. Otherwise, I would seriously consider installing &lt;a href=&quot;http://www.kubuntu.org/&quot;&gt;Kubuntu&lt;/a&gt; on my laptop as well, as I am very impressed with it and confident that it will run just as smoothly on my laptop. However, this is probably a moot point, because I know that I&apos;ll ultimately replace this with a PowerBook anyway. :)&lt;/p&gt;
&lt;p&gt;Anyway, I&apos;d like to point out that Linux is an awesome operating system. It&apos;s come a long way in the past 10 years and should be considered a very serious contender to Windows. Until very recently, I was still quite disappointed with the state of Linux desktop environments. However, this is no longer the case. KDE 3.4.3 (which is included in the last official Kubuntu release, &quot;Breezy&quot;) is great, and the recently released KDE 3.5 (which I haven&apos;t tried yet) is supposed to be even better. I personally like the recent KDE versions much better than Gnome. Anyway, if you&apos;ve mainly been using Windows so far, you&apos;re technically minded, and you don&apos;t have any highly specialized Windows software needs, I strongly encourage you to take the plunge and at least set up a dual boot Linux installation. You may find that you don&apos;t even want to boot back into Windows any more...&lt;/p&gt;</content:encoded><category>linux</category><category>technology</category></item><item><title>External Hard Drives / Linux Device Names</title><link>https://www.digitalhobbit.com/legacy/2006/01/04/external-hard-drives-linux-device-names/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/01/04/external-hard-drives-linux-device-names/</guid><description>I just added another external hard drive to my Linux system, and now I&apos;m wondering about a few potential issues.</description><pubDate>Wed, 04 Jan 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just added another external hard drive to my Linux system, and now I&apos;m wondering about a few potential issues. At this point I have one permanently attached external hard drive, one backup hard drive that I only hook up occasionally, my iPod (which I mostly use on my Windows laptop because I don&apos;t want to miss out on iTunes, but which I want to be able to occasionally hook up to my Linux box to transfer files, etc.), and a USB thumb drive.&lt;/p&gt;
&lt;p&gt;Linux does a nice job of recognizing and mounting my drives whenever I attach them, but it seems to assign device names based on the order that the drives are connected. In my case for example, &quot;dev/sda&quot; and &quot;dev/sdb&quot; are used by two internal drives. &quot;dev/sdc&quot; is generally assigned to my permanently attached external drive. The next drive I attach after that (whether it is my backup drive, my iPod, or my USB thumb drive) gets assigned to &quot;dev/sdd&quot;.&lt;/p&gt;
&lt;p&gt;This obviously is not ideal, as I want to be able to auto-mount all my drives based on appropriate entries in the fstab, i.e. &quot;/media/ipod&quot;, &quot;/media/backup&quot;, etc. My initial Google searches have been fruitless, but it really seems like there should be some way of permanently associating a particular drive with a device name. I&apos;m not sure what kind of unique identifiers hard drives have, but there&apos;s got to be something suitable. If nothing else, even basing this association on the drive model (as it is displayed in &quot;/proc/scsi/scsi&quot; on my Ubuntu system) would work for me, although this would generally be a less ideal solution since one might own several drives of the same model.&lt;/p&gt;
&lt;p&gt;Anyway, if anybody is aware of any elegant solutions to this problem, please leave a comment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; I was able to get this working. It turns out that there are actually several different ways to configure this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the fstab, specify LABEL=Label_Name instead of a device name. One downside of this approach is that volume labels aren&apos;t guaranteed to be unique, so you could get some unexpected results, particularly if you hook up somebody else&apos;s external drive.&lt;/li&gt;
&lt;li&gt;Instead of a label, you can also specify a UUID. Simply call the &quot;blkid&quot; command to print the UUIDs for all your drives, and then add UUID=Your_UUID to your fstab. This is what I ended up doing and it works like a charm.&lt;/li&gt;
&lt;li&gt;Use the &quot;devlabel&quot; script to set up symbolic links to devices that automatically get updated when the actual device changes. Then add an entry to fstab that uses the new symbolic device name.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find additional information &lt;a href=&quot;http://www.lissot.net/partition/ext2fs/labels.html&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://www.wlug.org.nz/PartitioningSuggestions&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to Carl for pointing me in the right direction.&lt;/p&gt;</content:encoded><category>technology</category><category>linux</category></item><item><title>Koders</title><link>https://www.digitalhobbit.com/legacy/2006/01/04/koders/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/01/04/koders/</guid><description>Koders is a very cool source code search engine. It indexes many open source projects and covers a wide range of programming languages, including of course Java and Ruby, but also more obscure languages. Clicking on a search result brings up a very nice syntax highlighted version of the source code.</description><pubDate>Wed, 04 Jan 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.koders.com/&quot;&gt;Koders&lt;/a&gt; is a very cool source code search engine. It indexes many open source projects and covers a wide range of programming languages, including of course Java and Ruby, but also more obscure languages. Clicking on a search result brings up a very nice syntax highlighted version of the source code. Many elements in the source code (such as other class names within Java code) are themselves clickable and bring up the search results for the selected element.&lt;/p&gt;
&lt;p&gt;This seems like a very powerful tool that could come in handy for at least two different purposes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Quickly finding the source code for an open source library that you are using (or planning to use), without having to download and unpack the source distributionl, for example in order to better understand the behavior of a class.&lt;/li&gt;
&lt;li&gt;Looking for examples of how certain classes or methods are used.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&apos;ll try to remember Koders the next time I run into one of these cases.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>The Official God FAQ</title><link>https://www.digitalhobbit.com/legacy/2006/01/02/the-official-god-faq/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/01/02/the-official-god-faq/</guid><description>I promise after this post I&apos;ll shut up with the Atheist posts for a while. But first: The Official God FAQ This is absolutely hilarious! Pay attention to the disclaimer. :) And while we&apos;re on the subject, here&apos;s a partly serious, partly humorous proof that there is no god. A lot of good links on that site, too.</description><pubDate>Mon, 02 Jan 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I promise after this post I&apos;ll shut up with the Atheist posts for a while. But first:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.400monkeys.com/God/&quot;&gt;The Official God FAQ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is absolutely hilarious! Pay attention to the disclaimer. :)&lt;/p&gt;
&lt;p&gt;And while we&apos;re on the subject, here&apos;s a partly serious, partly humorous &lt;a href=&quot;http://www.update.uu.se/~fbendz/nogod/no_god.htm&quot;&gt;proof that there is no god&lt;/a&gt;. A lot of good links on that site, too.&lt;/p&gt;</content:encoded><category>fun</category><category>society</category></item><item><title>Amazing Movie: The God Who Wasn&apos;t There</title><link>https://www.digitalhobbit.com/legacy/2006/01/01/amazing-movie-the-god-who-wasnt-there/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2006/01/01/amazing-movie-the-god-who-wasnt-there/</guid><description>This weekend I&apos;ve watched an amazing movie: The God Who Wasn&apos;t There. It critically explores many aspects of Christianity, and in particular the myth of the existence of Jesus. It accomplishes all this in a manner that is both convincing as well as having many funny moments.</description><pubDate>Sun, 01 Jan 2006 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This weekend I&apos;ve watched an amazing movie: &lt;a href=&quot;http://www.thegodmovie.com&quot;&gt;The God Who Wasn&apos;t There&lt;/a&gt;. It critically explores many aspects of Christianity, and in particular the myth of the existence of Jesus. It accomplishes all this in a manner that is both convincing as well as having many funny moments. Sadly, I doubt that this movie will manage to strike sense into any Christian fundamentalists, but any open minded person, religious or not, should do themselves a favor and see this movie.&lt;/p&gt;
&lt;p&gt;You can buy the DVD directly at the website above, or from &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;#x26;tag=digitalhobbit-20&amp;#x26;camp=1789&amp;#x26;creative=9325&amp;#x26;path=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB000CAPZBC%2Fqid%3D1136183101%2Fsr%3D8-1%2Fref%3Dpd_bbs_1%3Fn%3D507846%2526s%3Ddvd%2526v%3Dglance&quot;&gt;Amazon&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>society</category></item><item><title>Merry Crispness</title><link>https://www.digitalhobbit.com/legacy/2005/12/25/merry-crispness/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/12/25/merry-crispness/</guid><description>Merry Crispness \- or Christmas, Hannukah, Winter Solstice, or whatever you may or may not be celebrating. On December 25th we celebrate Newton&apos;s Birthday because Newton actually was born on December 25th. We call the holiday Crispness because it&apos;s about keeping your mind crisp. And it&apos;s not a coincidence that it&apos;s the same day as Christmas and the Yule holiday where Christmas came from.</description><pubDate>Sun, 25 Dec 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.churchofreality.org/wisdom/holidays/holidays/newtons_birthday.html&quot;&gt;Merry Crispness&lt;/a&gt; - or Christmas, Hannukah, Winter Solstice, or whatever you may or may not be celebrating.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;On December 25th we celebrate Newton&apos;s Birthday because Newton actually was born on December 25th. We call the holiday Crispness because it&apos;s about keeping your mind crisp. And it&apos;s not a coincidence that it&apos;s the same day as Christmas and the Yule holiday where Christmas came from. It is the day that we celebrate the Tree of Knowledge, which represents the sum total of all human understanding. We use the traditional pine tree, which is already a very fractal looking tree to represent the Tree of Knowledge. The tree is decorated with lights and ornaments symbolizing The Sacred Network or the Internet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On that note, the &lt;a href=&quot;http://www.churchofreality.org/wisdom/&quot;&gt;Church of Reality&lt;/a&gt; recently adopted the &lt;a href=&quot;http://www.venganza.org/&quot;&gt;Flying Spaghetti Monster&lt;/a&gt; as its &lt;a href=&quot;http://www.churchofreality.org/wisdom/flying_spaghetti_monster/&quot;&gt;Official Fictional Deity&lt;/a&gt;. This seems like a nice marriage and makes it a lot easier for me, as I strongly sympathize with both movements. :)&lt;/p&gt;
&lt;p&gt;Happy Holidays everyone.&lt;/p&gt;</content:encoded><category>fun</category></item><item><title>Deliciously Unstable</title><link>https://www.digitalhobbit.com/legacy/2005/12/18/deliciously-unstable/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/12/18/deliciously-unstable/</guid><description>Ever since Yahoo announced to buy the social bookmarking service del.icio.us about a week ago, it has been plagued with instability. More often than not, I get an error message when I try to access the website. At the time of this writing I am getting the following error: &quot;del.icio.us is down for emergency maintenance.</description><pubDate>Sun, 18 Dec 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ever since Yahoo announced to buy the social bookmarking service &lt;a href=&quot;http://del.icio.us&quot;&gt;del.icio.us&lt;/a&gt; about a week ago, it has been plagued with instability. More often than not, I get an error message when I try to access the website. At the time of this writing I am getting the following error: &lt;em&gt;&quot;del.icio.us is down for emergency maintenance. we&apos;ll be back as soon possible.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I realize that the announcement of the acquisition must be causing a lot of extra traffic for del.icio.us, and I hope that they can figure out a way to recover from this soon. Several months ago I have started to use del.icio.us as my main bookmarking application, mostly to facilitate sharing bookmarks across various computers, platforms, and browsers, both at home and at work. I realize that several alternatives exist, such as &lt;a href=&quot;http://de.lirio.us&quot;&gt;de.lirio.us&lt;/a&gt;, but I would prefer to continue using de.licio.us (unless of course Yahoo manages to screw it up...).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Apparently del.icio.us is currently recovering from the aftermath of a power outage that hit them a few days ago. They are posting status updates and other info on the &lt;a href=&quot;http://blog.del.icio.us/&quot;&gt;del.icio.us blog&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Preschool almost evicted</title><link>https://www.digitalhobbit.com/legacy/2005/12/18/preschool-almost-evicted/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/12/18/preschool-almost-evicted/</guid><description>Last Wednesday we almost lost the preschool that our two daughters go to. The preschool was subletting from a private elementary school that apparently wasn&apos;t doing all that great.</description><pubDate>Sun, 18 Dec 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last Wednesday we almost lost the preschool that our two daughters go to. The preschool was subletting from a private elementary school that apparently wasn&apos;t doing all that great. Now it turned out that the director of the elementary school hadn&apos;t been paying rent for 16 months, so they were evicted on Wednesday - and along with them the preschool, even though they had been paying their rent to the elementary school every month. My wife and several other parents spent the morning removing all the preschool&apos;s belongings from the property and were about to send everything into storage for the time being. Luckily, after several hours of intense discussion between the very engaged preschool director and the landlord, with some support from engaged parents who are lawyers, they were able to reach an agreement that permits the preschool to remain as a tenant.&lt;/p&gt;
&lt;p&gt;I&apos;m truly shocked how an elementary school director can be this irresponsible, without any regard for the pupils or their parents. Based on what I&apos;ve heard, the director was a con artist who embezzled money (such as the rent that the preschool payed to him) and was well aware that the school was going to be closed down.&lt;/p&gt;
&lt;p&gt;Of course I&apos;m glad everything worked out for us, as well as for the preschool. The director and teachers are great, my kids love going there, and it would have been a shame to see all of this destroyed by a greedy, irresponsible con artist...&lt;/p&gt;</content:encoded><category>family</category></item><item><title>Rails 1.0 Released!</title><link>https://www.digitalhobbit.com/legacy/2005/12/13/rails-10-released/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/12/13/rails-10-released/</guid><description>Ruby on Rails 1.0 was released today. David Heinemeier Hansson sums it up well in his blog. At this opportunity, a completely revamped Ruby on Rails website was launched as well. Congrats to David, the Rails Core Team, and all other contributors on this major achievement!</description><pubDate>Tue, 13 Dec 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.rubyonrails.org&quot;&gt;Ruby on Rails 1.0&lt;/a&gt; was released today. David Heinemeier Hansson sums it up well &lt;a href=&quot;http://weblog.rubyonrails.com/articles/2005/12/13/rails-1-0-party-like-its-one-oh-oh&quot;&gt;in his blog&lt;/a&gt;. At this opportunity, a completely revamped &lt;a href=&quot;http://www.rubyonrails.org/&quot;&gt;Ruby on Rails website&lt;/a&gt; was launched as well.&lt;/p&gt;
&lt;p&gt;Congrats to David, the Rails Core Team, and all other contributors on this major achievement! Even though the changes from the recent 0.14.x releases were relatively small and the main focus was on stability rather than new features, the official 1.0 release of Rails will make a big difference in the public perception of this framework and its suitability for serious web applications.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>RubyForge now supports Subversion</title><link>https://www.digitalhobbit.com/legacy/2005/12/12/rubyforge-now-supports-subversion/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/12/12/rubyforge-now-supports-subversion/</guid><description>RubyForge now supports Subversion as an alternative to CVS. If you are looking for a host for an open source project, RubyForge is a great choice (and almost the de-facto standard for Ruby projects), and Subversion support makes this even better. Nice!</description><pubDate>Mon, 12 Dec 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://tomcopeland.blogs.com/juniordeveloper/2005/12/rubyforge_now_s.html&quot;&gt;RubyForge now supports Subversion&lt;/a&gt; as an alternative to CVS. If you are looking for a host for an open source project, &lt;a href=&quot;http://www.rubyforge.org&quot;&gt;RubyForge&lt;/a&gt; is a great choice (and almost the de-facto standard for Ruby projects), and Subversion support makes this even better. Nice!&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Gmail Package Tracking</title><link>https://www.digitalhobbit.com/legacy/2005/12/11/gmail-package-tracking/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/12/11/gmail-package-tracking/</guid><description>Once more, Gmail released a bunch of new features. I am particularly excited about the new Gmail Shortcuts. These show up on the right hand side of the page, right above the sponsored links, when Gmail was able to parse a mailing address or a tracking number from the email.</description><pubDate>Sun, 11 Dec 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Once more, Gmail released a bunch of new features. I am particularly excited about the new Gmail Shortcuts. These show up on the right hand side of the page, right above the sponsored links, when Gmail was able to parse a mailing address or a tracking number from the email. I order a lot of items at &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;#x26;tag=digitalhobbit-20&amp;#x26;camp=1789&amp;#x26;creative=9325&amp;#x26;path=http%3A%2F%2Fwww.amazon.com&quot;&gt;Amazon&lt;/a&gt; and other online stores, and while the shipping confirmations generally contain tracking numbers (at least for UPS and FedEx), they usually don&apos;t link directly to the respective package tracking pages. Gmail remedies this, which should prove to be very convenient. Similarly, Gmail displays Google Maps links for any addresses that it finds in an email, which should come in handy as well.&lt;/p&gt;
&lt;p&gt;I should probably order some Christmas presents for myself to test the package tracking feature some more... ;)&lt;/p&gt;</content:encoded><category>commerce</category></item><item><title>Typo Theme Contest</title><link>https://www.digitalhobbit.com/legacy/2005/12/11/typo-theme-contest/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/12/11/typo-theme-contest/</guid><description>The Typo Theme Contest ended on 11/28, and the final results were posted two days ago. I didn&apos;t win anything, but my humble contribution &quot;opyT&quot; admittedly pales in light of the many awesome themes that were submitted by others. Most importantly, over 120 Typo themes resulted from this competition!</description><pubDate>Sun, 11 Dec 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The Typo Theme Contest ended on 11/28, and the &lt;a href=&quot;http://www.typogarden.com/articles/2005/12/10/final-results&quot;&gt;final results&lt;/a&gt; were posted two days ago. I didn&apos;t win anything, but my humble contribution &lt;a href=&quot;http://www.typogarden.com/articles/2005/11/16/opyt-theme&quot;&gt;&quot;opyT&quot;&lt;/a&gt; admittedly pales in light of the many awesome themes that were submitted by others.&lt;/p&gt;
&lt;p&gt;Most importantly, &lt;a href=&quot;http://www.typogarden.com/&quot;&gt;over 120 Typo themes&lt;/a&gt; resulted from this competition! The themes are very diverse, and everybody who is interested in hosting a Typo blog should be able to find at least a couple themes to their liking.&lt;/p&gt;
&lt;p&gt;I am still happily running on Wordpress and not in a rush to abandon it, although I am definitely intrigued by &lt;a href=&quot;http://typo.leetsoft.com/trac/&quot;&gt;Typo&lt;/a&gt;. It has come a long way and is now a very capable blog engine. If you are in the market for a new blog engine and have a Rails capable webhost, I strongly encourage you to check it out.&lt;/p&gt;
&lt;p&gt;I should also mention that Geoffrey Grosenbach (who also hosts the official &lt;a href=&quot;http://podcast.rubyonrails.com/&quot;&gt;Ruby on Rails Podcast&lt;/a&gt;), is going to continue maintaining the &lt;a href=&quot;http://www.typogarden.com/&quot;&gt;Typo Theme Contest&lt;/a&gt; blog. Although now that there are 120 themes spread across 14 pages of the blog, I hope that somebody writes a Typo theme switcher plugin, or at least a webpage that lists all known plugins on a single page and links to a live preview of the theme, similar to what Alex King did for the &lt;a href=&quot;http://www.alexking.org/index.php?content=software/wordpress/themes.php&quot;&gt;Wordpress Theme Competition&lt;/a&gt; earlier this year.&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>How to scare a file sharer</title><link>https://www.digitalhobbit.com/legacy/2005/12/07/how-to-scare-a-file-sharer/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/12/07/how-to-scare-a-file-sharer/</guid><description>Here&apos;s an absolutely hilarious story on how someone stopped a file sharer in a hotel from hogging all the bandwidth. If this really happened, it is one of the best pranks ever. :)</description><pubDate>Wed, 07 Dec 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here&apos;s an absolutely &lt;a href=&quot;http://www.signal15.com/articles/2005/12/06/how-to-stop-filesharers-from-stealing-hotel-bandwidth&quot;&gt;hilarious story&lt;/a&gt; on how someone stopped a file sharer in a hotel from hogging all the bandwidth. If this really happened, it is one of the best pranks ever. :)&lt;/p&gt;</content:encoded><category>fun</category></item><item><title>Try Ruby</title><link>https://www.digitalhobbit.com/legacy/2005/11/30/try-ruby/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/11/30/try-ruby/</guid><description>Why the lucky stiff, who brought us the fabuolous &quot;Why&apos;s (poignant) guide to Ruby&quot;, just released this new awesome web application: Try Ruby Try Ruby is a web based, interactive Ruby tutorial, sort of like IRB on steroids. If you are curious about the kinds of things newbies and script kiddies are trying out in the console, check out Why&apos;s recent blog post.</description><pubDate>Wed, 30 Nov 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://redhanded.hobix.com/&quot;&gt;Why the lucky stiff&lt;/a&gt;, who brought us the fabuolous &lt;a href=&quot;http://poignantguide.net/ruby/&quot;&gt;&quot;Why&apos;s (poignant) guide to Ruby&quot;&lt;/a&gt;, just released this new awesome web application:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tryruby.hobix.com/&quot;&gt;Try Ruby&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Try Ruby is a web based, interactive Ruby tutorial, sort of like IRB on steroids. If you are curious about the kinds of things newbies and script kiddies are trying out in the console, check out Why&apos;s &lt;a href=&quot;http://redhanded.hobix.com/inspect/205000LinesOfRubyCodeDonatedInTheTryRubyDrive.html&quot;&gt;recent blog post&lt;/a&gt;. I love the idea of making &quot;wtf&quot; an alias for &quot;help&quot;. :)&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Firefox 1.5</title><link>https://www.digitalhobbit.com/legacy/2005/11/29/firefox-15/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/11/29/firefox-15/</guid><description>Firefox 1.5 has been released. You can grab it here. Some of the new features are improved popup blocking (I am curious about this one, now that some sites have figured out how to circumvent the previous version&apos;s popup blocker), drag &amp; drop tab reordering, noticeably faster navigation using the Back and Forward buttons, and more.</description><pubDate>Tue, 29 Nov 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Firefox 1.5 has been released. You can &lt;a href=&quot;http://www.getfirefox.com/&quot;&gt;grab it here&lt;/a&gt;. Some of the new features are improved popup blocking (I am curious about this one, now that some sites have figured out how to circumvent the previous version&apos;s popup blocker), drag &amp;#x26; drop tab reordering, noticeably faster navigation using the Back and Forward buttons, and more.&lt;/p&gt;
&lt;p&gt;You can find out more details about the new features in the &lt;a href=&quot;http://www.mozilla.com/firefox/releases/1.5.html&quot;&gt;Firefox 1.5 Release Notes&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>technology</category><category>software</category></item><item><title>Why I won&apos;t buy any more Sony CDs</title><link>https://www.digitalhobbit.com/legacy/2005/11/17/why-i-wont-buy-any-more-sony-cds/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/11/17/why-i-wont-buy-any-more-sony-cds/</guid><description>I just had a chance to catch up with the tech news from the past week or so, and I almost couldn&apos;t believe what I read about Sony&apos;s trojan-horse rootkit that was shipped on over 50 CD albums. Apparently this malware searches your computer for illegally downloaded music and reports this to Sony.</description><pubDate>Thu, 17 Nov 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just had a chance to catch up with the tech news from the past week or so, and I almost couldn&apos;t believe what I read about Sony&apos;s trojan-horse rootkit that was shipped on &lt;a href=&quot;http://cp.sonybmg.com/xcp/english/titles.html&quot;&gt;over 50 CD albums&lt;/a&gt;. Apparently this malware searches your computer for illegally downloaded music and reports this to Sony. And not only does the actual rootkit compromise your PC, but the removal application that Sony later issued under pressure from the public leaves your PC in a highly insecure state. I suppose that&apos;s what you get for doing the right thing and purchasing a Sony CD rather than illegally downloading it...&lt;/p&gt;
&lt;p&gt;BoingBoing has posted two great roundups on the issue: &lt;a href=&quot;http://www.boingboing.net/2005/11/14/sony_anticustomer_te.html&quot;&gt;Part 1&lt;/a&gt;, &lt;a href=&quot;http://www.boingboing.net/2005/11/17/sony_rootkit_roundup.html&quot;&gt;Part 2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://www.eff.org/&quot;&gt;EFF (Electronic Frontier Foundation)&lt;/a&gt; also stepped up and issued this &lt;a href=&quot;http://www.eff.org/IP/DRM/Sony-BMG/?f=open-letter-2005-11-14.html&quot;&gt;Open Letter to Sony-BMG&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The sad thing is that being the huge media corporation that it is, Sony is probably going to get away with this...&lt;/p&gt;
&lt;p&gt;Even though I only listen to MP3s at this point, I generally prefer purchasing audio CDs and ripping them to MP3 myself, as I refuse to pay a premium price (about $10 per CD on iTunes, for example) for DRM-crippled tracks when I can buy a physical CD for $13. But with practices like this, that may not be the best approach for major label CDs any more. I for one am not going to buy Sony CDs any more.&lt;/p&gt;
&lt;p&gt;Luckily, most of the music I listen to is released by smaller independent labels. I really hope that musicians will start selling (non DRM-crippled) downloadable music on their websites, bypassing the record labels entirely. Some independent artists (such as &lt;a href=&quot;http://www.pitchfork.de/&quot;&gt;Project Pitchfork&lt;/a&gt;) have already started doing this, and hopefully many others will follow.&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>Typo Theme: opyT</title><link>https://www.digitalhobbit.com/legacy/2005/11/15/typo-theme-opyt/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/11/15/typo-theme-opyt/</guid><description>The Rails based Typo blog engine has been gaining a lot of traction lately, and I&apos;m seriously considering switching from WordPress. Don&apos;t get me wrong - I love WordPress. It is a very solid and full featured blog engine that has never let me down. But I can&apos;t deny that there&apos;s a certain attraction to running a Rails based blog.</description><pubDate>Tue, 15 Nov 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The Rails based &lt;a href=&quot;http://typo.leetsoft.com/&quot;&gt;Typo&lt;/a&gt; blog engine has been gaining a lot of traction lately, and I&apos;m seriously considering switching from WordPress. Don&apos;t get me wrong - I love WordPress. It is a very solid and full featured blog engine that has never let me down. But I can&apos;t deny that there&apos;s a certain attraction to running a Rails based blog. I might even want to fiddle with the blog engine itself as an opportunity to get more up to speed on Rails.&lt;/p&gt;
&lt;p&gt;Anyway, I decided to take the &lt;a href=&quot;http://www.typogarden.com&quot;&gt;Typo Theme Contest&lt;/a&gt; that is currently in progress as an opportunity to play a bit with Typo and check out its theming capabilities. I&apos;m impressed with the quality of the themes that have been submitted so far. If you are interested in a simple but colorful theme that gets by without using any images at all, you may want to check out my own submission to the contest: opyT.&lt;/p&gt;
&lt;p&gt;It is based on the &lt;a href=&quot;http://quotedprintable.com/articles/2005/11/07/scribbish-0-1&quot;&gt;Scribbish&lt;/a&gt; theme, which has a very clean layout and has the CSS broken into several files. This makes it a lot easier to find the rules that are relevant for the aspect of the theme you are currently modifying. If you are planning on building your own Typo theme, I recommend you base this on Scribbish rather than the default Azure theme.&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>XINS (XML Interface for Network Services)</title><link>https://www.digitalhobbit.com/legacy/2005/11/15/xins-xml-interface-for-network-services/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/11/15/xins-xml-interface-for-network-services/</guid><description>Over the past 5 years or so, the hype around web services has grown continuously. At the same time, the complexity of the relevant specifications has steadily increased. Just think of all the buzzwords like SOAP, WSDL, XML Schema, etc.</description><pubDate>Tue, 15 Nov 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Over the past 5 years or so, the hype around web services has grown continuously. At the same time, the complexity of the relevant specifications has steadily increased. Just think of all the buzzwords like SOAP, WSDL, XML Schema, etc. Now it seems like many developers are taking a step back and thinking of simpler solutions to lower the barrier of entry into web services, which seems like a good thing.&lt;/p&gt;
&lt;p&gt;One interesting Java based framework that caught my eyes is &lt;a href=&quot;http://xins.sourceforge.net/&quot;&gt;XINS (XML Interface for Network Services)&lt;/a&gt;. Its purpose is to expose APIs using various protocols, such as SOAP, XML-RPC, or REST, while avoiding unnecessarily complex descriptor formats such as WSDL. I have not had a chance to look at it in great detail, but apparently you implement the Java classes that make up your API, provide some relatively simple XML configuration files, and XINS automatically makes your API available using all the protocols it supports (as well as custom ones!). It also generates appropriate Javadocs as well as test pages that allow you to easily invoke your remote APIs with arbitrary parameters, which seems very useful for debugging purposes. You can see this illustrated in the &lt;a href=&quot;http://xins.sourceforge.net/primer.html&quot;&gt;primer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It looks like you can even plug in your own protocol implementations (which XINS refers to as &lt;a href=&quot;http://xins.sourceforge.net/docs/ar01s20.html#N10C8F&quot;&gt;&quot;custom calling convention&quot;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I&apos;ll make sure to give this a shot the next time I need to remote-enable an API.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Kansas is officially screwed</title><link>https://www.digitalhobbit.com/legacy/2005/11/10/kansas-is-officially-screwed/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/11/10/kansas-is-officially-screwed/</guid><description>Not all that unexpected I guess, but in yesterday&apos;s vote, the Kansas Board of Education actually approved the teaching of Intelligent Design in Kansas schools. Damn, I&apos;m glad I live in California. Still, this is a blow against all sane people in this country. Looks like we are slowly going back in time towards the Dark Ages...</description><pubDate>Thu, 10 Nov 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Not all that unexpected I guess, but in yesterday&apos;s vote, the Kansas Board of Education actually &lt;a href=&quot;http://www.atheists.org/nogodblog/index.php/2005/11/09/god_is_gooder_than_science_in_kansas&quot;&gt;approved the teaching of Intelligent Design&lt;/a&gt; in Kansas schools.&lt;/p&gt;
&lt;p&gt;Damn, I&apos;m glad I live in California. Still, this is a blow against all sane people in this country. Looks like we are slowly going back in time towards the Dark Ages...&lt;/p&gt;</content:encoded><category>society</category></item><item><title>Serious competition for Flying Spaghetti Monster</title><link>https://www.digitalhobbit.com/legacy/2005/11/07/serious-competition-for-flying-spaghetti-monster/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/11/07/serious-competition-for-flying-spaghetti-monster/</guid><description>As much as I love the Flying Spaghetti Monster movement, this one poses some serious competition: Church of Reality. The website contains an abundance of very well thought out pages. A lot of it is sarcasm, but there seems to be some deeper and honest motivation as well. They have actually managed to be recognized as a charitable organization by the IRS.</description><pubDate>Mon, 07 Nov 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As much as I love the &lt;a href=&quot;http://www.venganza.org/&quot;&gt;Flying Spaghetti Monster&lt;/a&gt; movement, this one poses some serious competition: &lt;a href=&quot;http://www.churchofreality.org/wisdom/&quot;&gt;Church of Reality&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The website contains an abundance of very well thought out pages. A lot of it is sarcasm, but there seems to be some deeper and honest motivation as well. They have actually managed to be &lt;a href=&quot;http://www.churchofreality.org/wisdom/irs_tax_exempt_status/&quot;&gt;recognized as a charitable organization&lt;/a&gt; by the IRS. And if that&apos;s not enough, the website contains several pictures of the Linux Penguin and is littered with fractals.&lt;/p&gt;
&lt;p&gt;Maybe I should join this church in time to celebrate one of their most important &lt;a href=&quot;http://www.churchofreality.org/wisdom/holidays/&quot;&gt;holidays&lt;/a&gt;, Newton&apos;s Birthday on December 25. Because unlike certain other religions&apos; prophets, Newton was actually born on that day. :)&lt;/p&gt;</content:encoded><category>fun</category></item><item><title>Book: Enterprise Integration with Ruby</title><link>https://www.digitalhobbit.com/legacy/2005/11/05/book-enterprise-integration-with-ruby/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/11/05/book-enterprise-integration-with-ruby/</guid><description>It sounds like a new book might need to be added to the list of must-have Ruby books: &quot;Enterprise Integration with Ruby&quot;, written by Maik Schmidt and published as a Pragmatic Bookshelf title, is currently in beta. As with all Pragmatic Bookshelf titles, you can purchase the beta PDF now and receive the full PDF or paper version of the book as soon as it comes out.</description><pubDate>Sat, 05 Nov 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It sounds like a new book might need to be added to the list of must-have Ruby books: &lt;a href=&quot;http://pragmaticprogrammer.com/titles/fr_eir/index.html&quot;&gt;&quot;Enterprise Integration with Ruby&quot;&lt;/a&gt;, written by Maik Schmidt and published as a Pragmatic Bookshelf title, is currently in beta. As with all Pragmatic Bookshelf titles, you can purchase the beta PDF now and receive the full PDF or paper version of the book as soon as it comes out.&lt;/p&gt;
&lt;p&gt;The book covers a diverse range of integration topics, including databases, LDAP, XML, low level services like sockets, HTTP, and REST, high level services like XML-RPC and SOAP, and more.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Java: pass-by-value vs. pass-by-reference</title><link>https://www.digitalhobbit.com/legacy/2005/11/01/java-pass-by-value-vs-pass-by-reference/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/11/01/java-pass-by-value-vs-pass-by-reference/</guid><description>One of the Java programming questions I like to ask in interviews is: &quot;Is Java pass-by-value or pass-by-reference?&quot; A surprising amount of Java developers get this wrong, generally because the variables you mostly deal with in Java (other than primitives) are actually references to objects, rather than containing the objects themselves.</description><pubDate>Tue, 01 Nov 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the Java programming questions I like to ask in interviews is: &quot;Is Java pass-by-value or pass-by-reference?&quot;&lt;/p&gt;
&lt;p&gt;A surprising amount of Java developers get this wrong, generally because the variables you mostly deal with in Java (other than primitives) are actually references to objects, rather than containing the objects themselves. Most developers blurt out something like: &quot;Objects are passed by reference, and primitives are passed by value.&quot;&lt;/p&gt;
&lt;p&gt;This is of course completely incorrect. Java is very strictly pass-by-value, which you should easily be able to confirm if you&apos;ve ever (unsuccessfully) tried to write a swap() method that swaps two variables that reference immutable objects, such as Strings. It just so happens that the values that are being passed are generally object references. Instead of the statement above, one might say: &quot;Object references are passed by value.&quot;&lt;/p&gt;
&lt;p&gt;Scott Stanchfield has written a &lt;a href=&quot;http://www.javadude.com/articles/passbyvalue.htm&quot;&gt;great explanation of why Java is pass-by-value&lt;/a&gt;. He also has some strong thoughts on the terminology &quot;references&quot; vs. &quot;pointers&quot;. He argues that it was a bad idea of SUN to use the word &quot;references&quot; in order to differentiate them from the pointers as you might find them in C or C++. While the syntax for dealing with Java&apos;s references is much simpler than C&apos;s pointers, references otherwise behave exactly like pointers. Maybe calling Java&apos;s object variables pointers instead of references would eliminate some of the confusion with regards to pass-by-value vs. pass-by-reference...&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>FSM Update</title><link>https://www.digitalhobbit.com/legacy/2005/10/29/fsm-update/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/10/29/fsm-update/</guid><description>I hadn&apos;t kept up with the Flying Spaghetti Monster movement for a while. It really seems to be gaining a lot of traction. In addition to many downloadable wallpapers, they now have a whole bunch of printable brochures, flyers, posters, etc., many of which are quite well done.</description><pubDate>Sat, 29 Oct 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I hadn&apos;t kept up with the &lt;a href=&quot;http://www.venganza.org/&quot;&gt;Flying Spaghetti Monster&lt;/a&gt; movement for a while. It really seems to be gaining a lot of traction. In addition to many downloadable wallpapers, they now have a whole bunch of printable &lt;a href=&quot;http://www.venganza.org/spreadword.htm&quot;&gt;brochures, flyers, posters, etc.&lt;/a&gt;, many of which are quite well done.&lt;/p&gt;
&lt;p&gt;But the funniest happenings have to be some recent propaganda events:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.venganza.org/spread/alex.htm&quot;&gt;University of North Carolina&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.venganza.org/spread/springfield.htm&quot;&gt;Missouri State University&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Keep up the good work. :)&lt;/p&gt;</content:encoded><category>fun</category><category>society</category></item><item><title>(k)ubuntu</title><link>https://www.digitalhobbit.com/legacy/2005/10/28/kubuntu/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/10/28/kubuntu/</guid><description>A good week ago, I decided to install Kubuntu Linux at home, replacing my previous Gentoo Linux installation. Overall I was very happy with Gentoo, and it still ranks high among my favorite Linux distributions.</description><pubDate>Fri, 28 Oct 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A good week ago,  I decided to install &lt;a href=&quot;http://kubuntu.org/&quot;&gt;Kubuntu&lt;/a&gt; Linux at home, replacing my previous &lt;a href=&quot;http://www.gentoo.org&quot;&gt;Gentoo&lt;/a&gt; Linux installation.&lt;/p&gt;
&lt;p&gt;Overall I was very happy with Gentoo, and it still ranks high among my favorite Linux distributions. But while it was cool to have a system that was built from source and therefore (at least in theory) optimized for my particular needs as well as very up to date, I seemed to be spending a disproportionate amount of time doing upgrades. Another problem was that I had selected to install the 64-bit Gentoo version, as I have an AMD64 processor. While Gentoo&apos;s AMD64 support is very strong, 64-bit Linux in general nevertheless still lags behind the 32-bit version, and certain closed source drivers or plugins (such as Macromedia Flash) simply aren&apos;t available in 64-bit versions. There are ways around this, but they are inconvenient and require too much effort. Again, not a Gentoo problem, but something that bothered me enough to increase my inclination to reinstall my system. The final trigger was KDE. I had mostly been using Gentoo for the past few years, with a little bit of more minimal solutions like XFCE or Fluxbox sprinkled in, but after seeing the recent improvements in KDE I felt like switching to this desktop. Unfortunately I was unable to get KDE to run stable on my Gentoo system, and it always crashed after a few minutes, usually when I used the &quot;K&quot; menu. Up- and downgrading the ATI driver, upgrading to the latest Linux kernel, and experimenting with Kernel settings didn&apos;t have any effect, so I was finally ready to reinstall and switch to a different distribution.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://kubuntu.org/&quot;&gt;Kubuntu&lt;/a&gt; distribution is derived from &lt;a href=&quot;http://ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt;, which is gaining a lot of popularity these days (it is in fact by far the top ranking Linux distro on &lt;a href=&quot;http://distrowatch.com/&quot;&gt;DistroWatch&lt;/a&gt; in terms of hits per day). Kubuntu is essentially exactly the same as Ubuntu, except that the Gnome desktop has been swapped out for KDE. Ubuntu in turn is derived from &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt;. It inherits Debian&apos;s excellent package management system and solves its greatest problem: Debian&apos;s stable distibution is very stable, but also very outdated and therefore not an ideal choice for a desktop system if you want to keep up with the latest software releases. Debian releases are very infrequent. Debian&apos;s unstable distribution is cutting edge, but lacks stability. Ubuntu strikes a perfect middle ground, with releases every 6 months, and of course important updates (such as security updates) in between. The official Ubuntu repositories contain a subset of packages that are officially supported, as well as a wider set of packages that come without warranty. It is also possible to add generic Debian repositories, although this is discouraged. So far, I have not had to resort to generic Debian packages for anything.&lt;/p&gt;
&lt;p&gt;(K)ubuntu&apos;s installation is very straightforward, without a whole lot of interaction. You make some basic choices and the system goes ahead and installs the OS and a basic set of packages, including KDE (in case of Kubuntu) or Gnome (in case of Ubuntu), as well as OpenOffice and other productivity software. Pretty much everything else (including things that come as standard on many Linux distros, such as the GCC compiler, the Apache webserver, etc.) need to be manually installed afterwards. But with the powerful Apt package manager as well as convenient GUI wrappers (by default Adept for Kubuntu, Synaptic for Ubuntu), this step is trivial. Simply select the package you want, and all necessary dependencies will be marked for installation automatically. Upgrading or uninstalling packages is just as easy. The result is a very clean system, without a lot of the cruft that you get with other Linux distributions.&lt;/p&gt;
&lt;p&gt;The user management is well thought out. By default, there is no access to the root user. Instead, a single user is created with sudo privileges, and sudo is used for all system administration purposes. The root user can be manually enabled later, but this is discouraged and generally unnecessary.&lt;/p&gt;
&lt;p&gt;Kubuntu&apos;s KDE (version 3.4.3) desktop is very clean and highly usable. Out of the box it includes many great tools such as the Konqueror browser and filemanager, the K3B CD / DVD burning tool, the amaroK audio player, etc. There is an abundance of productivity software for KDE, ranging from office software to graphics software, IDEs, and more. Of course, Gnome and other X applications can be run as well.&lt;/p&gt;
&lt;p&gt;So far I am extremely happy with Kubuntu, and I warmly recommend this distribution to anybody who&apos;s in the market for a new Linux distro.&lt;/p&gt;</content:encoded><category>linux</category><category>technology</category></item><item><title>Ruby and Java technology stacks compared</title><link>https://www.digitalhobbit.com/legacy/2005/10/28/ruby-and-java-technology-stacks-compared/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/10/28/ruby-and-java-technology-stacks-compared/</guid><description>Here&apos;s one way to compare the Ruby and Java technology stacks. :) (via the Ruby on Rails Blog) Update: Here&apos;s the true origin of this comparison.</description><pubDate>Fri, 28 Oct 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here&apos;s one way to &lt;a href=&quot;http://jutopia.tirsen.com/articles/2005/10/28/why-ruby-on-rails&quot;&gt;compare the Ruby and Java technology stacks&lt;/a&gt;. :)&lt;/p&gt;
&lt;p&gt;(via the &lt;a href=&quot;http://weblog.rubyonrails.com/archives/2005/10/28/comparing-technology-stacks-of-books&quot;&gt;Ruby on Rails Blog&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Update: Here&apos;s &lt;a href=&quot;http://www.garbett.org/?q=node/25&quot;&gt;the true origin of this comparison&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Déjà Fubar</title><link>https://www.digitalhobbit.com/legacy/2005/10/27/deja-fubar/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/10/27/deja-fubar/</guid><description>Andy Hunt of the Pragmatic Programmers has coined a new term: Déjà fubar | noun That sinking feeling that you&apos;ve made this very same mistake before. Maybe even many times before. I love it (and know it well...). :)</description><pubDate>Thu, 27 Oct 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Andy Hunt of the Pragmatic Programmers has coined a new term:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Déjà fubar&lt;/strong&gt; | &lt;em&gt;noun&lt;/em&gt; That sinking feeling that you&apos;ve made this very same mistake before. Maybe even many times before.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I love it (and know it well...). :)&lt;/p&gt;</content:encoded><category>fun</category></item><item><title>New iPod Models</title><link>https://www.digitalhobbit.com/legacy/2005/10/12/new-ipod-models/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/10/12/new-ipod-models/</guid><description>For a little over half a year now, I&apos;ve enjoyed owning the top of the line iPod model, the 60GB iPod Photo. Sure, there had been a few interesting new models (such as the iPod Nano), but if you were looking for a large storage model, the 4th generation 60GB iPod Photo was the best you could buy.</description><pubDate>Wed, 12 Oct 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For a little over half a year now, I&apos;ve enjoyed owning the top of the line iPod model, the 60GB iPod Photo. Sure, there had been a few interesting new models (such as the iPod Nano), but if you were looking for a large storage model, the 4th generation 60GB iPod Photo was the best you could buy. Apple has now released &lt;a href=&quot;http://store.apple.com/1-800-MY-APPLE/WebObjects/AppleStore?family=iPod&amp;#x26;cid=AOSA10000015118&quot;&gt;new iPod models&lt;/a&gt; to replace the previous 30GB and 60GB models. I have no idea how they managed to pull this off, but the new iPods are significantly slimmer and lighter. The width of the 60GB iPod was reduced from 0.75&quot; to 0.55&quot; (less than the previous 30GB model!). The weight has been reduced from 6.4oz to 5.5oz. These alone are some pretty impressive improvements! Additionally, Apple has increased the size of the color screen from 2&quot; to 2.5&quot;. It pretty much takes up the full width of the iPod now. And while I&apos;m not fully aware of the exact specs, it appears that (as many people have predicted), the new iPod supports video in addition to photos. Like the iPod Nano, it now comes in both white and black. Last not least, the battery life was increased by 33% from 15 hours to 20 hours.&lt;/p&gt;
&lt;p&gt;Very impressive! Good thing I&apos;ve been a geek for long enough to be used to the rapid pace at which new gadgets become obsolete... Still, it was nice to own the top of the line model while it lasted. ;)&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>15 Answers to Creationist Nonsense</title><link>https://www.digitalhobbit.com/legacy/2005/10/10/15-answers-to-creationist-nonsense/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/10/10/15-answers-to-creationist-nonsense/</guid><description>Here is a great article from the July 2002 edition of Scientific American: 15 Answers to Creationist Nonsense. The article contains 15 great answers to typical points that creationists use to attack the theory of evolution. There are also some good links to additional resources at the end, such as Skeptic Magazine. I might have to actually get a subscription of this, as it seems pretty interesting.</description><pubDate>Mon, 10 Oct 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here is a great article from the July 2002 edition of Scientific American: &lt;a href=&quot;http://www.swarthmore.edu/NatSci/cpurrin1/textbookdisclaimers/wackononsense.pdf&quot;&gt;15 Answers to Creationist Nonsense&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The article contains 15 great answers to typical points that creationists use to attack the theory of evolution. There are also some good links to additional resources at the end, such as &lt;a href=&quot;http://www.skeptic.com&quot;&gt;Skeptic Magazine&lt;/a&gt;. I might have to actually get a subscription of this, as it seems pretty interesting. The &lt;a href=&quot;http://skeptic.com/reading_room/index.html&quot;&gt;Skeptic Library&lt;/a&gt; also contains a lot of great content, such as essays debunking ID and similar topics.&lt;/p&gt;
&lt;p&gt;I am generally not a very political person, and while I am a strongly convinced atheist, I don&apos;t have a problem with religion and (non-fundamentalist) religious people, but for some reason this whole Intelligent Design nonsense has struck a chord with me... Faith is one thing, but dressing it up as science is just absurd and not something one should expect from an industrial nation like the US. The thought of my kids having to learn unscientific nonsense like Intelligent Design at schools that are paid for with my tax dollars makes me shiver. Luckily I live in California and not in Kansas or some other state in the Midwest, but still...&lt;/p&gt;</content:encoded></item><item><title>Whatever happened to free speech?</title><link>https://www.digitalhobbit.com/legacy/2005/10/08/whatever-happened-to-free-speech/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/10/08/whatever-happened-to-free-speech/</guid><description>Apparently a woman was forced to leave a Southwest Airlines plane for wearing an offensive T-Shirt. The shirt bore pictures of Bush, Cheney, and Rice, along with the caption &quot;Meet the Fuckers&quot;, a play on the recent movie title &quot;Meet the Fockers&quot;. I actually saw the exact same shirt at a store in San Francisco last weekend, and while I didn&apos;t buy it, I thought it was pretty funny...</description><pubDate>Sat, 08 Oct 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Apparently a woman was &lt;a href=&quot;http://www.portlandtribune.com/archview.cgi?id=32068&quot;&gt;forced to leave a Southwest Airlines plane&lt;/a&gt; for wearing an offensive T-Shirt. The shirt bore pictures of Bush, Cheney, and Rice, along with the caption &quot;Meet the Fuckers&quot;, a play on the recent movie title &quot;Meet the Fockers&quot;. I actually saw the exact same shirt at a store in San Francisco last weekend, and while I didn&apos;t buy it, I thought it was pretty funny...&lt;/p&gt;
&lt;p&gt;(via &lt;a href=&quot;http://www.boingboing.net/2005/10/07/southwest_kicks_woma.html&quot;&gt;BoingBoing&lt;/a&gt;)&lt;/p&gt;</content:encoded></item><item><title>Google RSS Aggregator</title><link>https://www.digitalhobbit.com/legacy/2005/10/07/google-rss-aggregator/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/10/07/google-rss-aggregator/</guid><description>Google has just released a beta version of their RSS Reader. I gave it a quick whirl, but so far it hasn&apos;t blown me away. In typical Google style, the layout and UI is nice and clean (and very similar to Gmail). Contrary to other aggregators (such as Bloglines), Google Reader only displays a single post per page, rather than a whole list of posts.</description><pubDate>Fri, 07 Oct 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Google has just released a beta version of their &lt;a href=&quot;http://www.google.com/reader/&quot;&gt;RSS Reader&lt;/a&gt;. I gave it a quick whirl, but so far it hasn&apos;t blown me away. In typical Google style, the layout and UI is nice and clean (and very similar to Gmail). Contrary to other aggregators (such as &lt;a href=&quot;http://www.bloglines.com&quot;&gt;Bloglines&lt;/a&gt;), Google Reader only displays a single post per page, rather than a whole list of posts. It provides keyboard shortcuts to easily navigate between posts. Interestingly, Google Reader currently doesn&apos;t display any ads, although I&apos;m sure that will change once this service reaches the final stage. Contrary to some reports from other users, I was able to easily import my Bloglines blog list by exporting it as an OPML file and importing it into Google Reader, while preserving my folder hierarchy.&lt;/p&gt;
&lt;p&gt;This new service definitely looks pretty nice and works fine, but for now I&apos;m sticking with Bloglines. I find their UI more efficient (for example I couldn&apos;t imagine catching up with a few days worth of Slashdot postings one article by one and much prefer reading all of them on a single page). But it&apos;s probably worth keeping an eye on Google Reader to see how it evolves.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Robust calendaring finally coming to Mozilla Thunderbird?</title><link>https://www.digitalhobbit.com/legacy/2005/10/07/robust-calendaring-finally-coming-to-mozilla-thunderbird/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/10/07/robust-calendaring-finally-coming-to-mozilla-thunderbird/</guid><description>Mozilla has unveiled the Lightning roadmap. Lightning is Mozilla&apos;s next generation calendaring application and intended to integrate with the Thunderbird email client. It appears to replace Mozilla&apos;s previous Sunbird calendaring tool. Lightning 0.1, which is scheduled to be released some time in November, will mainly focus on bug fixes and WebDAV calendar support. Improved Thunderbird integration is planned for the 0.2 release, which does not have a release date yet.</description><pubDate>Fri, 07 Oct 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Mozilla has &lt;a href=&quot;http://www.zdnetasia.com/news/software/0,39044164,39259184,00.htm&quot;&gt;unveiled the Lightning roadmap&lt;/a&gt;. Lightning is Mozilla&apos;s next generation calendaring application and intended to integrate with the Thunderbird email client. It appears to replace Mozilla&apos;s previous Sunbird calendaring tool. Lightning 0.1, which is scheduled to be released some time in November, will mainly focus on bug fixes and WebDAV calendar support. Improved Thunderbird integration is planned for the 0.2 release, which does not have a release date yet.&lt;/p&gt;
&lt;p&gt;I&apos;ve been using Thunderbird at work for about half a year now, and I&apos;m very happy with it as an email client, although I do miss calendar support. Hopefully Lightning will pick up more speed and turn Thunderbird into a true alternative to Outlook and Evolution.&lt;/p&gt;
&lt;p&gt;The milestone roadmap can be found &lt;a href=&quot;http://wiki.mozilla.org/Calendar:Lightning:Roadmap&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>software</category></item><item><title>YAML validation using Kwalify</title><link>https://www.digitalhobbit.com/legacy/2005/10/04/yaml-validation-using-kwalify/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/10/04/yaml-validation-using-kwalify/</guid><description>Recently I&apos;ve been using YAML files along with some Ruby scripts as a simple and convenient mechanism for importing content into our database. The YAML files will be maintained by content authors, and one of the questions that came up is that of validation. Luckily, there&apos;s a very nice solution in form of Kwalify, a small schema validator for YAML.</description><pubDate>Tue, 04 Oct 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently I&apos;ve been using &lt;a href=&quot;http://www.yaml.org&quot;&gt;YAML&lt;/a&gt; files along with some Ruby scripts as a simple and convenient mechanism for importing content into our database. The YAML files will be maintained by content authors, and one of the questions that came up is that of validation.&lt;/p&gt;
&lt;p&gt;Luckily, there&apos;s a very nice solution in form of &lt;a href=&quot;http://www.kuwata-lab.com/kwalify/&quot;&gt;Kwalify&lt;/a&gt;, a small schema validator for YAML. Conceptionally, it is similar to the corresponding XML technologies such as XML Schema or RelaxNG. Of course, in line with YAML itself, Kwalify is much simpler and still perfectly adequate for most purposes. Kwalify schemas are expressed in YAML. Supported datatypes are maps and sequences, ranges, enumerations, as well as primitive types such as strings, ints, and bools. Fields can be marked as required or unique. In addition, regular expressions can be specified to perform pattern matching on values.&lt;/p&gt;
&lt;p&gt;Kwalify can be run standalone by passing the name of the schema file and the file to validate in the command line. It can also be called programmatically. I chose to go with the second approach in order to first catch and gracefully deal with parse errors that result from non-well-formed YAML files, which otherwise result in an ugly stack trace on the command line. Using the wrapper script, an invalid YAML file results in a friendly message containing the line number for the parse error, and a YAML file that does not conform to the schema results in one or more friendly messages about the specific schema violations.&lt;/p&gt;
&lt;p&gt;I still think that most situations that suggest the use of YAML won&apos;t require any form of schema validation, but if you do need this feature, Kwalify fits the bill.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Ruby Support for Eclipse</title><link>https://www.digitalhobbit.com/legacy/2005/09/29/ruby-support-for-eclipse/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/29/ruby-support-for-eclipse/</guid><description>The last time I mentioned the RDT (aka RubyEclipse) project about two months ago, I thought that development on this otherwise promising project had stalled. Since then I&apos;ve started lurking on the RDT development mailing list, and I was happy to notice that the project appeared to be picking up speed again.</description><pubDate>Thu, 29 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The last time I mentioned the &lt;a href=&quot;http://rubyeclipse.sourceforge.net/&quot;&gt;RDT (aka RubyEclipse)&lt;/a&gt; project about two months ago, I thought that development on this otherwise promising project had stalled. Since then I&apos;ve started lurking on the RDT development mailing list, and I was happy to notice that the project appeared to be picking up speed again. The developers are realizing that Ruby is commanding significant interest these days, not least because of the Ruby on Rails framework that is gaining a lot of traction. Many new Rails developers are switching over from J2EE, and a large portion of them are presumably already using Eclipse for their Java projects. A good Ruby plugin for Eclipse would be the most natural development tool for these developers, including myself. In the last few weeks, the RDT development team pushed hard to get the 0.6 release out (the 0.5 release being about 10 months old and still pretty immature). I have not had a chance to try the official 0.6 release, but I&apos;ve been very successful with various nightly builds from the last fwe weeks. If you&apos;re looking for a Ruby IDE (and particularly if you&apos;re already an Eclipse user), you should definitely download the latest &lt;a href=&quot;http://rubyeclipse.sourceforge.net/&quot;&gt;RDT release&lt;/a&gt;. The level of Ruby support is not even close to the level of Java support (and Ruby being a dynamic language, the challenges are somewhat tougher), but nevertheless RDT is already highly usable and features syntax highlighting, rudimentary code completion, Test::Unit integration, and more.&lt;/p&gt;
&lt;p&gt;Now that basic Ruby support for Eclipse exists, I think it would be really cool to see some Rails specific support. I&apos;m a big fan of the Eclipse &lt;a href=&quot;http://eclipse.org/webtools/index.html&quot;&gt;Web Tools Project (WTP)&lt;/a&gt;, which adds support for web application development to Eclipse. In line with the general Eclipse philosophy and architecture, it consists of a general web project framework (WST), which adds support for HTML, XML, CSS, etc., and a Java specific framework (JST) that ties into it. I think it would make sense for a Rails plugin to integrate with WTP the same way JST does. Potential features could include custom navigator views to expose the Rails modes, views, and controllers, as well as support for RHTML (including autocompletion for instance variables and methods defined in the controller / helper classes), an embedded WEBrick server, and wizard interfaces into the various scripts (such as the generator script).&lt;/p&gt;
&lt;p&gt;This would certainly not be a small undertaking, but I think it would be very cool. And it should be able to benefit from the opinionated nature of Rails and the relatively fixed structure of Rails projects, which might obviate some of the configuration dialogs that would have to go into similar Java projects.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; GJ pointed me to this article on &lt;a href=&quot;http://www.napcs.com/howto/railsonwindows.html&quot;&gt;setting up a Rails development environment on Windows using Eclipse&lt;/a&gt;. I have not followed all the installation steps yet, but it contains a lot of tips to make Rails development more convenient using Eclipse, such as capturing WEBrick output within the Eclipse console, running Rails scripts (such as the generator scripts) from the IDE, using the Breakpointer script for debugging, etc. The article is geared towards Windows, but it looks like it should be easy to adapt it to a Unix environment.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Pragmatic Fridays</title><link>https://www.digitalhobbit.com/legacy/2005/09/28/pragmatic-fridays/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/28/pragmatic-fridays/</guid><description>Dave Thomas just announced a new Pragmatic Bookshelf series called Pragmatic Fridays. I have no idea what inspired the name &quot;Friday&quot; in this context, but a Pragmatic Friday is a short (60 - 100 pages), low-cost ($7.50 - $10), and focussed book on a specific topic. The books are available for download in PDF form only, and as with all downloadable Pragmatic Bookshelf titles, they contain no DRM.</description><pubDate>Wed, 28 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://blogs.pragprog.com/cgi-bin/pragdave.cgi/Random/Fridays.html&quot;&gt;Dave Thomas just announced&lt;/a&gt; a new Pragmatic Bookshelf series called Pragmatic Fridays. I have no idea what inspired the name &quot;Friday&quot; in this context, but a &lt;a href=&quot;http://pragmaticprogrammer.com/fridays.html&quot;&gt;Pragmatic Friday&lt;/a&gt; is a short (60 - 100 pages), low-cost ($7.50 - $10), and focussed book on a specific topic. The books are available for download in PDF form only, and as with all downloadable Pragmatic Bookshelf titles, they contain no DRM.&lt;/p&gt;
&lt;p&gt;The first Pragmatic Friday title &lt;a href=&quot;http://pragmaticprogrammer.com/titles/ctrubyqt/index.html&quot;&gt;Rapid GUI Development with QtRuby&lt;/a&gt; by Caleb Tennis is available for download now, at the price of $8.50.&lt;/p&gt;
&lt;p&gt;I think this is a great idea. I thoroughtly enjoyed the &lt;a href=&quot;http://pragmaticprogrammer.com/starter_kit/index.html&quot;&gt;Pragmatic Starter Kit&lt;/a&gt; books on version control, unit testing, and automation. At 150 to 200 pages, they were very readable and acted as a great tutorial on the respective subjects. They obviously did not cover all the details but provided enough of a foundation to enable the reader to easily dig deeper into the topics by using web resources, etc. I have a very low attention span when it comes to books, and these are one of the few books that I&apos;ve actually read cover to cover. The Pragmatic Fridays seem to take this a step further by being more limited in scope, which I think has a great potential. And the $7.50 - $10 price point definitely seems very reasonable.&lt;/p&gt;
&lt;p&gt;Other Pragmatic Fridays titles in the pipeline include &quot;Ruby Best Practices&quot;, &quot;Google Maps API&quot;, and &quot;Preparing Rails Applications for Deployment&quot;. The Pragmatic Programmers are also &lt;a href=&quot;http://pragmaticprogrammer.com/fridays.html&quot;&gt;accepting proposals&lt;/a&gt;, in case you are interested in writing a Friday yourself. This might be an interesting opportunity for would-be writers.&lt;/p&gt;</content:encoded><category>books</category><category>development</category></item><item><title>Ruby GUI Support</title><link>https://www.digitalhobbit.com/legacy/2005/09/28/ruby-gui-support/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/28/ruby-gui-support/</guid><description>I generally try to stay away from writing GUI applications and focus on server side development instead. Still, every once in a while I have an idea for a GUI tool that I&apos;d like to build. My previous post on the upcoming Rapid GUI Development with QtRuby book prompted me to (once again) look into the available GUI toolkits for Ruby.</description><pubDate>Wed, 28 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I generally try to stay away from writing GUI applications and focus on server side development instead. Still, every once in a while I have an idea for a GUI tool that I&apos;d like to build. My previous post on the upcoming &lt;a href=&quot;http://pragmaticprogrammer.com/titles/ctrubyqt/index.html&quot;&gt;Rapid GUI Development with QtRuby&lt;/a&gt; book prompted me to (once again) look into the available GUI toolkits for Ruby.&lt;/p&gt;
&lt;p&gt;Unlike Java, which has pretty much standardized on the Swing and SWT frameworks, Ruby does not have any clear winners yet. Out of the box, it ships with Tk, which is horribly antiquated and not very Ruby-like. Luckily, a whole bunch of additional frameworks have been built. Most of these are Ruby wrappers around existing GUI toolkits.&lt;/p&gt;
&lt;p&gt;Here are some discussions on Ruby GUI toolkits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trug.stok.co.uk/wiki/index.php?title=Ruby_GUI_Toolkits&quot;&gt;Ruby GUI Toolkits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.rubygarden.org/ruby?ComparingGuiToolkits&quot;&gt;Comparing GUI Toolkits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.rubygarden.org/ruby?ComparingGuiToolkits/TakeTwo&quot;&gt;Comparing GUI Toolkits, Take Two&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.rubygarden.org/ruby?DoYourRubyGUIResearch&quot;&gt;Do your Ruby GUI research&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After scanning through the discussions above, the following GUI toolkits seem to be particularly worth a closer look:&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.fxruby.org/&quot;&gt;FXRuby&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This is a Ruby binding for the platform independent C++ FOX toolkit. Among other things, this is used for the &lt;a href=&quot;http://freeride.rubyforge.org/wiki/wiki.pl&quot;&gt;FreeRIDE&lt;/a&gt; Ruby IDE. It does not use native widgets, but based on the &lt;a href=&quot;http://www.fxruby.org/doc/examples.html&quot;&gt;samples in the online manual&lt;/a&gt; it has a pretty nice look &amp;#x26; feel, as well as many useful widgets. It also appears to be under active development and seems to be gaining a lot of traction.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://wxruby.rubyforge.org/wiki/wiki.pl&quot;&gt;wxRuby&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Similar to FXRuby, xwRuby is a binding for the C++ wxWidgets library. The main difference between wxWidgets and FOX is that wxWidgets uses native widgets whenever possible, which should allow applications built with it to better fit into the host environment. Unfortunately it seems like the existing wxRuby binding (which is almost a year old) is immature at this point. According to the website, development on wxRuby2, which will use SWIG to generate the wrappers, has begun. It&apos;s probably worth keeping an eye on this, although it doesn&apos;t sound quite ready for prime time at this point.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://developer.kde.org/language-bindings/ruby/index.html&quot;&gt;QtRuby / Korundum&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This is a set of Ruby bindings for the (C++) Qt and KDE frameworks respectively. It is also the framework that is covered by the Pragmatic Friday title &quot;Rapid GUI Development with QtRuby&quot; that originally prompted me to write this post. I used Qt with C++ about 8 years ago, and found it a very nice toolkit to work with at the time (of course back then I still liked C++, so my judgement may have been clouded ;) ). I&apos;m sure it&apos;s evolved even further since then, and the fact that the KDE desktop environment is built on top of Qt is testament to the strength of this solution. This one definitely seems to be worth looking into. One potential issue may be Windows support. A Qt version for Windows exists, but I recall coming across some weird licensing policies for this - not sure if this is still the case, but it&apos;s something to look into if you&apos;re going to build anything other than an open source application.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://ruby-gnome2.sourceforge.jp/&quot;&gt;Ruby-GNOME2&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Same as above, except for GTK2 / Gnome. As with QtRuby, this seems like a great choice for Linux, but I am less sure about Windows. Reportedly GTK2 still has some stability issues on Windows (although I am happily running Gaim on my WIndows laptop).&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.widestudio.org/EE/index.html&quot;&gt;WideStudio/MWT&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This is another very portable (all relevant desktop platforms as well as many embedded platforms are supported) GUI library that includes Ruby bindings (as well as bindings for many other languages). It includes a GUI builder application, which may be useful. It also integrates with OpenGL, although I believe the same is true for most of the other toolkits on this list.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.erikveen.dds.nl/rubywebdialogs/index.html&quot;&gt;RubyWebDialogs&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This one&apos;s definitely different... For many applications, I would consider simply building them as web applications (most likely using Rails) and running them locally using the WEBrick server, thus turning the browser into the GUI. RubyWebDialogs takes this idea a step further and provides an API that completely abstracts the web layer and allows you to develop as with any other GUI toolkit, even though it ultimately generates HTML pages that are rendered by your browser. It does not sound like the most straightforward way to build an application, but the examples look pretty simple, so this probably deserves a look. It appears to be reasonably lightweight and self contained and does not even use an external HTTP server such as WEBrick.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>ActiveRecord Migrations</title><link>https://www.digitalhobbit.com/legacy/2005/09/27/activerecord-migrations/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/27/activerecord-migrations/</guid><description>Here is a nice post on getting started with ActiveRecord migrations. I haven&apos;t played with it yet, but this definitely looks very useful. On my current Rails project, I&apos;ve been going back and forth between using MySQL and using SQLite (although I&apos;m probably sticking with SQLite for now), and I&apos;ve had to manually keep the SQL schema creation scripts in sync between the two databases.</description><pubDate>Tue, 27 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here is a nice post on &lt;a href=&quot;http://jamis.jamisbuck.org/articles/2005/09/27/getting-started-with-activerecord-migrations&quot;&gt;getting started with ActiveRecord migrations&lt;/a&gt;. I haven&apos;t played with it yet, but this definitely looks very useful. On my current Rails project, I&apos;ve been going back and forth between using MySQL and using SQLite (although I&apos;m probably sticking with SQLite for now), and I&apos;ve had to manually keep the SQL schema creation scripts in sync between the two databases. Using the database agnostic ActiveRecord syntax sounds like a much cleaner solution. And modifying the schema in real time and having the soon-to-be-released SchemaDumper take care of creating the ActiveRecord migration file containing the initial schema sounds like a convenient solution as well. I&apos;ll really have to spend some more time looking into ActiveRecord, as it does some pretty cool stuff...&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Ruby People</title><link>https://www.digitalhobbit.com/legacy/2005/09/27/ruby-people/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/27/ruby-people/</guid><description>Martin Fowler has posted a strong endorsement of the Ruby community on his Bliki. Robby has echoed similar sentiments on his Robby on Rails blog. I have not interacted with the Ruby community all that much, but everything I&apos;ve seen so far has been very positive.</description><pubDate>Tue, 27 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Martin Fowler has posted a strong &lt;a href=&quot;http://martinfowler.com/bliki/RubyPeople.html&quot;&gt;endorsement of the Ruby community&lt;/a&gt; on his Bliki. Robby has echoed similar sentiments on &lt;a href=&quot;http://www.robbyonrails.com:8680/articles/2005/09/26/is-the-ruby-community-nicer&quot;&gt;his Robby on Rails blog&lt;/a&gt;. I have not interacted with the Ruby community all that much, but everything I&apos;ve seen so far has been very positive. I&apos;m inclined to agree with Robby that that this is largely due to the cultured nature of many Ruby developers, who come from many other languages such as Java, .NET, PHP, Perl, etc. Regardless of whether we are building websites or complex enterprise applications, I have a feeling that most of us have had enough experience with other, less elegant programming languages and frameworks to allow us to really appreciate the elegance of Ruby and the Ruby on Rails framework, and this shared enthusiasm may very well be what&apos;s drawing the community together.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Java Web Parts</title><link>https://www.digitalhobbit.com/legacy/2005/09/25/java-web-parts/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/25/java-web-parts/</guid><description>I just came across Java Web Parts, a collection of open source, lightweight web components such as servlet filters, custom taglibs, utility classes etc. I still need to take a closer look at it, but it looks like there&apos;s some useful functionality. (via TheServerSide.com)</description><pubDate>Sun, 25 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just came across &lt;a href=&quot;http://javawebparts.sourceforge.net/&quot;&gt;Java Web Parts&lt;/a&gt;, a collection of open source, lightweight web components such as servlet filters, custom taglibs, utility classes etc. I still need to take a closer look at it, but it looks like there&apos;s some useful functionality.&lt;/p&gt;
&lt;p&gt;(via &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=36665&quot;&gt;TheServerSide.com&lt;/a&gt;)&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Opera browser now free forever</title><link>https://www.digitalhobbit.com/legacy/2005/09/20/opera-browser-now-free-forever/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/20/opera-browser-now-free-forever/</guid><description>Opera Software has decided to offer the full version of their Opera browser (i.e. without ads) for free from now on. I don&apos;t quite I understand how they are planning to make money, but they explain some of the reasons for making their browser free here. I have used Opera for a while a couple of years ago, and it&apos;s definitely a good browser.</description><pubDate>Tue, 20 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Opera Software has decided to offer the full version of their Opera browser (i.e. without ads) for free from now on. I don&apos;t quite I understand how they are planning to make money, but they explain &lt;a href=&quot;http://opera.com/free/&quot;&gt;some of the reasons for making their browser free&lt;/a&gt; here.&lt;/p&gt;
&lt;p&gt;I have used Opera for a while a couple of years ago, and it&apos;s definitely a good browser. But frankly, I&apos;m not sure why anybody would choose to use Opera over Firefox these days. Firefox, which offers most of the same features as Opera out of the box, has managed to steal a lot of market share from IE in the recent years. Most websites these days (though sadly still not all) are optimized for both Firefox and IE, but the same cannot be said for Opera. In addition, Firefox offers many powerful plugins (and new plugins appear every week) that allow users to customize the browser according to their needs.&lt;/p&gt;
&lt;p&gt;I wish them good luck, but I&apos;d be surprised if Opera Software manages to stay around much longer...&lt;/p&gt;</content:encoded><category>software</category></item><item><title>Evaluating Ruby</title><link>https://www.digitalhobbit.com/legacy/2005/09/17/evaluating-ruby/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/17/evaluating-ruby/</guid><description>Pragmatic Programmer Dave Thomas (aka PragDave) has started a new series of articles about comparing Ruby to other languages. The first article looks at one of the biggest perceived issues, performance. As usual Dave is pragmatic and points out that Ruby is not always the best choice.</description><pubDate>Sat, 17 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Pragmatic Programmer Dave Thomas (aka &lt;a href=&quot;http://blogs.pragprog.com/cgi-bin/pragdave.cgi&quot;&gt;PragDave&lt;/a&gt;) has started a new series of articles about comparing Ruby to other languages.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blogs.pragprog.com/cgi-bin/pragdave.cgi/Tech/Ruby/LanguageChoice.rdoc&quot;&gt;The first article&lt;/a&gt; looks at one of the biggest perceived issues, performance. As usual Dave is pragmatic and points out that Ruby is not always the best choice. In most cases however, the relatively small linear performance loss of Ruby compared to, say, J2EE, is negligible when you consider that for a typical enterprise application that does some data shuffling and maybe some basic arithmetic operations, only a small fraction of time (he estimates 5%) is actually spent in code that you write, while the rest of the time is spent on data transfer, database operations (possibly using some kind of object/relational mapping framework), etc. Furthermore, the expressiveness of Ruby often allows programmers to write cleaner, more efficient algorithms. The potential gains from a more efficient algorithm can far outweigh the small linear loss of using a slower language.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Google Portal</title><link>https://www.digitalhobbit.com/legacy/2005/09/17/google-portal/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/17/google-portal/</guid><description>It looks like Google has launched another service without much fanfare. Gmail&apos;s &quot;New Features&quot; list modestly advertises the new service as &quot;Personalize the Google homepage&quot;, but it looks pretty much like a full featured portal. You can choose which content to display on the home page. Available choices include Gmail (top N messages), weather, stocks, bookmarks, news, arbitrary RSS feeds, search history, and more.</description><pubDate>Sat, 17 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It looks like Google has launched another service without much fanfare. Gmail&apos;s &quot;New Features&quot; list modestly advertises the new service as &lt;a href=&quot;http://www.google.com/ig&quot;&gt;&quot;Personalize the Google homepage&quot;&lt;/a&gt;, but it looks pretty much like a full featured portal. You can choose which content to display on the home page. Available choices include Gmail (top N messages), weather, stocks, bookmarks, news, arbitrary RSS feeds, search history, and more.&lt;/p&gt;
&lt;p&gt;I&apos;m not quite sure if I like it, even though it could undoubtedly be useful. But after adding a few blocks of content to the site, it starts to feel a bit cluttered (particularly in contrast to the extremely lightweight standard Google homepage). I can&apos;t help but think of Yahoo, which started out as a simple Internet directory and later exploded into the portal it represents now. Yahoo now offers many great services, but these come at a cost of navigatability (is this a word?). I hope Google doesn&apos;t go too far in that direction. Interestingly, Google does not mention the word &lt;em&gt;&quot;Portal&quot;&lt;/em&gt; anywhere in context with the new personalization feature.&lt;/p&gt;
&lt;p&gt;I think I&apos;ll play with the new home page a little over the next few weeks and see if it grows on me.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>YAML Editor Support</title><link>https://www.digitalhobbit.com/legacy/2005/09/15/yaml-editor-support/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/15/yaml-editor-support/</guid><description>As a quick follow-up to yesterday&apos;s post about YAML, here are some links to add YAML support to your favorite editor. Unfortunately, I have been unable to hunt down YAML mode files for vim and emacs, although I saw a vim file mentioned a couple times. Perhaps this is because YAML itself is so lightweight and readable that it really doesn&apos;t require any syntax highlighting.</description><pubDate>Thu, 15 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a quick follow-up to yesterday&apos;s post about YAML, here are some links to add YAML support to your favorite editor. Unfortunately, I have been unable to hunt down YAML mode files for vim and emacs, although I saw a vim file mentioned a couple times. Perhaps this is because YAML itself is so lightweight and readable that it really doesn&apos;t require any syntax highlighting. Anyway, if anybody knows the location of these files (or if you are aware of other editors that support YAML), please leave a comment and I&apos;ll update this list.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; It turns out that vim supports YAML syntax highlighting out of the box. I am not sure which version this was added in, but I have tested this both at work (vim 6.3.46) and at home (vim 6.3.84).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://community.jedit.org/?q=filestore/download/1913&quot;&gt;jEdit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.vim.org/&quot;&gt;vim&lt;/a&gt; (includes YAML support out of the box)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.scintilla.org/SciTE.html&quot;&gt;SciTE&lt;/a&gt; (ditto)&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>development</category></item><item><title>Google Blog Search</title><link>https://www.digitalhobbit.com/legacy/2005/09/14/google-blog-search/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/14/google-blog-search/</guid><description>Google has just launched another beta service: Google Blog Search. It looks pretty good already, and for example searching for relevant phrases brought up the expected postings from my blog. There is no way to explicitly submit a blog to Google, and the key to getting your blog listed is to submit it to relevant blog lists, which is most easily done by pinging a service such as Ping-o-Matic.</description><pubDate>Wed, 14 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Google has just launched another beta service: &lt;a href=&quot;http://www.google.com/blogsearch&quot;&gt;Google Blog Search&lt;/a&gt;. It looks pretty good already, and for example searching for relevant phrases brought up the expected postings from my blog. There is no way to explicitly submit a blog to Google, and the key to getting your blog listed is to submit it to relevant blog lists, which is most easily done by pinging a service such as &lt;a href=&quot;http://pingomatic.com/&quot;&gt;Ping-o-Matic&lt;/a&gt;. If you&apos;re using a nice blogging tool like WordPress, it should automatically take care of this for you.&lt;/p&gt;
&lt;p&gt;Somebody has written up a nice &lt;a href=&quot;http://frenchfragfactory.net/ozh/archives/2005/09/14/google-blog-search-vs-technorati-vs-icerocket-vs-blogpulse/&quot;&gt;comparison between Google Blog Search, Blog Pulse, Technorati, and Ice Rocket&lt;/a&gt;. While Google still appears to be playing catch up in a few minor areas, they already do what they do best: provide lightning fast access to relevant search results.&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>YAML vs. XML</title><link>https://www.digitalhobbit.com/legacy/2005/09/14/yaml-vs-xml/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/14/yaml-vs-xml/</guid><description>I&apos;m still (slowly) getting up to speed on Ruby and various associated libraries and frameworks. Tonight I spent some time looking into YAML. I always thought that this stood for &quot;Yet Another Markup Language&quot;, but apparently it actually stands for &quot;YAML Ain&apos;t Markup Language&quot;. Essentially, YAML is a lightweight alternative to XML.</description><pubDate>Wed, 14 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m still (slowly) getting up to speed on Ruby and various associated libraries and frameworks. Tonight I spent some time looking into &lt;a href=&quot;http://www.yaml.org&quot;&gt;YAML&lt;/a&gt;. I always thought that this stood for &lt;em&gt;&quot;Yet Another Markup Language&quot;&lt;/em&gt;, but apparently it actually stands for &lt;em&gt;&quot;YAML Ain&apos;t Markup Language&quot;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Essentially, YAML is a lightweight alternative to XML. As somebody who entered the job market in the late 1990s, XML usually seems to me like the natural choice for expressing data. The combination of Java (or other programming languages) with XML can be very powerful. At this point XML is very mature. It offers several powerful ways of defining schemas (such as XML Schema or the older DTD format), performing transformations, it supports namespaces, and it is a vital aspect of many web service standards (such as SOAP). At the same time, XML can be pretty cumbersome to deal with, and in many situations the power that it brings comes at the cost of productivity loss and added complexity. Particularly for Java, there have been a number of attempts at improving XML&apos;s usability, for example by implementing XML / Object binding frameworks (such as &lt;a href=&quot;http://java.sun.com/xml/jaxb/&quot;&gt;JAXB&lt;/a&gt;, &lt;a href=&quot;http://www.castor.org/&quot;&gt;Castor&lt;/a&gt;, or &lt;a href=&quot;http://jibx.sourceforge.net/&quot;&gt;JiBX&lt;/a&gt;). These tools allow you to indirectly deal with XML documents through Java domain objects, which is often a lot more convenient than working with SAX or DOM parsers.&lt;/p&gt;
&lt;p&gt;Because of the dynamic nature of Ruby, this is slightly less of an issue. For example, the excellent &lt;a href=&quot;http://www.germane-software.com/software/rexml/&quot;&gt;REXML&lt;/a&gt; parser allows Ruby programs to work with XML using a nice syntax that is very much in line with &quot;the Ruby way&quot;. This helps when writing code to parse XML files, but it still does not solve the inherent problem of dealing with complex XML files.&lt;/p&gt;
&lt;p&gt;This is where YAML comes in. &lt;a href=&quot;http://yaml4r.sf.net/cookbook/&quot;&gt;YAML syntax&lt;/a&gt; is very easy and concise. It mostly eschews tags and other types of complex markup in favor of indentation and a few basic symbols (such as dashes at the beginning of a line to denote a list item). In many ways, this is not unlike Wiki markup (minus the formatting). Here is &lt;a href=&quot;http://yaml.org/start.html&quot;&gt;a simple example&lt;/a&gt; of how an invoice might be represented in YAML.&lt;/p&gt;
&lt;p&gt;In most programming languages (including Ruby and other scripting languages), parsed YAML documents are represented using the language&apos;s native constructs. In Ruby, this means that parsing a YAML document results in a hierarchical structure of arrays and hashes that is significantly easier to manipulate than the complex object models that typically represent an XML DOM tree.&lt;/p&gt;
&lt;p&gt;Of course, support for YAML is bidirectional, i.e. Ruby data structures can be written to a YAML file. Even better, YAML is one of several possible mechanisms for serializing Ruby objects using Ruby&apos;s built-in serialization mechanism. This is very nice, as it provides a human readable alternative to the usual binary serialization formats, as well as preserving backwards compatibility of serialized Ruby objects with future versions of the language, which is not guaranteed when using binary serialization.&lt;/p&gt;
&lt;p&gt;YAML has been widely adopted by the Ruby community as the de-facto standard for configuration files and other types of data (at least those that aren&apos;t simply expressed as native Ruby, which is also a very valid option in many cases, as Ruby&apos;s concise syntax lends itself quite well to this). If you work with Ruby frameworks such as &lt;a href=&quot;http://www.rubyonrails.org&quot;&gt;Rails&lt;/a&gt;, chances are that you will come across the occasional YAML file (such as the database configuration file in Rails).&lt;/p&gt;
&lt;p&gt;Unfortunately the &lt;a href=&quot;http://helide.com/g/yaml/&quot;&gt;Java efforts to support YAML&lt;/a&gt; have been dropped in favor of &lt;a href=&quot;http://ogdl.sourceforge.net/&quot;&gt;OGDL&lt;/a&gt;, which looks very similar to YAML but is apparently even simpler.&lt;/p&gt;
&lt;p&gt;If you are curious about using YAML with Ruby and would like to check it out, I recommend that you start with the &lt;a href=&quot;http://yaml4r.sf.net/cookbook/&quot;&gt;YAML Cookbook for Ruby&lt;/a&gt;. YAML has been included with Ruby since version 1.8.0, so chances are you&apos;ll be able to play with it without having to download any additional libraries. Simply fire up IRB and give it a shot. For other languages (including Python, Perl, Java, Javscript, PHP, OCaml, and Cocoa), check &lt;a href=&quot;http://yaml.org/download.html&quot;&gt;the download page&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Introducing Rails in your company</title><link>https://www.digitalhobbit.com/legacy/2005/09/11/introducing-rails-in-your-company/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/11/introducing-rails-in-your-company/</guid><description>In his blog posting titled &quot;Is Rails Ready for Prime Time?&quot;, Dave Thomas of the Pragmatic Programmers shares some interesting thoughts on how to introduce Rails in your company. He recognizes that Rails is not always the right solution, and some situations may very well benefit from using J2EE or other frameworks.</description><pubDate>Sun, 11 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In his blog posting titled &lt;a href=&quot;http://blogs.pragprog.com/cgi-bin/pragdave.cgi/Tech/Ruby/IsRailsReadyForPrimeTime.html&quot;&gt;&quot;Is Rails Ready for Prime Time?&quot;&lt;/a&gt;, Dave Thomas of the Pragmatic Programmers shares some interesting thoughts on how to introduce Rails in your company. He recognizes that Rails is not always the right solution, and some situations may very well benefit from using J2EE or other frameworks. In many situations however, Rails will bring a huge productivity gain, provided that the development team and the company buy into it.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Interview with David Heinemeier Hansson</title><link>https://www.digitalhobbit.com/legacy/2005/09/05/interview-with-david-heinemeier-hansson/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/05/interview-with-david-heinemeier-hansson/</guid><description>O&apos;Reilly Network has posted an interview with David Heinemeier Hansson, the creator of Ruby on Rails. It&apos;s an interesting read and covers some of the reasons for writing the Rails framework. Apparently David has done significant development with both PHP (which he calls quick-n-dirty), as well as Java (which he calls slow-n-clean). With Rails, he was aiming for quick-n-clean, and it seems like he&apos;s succeeded.</description><pubDate>Mon, 05 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;O&apos;Reilly Network has posted an &lt;a href=&quot;http://www.oreillynet.com/pub/a/network/2005/08/30/ruby-rails-david-heinemeier-hansson.html&quot;&gt;interview with David Heinemeier Hansson&lt;/a&gt;, the creator of &lt;a href=&quot;http://www.rubyonrails.org&quot;&gt;Ruby on Rails&lt;/a&gt;. It&apos;s an interesting read and covers some of the reasons for writing the Rails framework. Apparently David has done significant development with both PHP (which he calls &lt;strong&gt;quick-n-dirty&lt;/strong&gt;), as well as Java (which he calls &lt;strong&gt;slow-n-clean&lt;/strong&gt;). With Rails, he was aiming for &lt;strong&gt;quick-n-clean&lt;/strong&gt;, and it seems like he&apos;s succeeded.&lt;/p&gt;
&lt;p&gt;He also talks about the fact that Rails is opinionated software, which greatly enhances productivity if you accept its sensible conventions, but may not appeal to people who need flexibility on the infrastructure level for flexibility sake. Rails does bring improved flexibility at the application level, which seems like a worthwhile tradeoff.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Ruby for Java Programmers</title><link>https://www.digitalhobbit.com/legacy/2005/09/05/ruby-for-java-programmers/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/09/05/ruby-for-java-programmers/</guid><description>If you are a Java programmer and you&apos;re interested in Ruby, you should read this presentation about 10 Things Every Java Programmer Should Know About Ruby. This blog entry also has some nice Ruby information for Java developers. About the most dangerous thing about Ruby is how more elegant and less verbose it is.</description><pubDate>Mon, 05 Sep 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you are a Java programmer and you&apos;re interested in Ruby, you should read this presentation about &lt;a href=&quot;http://onestepback.org/articles/10things/index.html&quot;&gt;10 Things Every Java Programmer Should Know About Ruby&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://fhwang.net/blog/40.html&quot;&gt;This blog entry&lt;/a&gt; also has some nice Ruby information for Java developers.&lt;/p&gt;
&lt;p&gt;About the most dangerous thing about Ruby is how more elegant and less verbose it is. And this is not only reflected in the core language, but also in the various Ruby frameworks and extensions (such as &lt;a href=&quot;http://www.rubyonrails.org&quot;&gt;Ruby on Rails&lt;/a&gt;) and the developer community that has adopted these philosophies. Even though I consider myself pretty much a Java expert but only a beginner at Ruby, I already feel more productive solving many problems in Ruby than in Java.&lt;/p&gt;
&lt;p&gt;You may find yourself swearing at the verboseness and clumsiness of Java once you&apos;ve done some Ruby programming. Don&apos;t get me wrong - Java is a great language and I enjoy programming in Java, although I guess this is more because I am very familiar with Java and its various libraries, including excellent open source software and IDE support. But it is definitely well suited (and proven) for enterprise software, whereas Ruby still needs to prove itself in this area.&lt;/p&gt;</content:encoded><category>development</category><category>java</category></item><item><title>Google Adsense obsessed with Flying Spaghetti Monster</title><link>https://www.digitalhobbit.com/legacy/2005/08/31/google-adsense-obsessed-with-flying-spaghetti-monster/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/31/google-adsense-obsessed-with-flying-spaghetti-monster/</guid><description>Google Adsense seems to be very sensitive to certain content. I have only posted two entries about Flying Spaghetti Monsterism (this one and this one), and currently the main page displays these two posts among various others about topics such as iPod, podcasting, Ruby, Java, Cafepress, Spreadshirt, Xbox, etc. Still, as of the time of this writing the Google banner exclusively contains ads for websites on religion or spaghetti recipes.</description><pubDate>Wed, 31 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Google Adsense seems to be very sensitive to certain content. I have only posted two entries about Flying Spaghetti Monsterism (&lt;a href=&quot;/legacy/2005/08/22/flying-spaghetti-monster/&quot;&gt;this one&lt;/a&gt; and &lt;a href=&quot;/legacy/2005/08/25/what-if-god-wanted-pasta-sauce/&quot;&gt;this one&lt;/a&gt;), and currently the main page displays these two posts among various others about topics such as iPod, podcasting, Ruby, Java, Cafepress, Spreadshirt, Xbox, etc. Still, as of the time of this writing the Google banner exclusively contains ads for websites on religion or spaghetti recipes.&lt;/p&gt;
&lt;p&gt;I shudder to think that I might actually be inadvertently promoting religion via the ads displayed on my blog. ;)
Those spaghetti recipes might come in handy, though.&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>Do-It-Yourself iPod Stand</title><link>https://www.digitalhobbit.com/legacy/2005/08/28/do-it-yourself-ipod-stand/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/28/do-it-yourself-ipod-stand/</guid><description>Awesome idea: Do-It-Yourself iPod Stand, based on a printable PDF template.</description><pubDate>Sun, 28 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Awesome idea: &lt;a href=&quot;http://www.listsanddiagrams.com/archives/2005/03/diy_ipod_stand.htm&quot;&gt;Do-It-Yourself iPod Stand&lt;/a&gt;, based on a printable PDF template.&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>Gmail keeps getting better</title><link>https://www.digitalhobbit.com/legacy/2005/08/27/gmail-keeps-getting-better/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/27/gmail-keeps-getting-better/</guid><description>Gmail just keeps getting better. I&apos;ve been using it for about half a year now, and I&apos;ve been extremely satisfied with it. But a few days ago, they added another very useful feature: It is now possible to associate your Gmail account with one or more other email addresses (verification required) and specify those in the &quot;From&quot; field when sending emails.</description><pubDate>Sat, 27 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Gmail just keeps getting better. I&apos;ve been using it for about half a year now, and I&apos;ve been extremely satisfied with it. But a few days ago, they added another very useful feature: It is now possible to associate your Gmail account with one or more other email addresses (verification required) and specify those in the &quot;From&quot; field when sending emails. You can specify the default address in your settings, but you can also conveniently change this using a drop-down  on a per message basis.&lt;/p&gt;
&lt;p&gt;I use Gmail for all my personal email, but my canonical email address that I give out is a digitalhobbit.com address that simply forwards to my Gmail account. I also have an older forwarding address that I still monitor, as well as a couple of throwaway forwarding addresses that I use to sign up at various websites but that I could get rid of fairly painlessly when the amount of spam becomes too high. Now I can finally have the proper address (ususually my canonical digitalhobbit.com email address) in my &quot;From&quot; field instead of having to put it into the &quot;Reply-To&quot; field. This is particularly important for some mailing lists that require the proper &quot;From&quot; address, which has been bugging me recently.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Project Pitchfork / Downloadable Music</title><link>https://www.digitalhobbit.com/legacy/2005/08/27/downloadable-music/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/27/downloadable-music/</guid><description>I just noticed that one of my favorite Industrial bands, Project Pitchfork, is offering a downloadable version of their latest album &quot;Kaskade&quot; for sale, in addition to the usual CD edition. Apparently the downloaded version consists of high quality 192kbps MP3 files without DRM or anything. A PDF version of the cover is included as well.</description><pubDate>Sat, 27 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just noticed that one of my favorite Industrial bands, &lt;a href=&quot;http://www.pitchfork.de&quot;&gt;Project Pitchfork&lt;/a&gt;, is offering a &lt;a href=&quot;http://www.musicdock.net/shop/show.do?id=786&quot;&gt;downloadable version&lt;/a&gt; of their latest album &quot;Kaskade&quot; for sale, in addition to the usual CD edition. Apparently the downloaded version consists of high quality 192kbps MP3 files without DRM or anything. A PDF version of the cover is included as well.&lt;/p&gt;
&lt;p&gt;At $9.99, the price is reasonable (the current price for the CD at Amazon is $15.98), but I&apos;d like to see this drop closer to $5. Still, this is definitely a step in the right direction and I wish more bands would go this route. Downloadable music on iTunes or similar sites is not an option for me, as I refuse to pay for DRM-crippled music.&lt;/p&gt;
&lt;p&gt;(On the down side, the Project Pitchfork homepage uses menus that don&apos;t work in Firefox... You&apos;ll have to use IE to use these. The &lt;a href=&quot;http://www.musicdock.net/shop/show.do?id=786&quot;&gt;Shop&lt;/a&gt; itself, which is hosted by &lt;a href=&quot;http://www.musicdock.net/&quot;&gt;MusicDock&lt;/a&gt;, works fine in Firefox.)&lt;/p&gt;</content:encoded><category>entertainment</category><category>music</category></item><item><title>What If God Wanted Pasta Sauce</title><link>https://www.digitalhobbit.com/legacy/2005/08/25/what-if-god-wanted-pasta-sauce/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/25/what-if-god-wanted-pasta-sauce/</guid><description>Sparkletone did a wonderfully quirky pastafarian parody of &quot;What If God Was One Of Us&quot;, called &quot;What If God Wanted Pasta Sauce&quot;. He provides both a regular version and a vocals only version for those who want to create their own mix. (via BoingBoing)</description><pubDate>Thu, 25 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sparkletone did a wonderfully quirky pastafarian parody of &quot;What If God Was One Of Us&quot;, called &lt;a href=&quot;http://blog.sparkletone.net/archives/230&quot;&gt;&quot;What If God Wanted Pasta Sauce&quot;&lt;/a&gt;. He provides both a &lt;a href=&quot;http://web.ics.purdue.edu/~agoddard/music/covers/WhatIfGodWantedPastaSauce.mp3&quot;&gt;regular version&lt;/a&gt; and a &lt;a href=&quot;http://web.ics.purdue.edu/~agoddard/music/covers/WhatIfGodWantedPastaSauce-vox.mp3&quot;&gt;vocals only version&lt;/a&gt; for those who want to create their own mix.&lt;/p&gt;
&lt;p&gt;(via &lt;a href=&quot;http://www.boingboing.net/2005/08/23/fsm_flotsam.html&quot;&gt;BoingBoing&lt;/a&gt;)&lt;/p&gt;</content:encoded><category>fun</category></item><item><title>Jalapeno anyone?</title><link>https://www.digitalhobbit.com/legacy/2005/08/24/08-24-05_0905jpg/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/24/08-24-05_0905jpg/</guid><description>08-24-05_0905.jpg , originally uploaded by DigitalHobbit . This has been lying on the kitchen table in the office since yesterday...</description><pubDate>Wed, 24 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;style type=&quot;text/css&quot;&gt;
.flickr-photo { border: solid 2px #000000; }
.flickr-yourcomment { }
.flickr-frame { text-align: left; padding: 3px; }
.flickr-caption { font-size: 0.8em; margin-top: 0px; }
&lt;/style&gt;
&lt;div class=&quot;flickr-frame&quot;&gt;
	&lt;a href=&quot;http://www.flickr.com/photos/digitalhobbit/36841514/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://photos21.flickr.com/36841514_6f530db404.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot;&gt;&lt;/a&gt;
&lt;br&gt;
	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/digitalhobbit/36841514/&quot;&gt;08-24-05_0905.jpg&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/digitalhobbit/&quot;&gt;DigitalHobbit&lt;/a&gt;.&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;This has been lying on the kitchen table in the office since yesterday...&lt;/p&gt;</content:encoded></item><item><title>Flying Spaghetti Monster</title><link>https://www.digitalhobbit.com/legacy/2005/08/22/flying-spaghetti-monster/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/22/flying-spaghetti-monster/</guid><description>OK, I&apos;m probably the last person to hear about this, but this is insanely funny. In response to the Kansas State Board of Education&apos;s ridiculous and backwards decision to teach Intelligent Design (essentially Christian Creationism dressed up as science), somebody has created a parody religion called &quot;Flying Spaghetti Monsterism&quot;, which has gained a huge following in the past few months.</description><pubDate>Mon, 22 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;OK, I&apos;m probably the last person to hear about this, but this is insanely funny. In response to the &lt;a href=&quot;http://www.washingtonpost.com/wp-dyn/content/article/2005/08/10/AR2005081001236.html&quot;&gt;Kansas State Board of Education&apos;s ridiculous and backwards decision to teach Intelligent Design&lt;/a&gt; (essentially Christian Creationism dressed up as science), somebody has created a parody religion called &quot;Flying Spaghetti Monsterism&quot;, which has gained a huge following in the past few months. This &lt;a href=&quot;http://www.venganza.org/index.htm&quot;&gt;open letter to the Kansas School Board&lt;/a&gt; describes the religion and states that is is just as much science as Intelligent Design. If you have any doubts, just check out the chart that compares the decline of pirates in the world to the rise of the global average temperature and thus clearly proves that global warming is caused by the decline of pirates.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://www.venganza.org/response.htm&quot;&gt;responses from the few sane people on the Kansas School Board&lt;/a&gt; are also worth reading. I wish them luck for the final vote in October.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Flying_Spaghetti_Monster&quot;&gt;Wikipedia entry on the Flying Spaghetti Monster&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.boingboing.net/2005/08/22/flying_spaghetti_mon.html&quot;&gt;BoingBoing posting with nice downloadable artwork to create a Flying Spaghetti Monster bumper sticker&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;RAmen.&lt;/p&gt;</content:encoded><category>fun</category><category>society</category></item><item><title>iPod deserted me when I needed it most</title><link>https://www.digitalhobbit.com/legacy/2005/08/21/ipod-deserted-me-when-i-needed-it-most/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/21/ipod-deserted-me-when-i-needed-it-most/</guid><description>Yesterday afternoon we drove back from San Diego to San Francisco. Overall, the trip was pretty smooth - except for one major annoyance. I had brought my laptop along, and the day before the trip back I had downloaded some podcasts for myself as well as my kids. However, when I synced those to my iPod using iTunes, something went wrong, resulting in a corrupted iPod.</description><pubDate>Sun, 21 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday afternoon we drove back from San Diego to San Francisco. Overall, the trip was pretty smooth - except for one major annoyance. I had brought my laptop along, and the day before the trip back I had downloaded some podcasts for myself as well as my kids. However, when I synced those to my iPod using iTunes, something went wrong, resulting in a corrupted iPod. The iPod still showed that it was half full, but none of the music showed up. iTunes completely hung when it tried to connect to the iPod, and Windows Explorer wasn&apos;t happy either. I suppose the database on the iPod must have gotten corrupted somehow. I have not yet tried resetting the iPod and uploading my music again, but I hope that that&apos;s all there is to it.&lt;/p&gt;
&lt;p&gt;The bottom line is that we were stuck listening to the radio, as we hadn&apos;t brought any CDs along. I had forgotten how much radio sucks... It seems like the radio stations on the route between San Diego and San Francisco only play Mexican folk music, christian rock, country, oldies, and hip-hop - none of which I care for. In the end I settled for a couple of classic rock stations, which seemed like the least bad of the bunch. It got so far that I was actually happy to hear Guns N&apos;Roses...&lt;/p&gt;
&lt;p&gt;In my case this was just an annoyance, but it definitely raises some concerns about using the iPod for more serious data storage. For example, there are adapters that allow the iPod to synchronize with digital cameras. While this sounds like a very convenient solution for long trips on which you don&apos;t want to carry your laptop with you, I would be very careful about storing a whole trip&apos;s worth of pictures on the iPod without having another backup. I suppose as long as you have access to a networked computer, you could always transfer the pictures from the iPod to another source, such as an FTP server.&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>Xbox 360 pricing and packaging</title><link>https://www.digitalhobbit.com/legacy/2005/08/21/xbox-360-pricing-and-packaging/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/21/xbox-360-pricing-and-packaging/</guid><description>Microsoft has announced details on the pricing and packaging for the Xbox 360 that is expected in time for the holiday season. Unofrtunately, Microsoft has decided to offer two different bundles for $299 and $399 respectively. The $399 bundle includes many features that were previously expected to be standard Xbox 360 features (20GB hard drive, wireless controller, Xbox Live membership), plus a headset and remote control.</description><pubDate>Sun, 21 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Microsoft has announced details on the &lt;a href=&quot;http://www.technologybizdev.com/2005/08/17/microsoft-xbox-360-pricing/&quot;&gt;pricing and packaging for the Xbox 360&lt;/a&gt; that is expected in time for the holiday season.&lt;/p&gt;
&lt;p&gt;Unofrtunately, Microsoft has decided to offer two different bundles for $299 and $399 respectively. The $399 bundle includes many features that were previously expected to be standard Xbox 360 features (20GB hard drive, wireless controller, Xbox Live membership), plus a headset and remote control. The $299 bundle includes a wired controller and none of the features above (most importantly no hard drive).&lt;/p&gt;
&lt;p&gt;Based on previous reports it sounded like Microsoft was really pushing the boundaries of downloadable content and micropayments. Of course, none of this is possible without a hard drive. Now that Microsoft has created a segmented market (and given that most parents who buy their kids an Xbox 360 as a holiday present will probably pick up the cheaper bundle without a hard drive), I wonder how successful this aspect will be, and how many gaming companies will really try to leverage this functionality. In many ways, this destroys the main advantage that consoles have over the PC: consistent hardware specs.&lt;/p&gt;
&lt;p&gt;I&apos;ve been thinking about picking up an Xbox 360 when it comes out, but I for one am only interested in the more expensive bundle, and at $399 I am not sure I can justify this expense (especially when you figure in the each game will cost an additional $60). Too bad...&lt;/p&gt;</content:encoded><category>games</category></item><item><title>Clientcopia : Stupid Client Quotes</title><link>https://www.digitalhobbit.com/legacy/2005/08/19/clientcopia-stupid-client-quotes/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/19/clientcopia-stupid-client-quotes/</guid><description>Someone on the Pragmatic Programmer mailing list recommended this website: Clientcopia It&apos;s a massive (3300+) collection of stupid client comments from all fields, many of which I&apos;m sure you can relate to. Just hit &quot;Random&quot; a couple of times; it&apos;s quite entertaining.</description><pubDate>Fri, 19 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Someone on the Pragmatic Programmer mailing list recommended this website: &lt;a href=&quot;http://www.clientcopia.com/index.php&quot;&gt;Clientcopia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s a massive (3300+) collection of stupid client comments from all fields, many of which I&apos;m sure you can relate to. Just hit &quot;Random&quot; a couple of times; it&apos;s quite entertaining.&lt;/p&gt;</content:encoded><category>fun</category></item><item><title>Odeo</title><link>https://www.digitalhobbit.com/legacy/2005/08/18/odeo/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/18/odeo/</guid><description>While looking for some quality examples of applications built using the Ruby on Rails framework, I came across Odeo. This San Francisco based company organizes, synchronizes, and publishes podcasts (although it it still in beta and the publishing part isn&apos;t live yet). I&apos;ve only briefly looked at it so far, but it looks very promising. Individual podcasts are tagged, similar to the way bookmarks are tagged at del.icio.us.</description><pubDate>Thu, 18 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While looking for some quality examples of applications built using the &lt;a href=&quot;http://www.rubyonrails.com/&quot;&gt;Ruby on Rails&lt;/a&gt; framework, I came across &lt;a href=&quot;http://odeo.com/&quot;&gt;Odeo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This San Francisco based company organizes, synchronizes, and publishes podcasts (although it it still in beta and the publishing part isn&apos;t live yet). I&apos;ve only briefly looked at it so far, but it looks very promising. Individual podcasts are tagged, similar to the way bookmarks are tagged at &lt;a href=&quot;http://del.icio.us/&quot;&gt;del.icio.us&lt;/a&gt;. I have not tried this, but apparently signing up allows users to assign their own tags to podcasts.&lt;/p&gt;
&lt;p&gt;Podcasts can be previewed right in the browser (although some previews sound like chipmunks, which according to the FAQ has something to do with sample rates and the flash player). Podcasts can also be subscribed to. Once you have subscribed to a bunch of podcasts, you can automatically download them using Odeo&apos;s Syncr tool, which is available for Windows and Mac, and Linux. Alternatively, you can apparently add your Odeo queue directly to iTunes (only 4.9+), which is most likely preferable to using yet another synchronization tool if you already use iTunes.&lt;/p&gt;
&lt;p&gt;The publishing tools sound very interesting as well, although they&apos;re not live yet. These will allow you post podcasts using a browser based interface - no separate audio tools necessary. You can also post a podcast by using your phone to leave a voicemail. And of course you can also post your own podcasts if you already have existing audio files.&lt;/p&gt;
&lt;p&gt;I&apos;ve only recently become interested in podcasts (admittedly largely because this functionality is now built into iTunes 4.9 and therefore easily accessible). iTunes podcast interface is very nice, but browsing the hundreds (probably thousands) of podcasts can be a bit cumbersome. I&apos;ll be keeping an eye on Odeo, which seems very usable due to its clean UI, the powerful tag concept, and search functionality. Being able to continue to use iTunes to handle the actual synchronization of podcasts to my iPod, while using Odeo to discover and manage podcasts, sounds like an ideal combination.&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>Off to San Diego</title><link>https://www.digitalhobbit.com/legacy/2005/08/12/off-to-san-diego/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/12/off-to-san-diego/</guid><description>We&apos;re off to San Diego for a week, so don&apos;t expect any updates (not that there have been a lot of those recently, anyway...). Although if I feel like it, I might post a photo from the beach or from SeaWorld via my mobile phone. :) This will be our first long road trip with the kids (4 and 2 years old), so wish me luck.</description><pubDate>Fri, 12 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We&apos;re off to San Diego for a week, so don&apos;t expect any updates (not that there have been a lot of those recently, anyway...). Although if I feel like it, I might post a photo from the beach or from SeaWorld via my mobile phone. :)&lt;/p&gt;
&lt;p&gt;This will be our first long road trip with the kids (4 and 2 years old), so wish me luck. Usually the fighting starts after just 10 minutes in the car, and the screaming another 5 minutes later. Hopefully all the new toys that we bought them for the trip and the portable DVD player that we borrowed will be enough to distract them. ;)&lt;/p&gt;
&lt;p&gt;It&apos;s not exactly beach literature, but maybe I&apos;ll finally have a chance to dig into my new Ruby on Rails book.&lt;/p&gt;</content:encoded><category>family</category></item><item><title>Greasemonkey</title><link>https://www.digitalhobbit.com/legacy/2005/08/06/greasemonkey/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/06/greasemonkey/</guid><description>The name may sound a little dirty, but Greasemonkey is a superb Firefox extension that acts as a decorator and allows you to customize the look and feel as well as the behavior of any website you visit by means of custom Javascript files. If you know Javascript, you can write your own scripts - or you can take advantage of the large number of user submitted scripts.</description><pubDate>Sat, 06 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The name may sound a little dirty, but &lt;a href=&quot;http://greasemonkey.mozdev.org/&quot;&gt;Greasemonkey&lt;/a&gt; is a superb Firefox extension that acts as a decorator and allows you to customize the look and feel as well as the behavior of any website you visit by means of custom Javascript files.&lt;/p&gt;
&lt;p&gt;If you know Javascript, you can write your own scripts - or you can take advantage of the &lt;a href=&quot;http://dunck.us/collab/GreaseMonkeyUserScripts&quot;&gt;large number of user submitted scripts&lt;/a&gt;. Some scripts are generic and act on any website, while most scripts &lt;a href=&quot;http://dunck.us/collab/GreaseMonkeyUserScriptsSpecific&quot;&gt;apply to specific websites&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Greasemonkey already solved my main Gmail annoyance: Gmail, in line with the idea of archiving all email and not bothering to delete any mail, does not offer a convenient Delete button or keyboard shortcut. The &lt;a href=&quot;http://smart-delete-button.blogspot.com&quot;&gt;Gmail Smart-Delete Button&lt;/a&gt; Greasemonkey script addresses this very elegantly and offers both a context-sensitive Delete button and a corresponding keyboard shortcut. Very nice!&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Eclipse WTP 0.7</title><link>https://www.digitalhobbit.com/legacy/2005/08/01/eclipse-wtp-07/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/08/01/eclipse-wtp-07/</guid><description>The final version 0.7 of the Eclipse WebTools Platform (WTP) was released a few days ago. I&apos;ve been using the recent milestone releases for a few months now, and they&apos;ve already been very stable and functional. If you&apos;re using Eclipse 3.1 or planning on upgrading to 3.1, I highly recommend that you install WTP as well.</description><pubDate>Mon, 01 Aug 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The final version 0.7 of the &lt;a href=&quot;http://eclipse.org/webtools/index.html&quot;&gt;Eclipse WebTools Platform (WTP)&lt;/a&gt; was released a few days ago. I&apos;ve been using the recent milestone releases for a few months now, and they&apos;ve already been very stable and functional. If you&apos;re using Eclipse 3.1 or planning on upgrading to 3.1, I highly recommend that you install WTP as well.&lt;/p&gt;
&lt;p&gt;If you&apos;re installing 3.1 from scratch, you may want to grab one of the All-in-one packages that include Eclipse 3.1, WTP, and all prerequisites.&lt;/p&gt;
&lt;p&gt;Now that the WTP release is final, it would be cool if the Ruby on Rails guys would build an RST release on top of that, as WTP was conceived as a generic platform with JST being only one implementation. With &lt;a href=&quot;http://rubyeclipse.sourceforge.net/&quot;&gt;RubyEclipse&lt;/a&gt; there&apos;s already a basic Ruby plugin for Eclipse, but it&apos;s rather limited and development seems to have stalled. Taking this to the next level and adding Rails support at that opportunity would be awesome.&lt;/p&gt;</content:encoded><category>development</category><category>java</category></item><item><title>Spreadshirt</title><link>https://www.digitalhobbit.com/legacy/2005/07/29/spreadshirt/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/07/29/spreadshirt/</guid><description>Ken Adams left a comment for my previous posting about my CafePress store and recommended that I check out Spreadshirt instead. After checking out their website, I am pretty impressed. Spreadshirt operates pretty much the same way as CafePress, which means that you can either create a design for yourself and order your own items, or you can open your own virtual store and sell items at a markup.</description><pubDate>Fri, 29 Jul 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ken Adams left a comment for my previous posting about &lt;a href=&quot;http://www.cafepress.com/digitalhobbit&quot;&gt;my CafePress store&lt;/a&gt; and recommended that I check out &lt;a href=&quot;http://www.spreadshirt.com/&quot;&gt;Spreadshirt&lt;/a&gt; instead. After checking out their website, I am pretty impressed. Spreadshirt operates pretty much the same way as CafePress, which means that you can either create a design for yourself and order your own items, or you can open your own virtual store and sell items at a markup. They seem to have a slightly smaller selection of miscellaneous items than CafePress, but in return they offer far more colors for their T-Shirts. They also offer more flexibility in their design and printing process. For example, they support both plot printing (which apparently provides excellent quality even on black material, although only in one or two colors) and digital printing. Theie website also has a designer application that allows text based designs to be created right on the website, without having to upload an image. The pricing is a little more complicated, as they have base charges plus surcharges for more complex prints, but a first glance it seems to be in the same range as CafePress.&lt;/p&gt;
&lt;p&gt;I&apos;ll definitely give this a shot. The bigger color selection alone is a big plus for me, and particularly the ability to print on dark material. Stay tuned for further announcements of designs from me and my kids.&lt;/p&gt;</content:encoded><category>commerce</category><category>technology</category></item><item><title>Windows is everywhere...</title><link>https://www.digitalhobbit.com/legacy/2005/07/22/windows-is-everywhere/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/07/22/windows-is-everywhere/</guid><description>Windows is everywhere... Originally uploaded by DigitalHobbit. Windows error message on childrens&apos; arcade machine</description><pubDate>Fri, 22 Jul 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/digitalhobbit/27835161/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://photos21.flickr.com/27835161_4454a4bbdd_m.jpg&quot; alt=&quot;&quot; style=&quot;border: solid 2px #000000;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 0.9em; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/digitalhobbit/27835161/&quot;&gt;Windows is everywhere...&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/digitalhobbit/&quot;&gt;DigitalHobbit&lt;/a&gt;.

&lt;br clear=&quot;all&quot;&gt;&lt;/p&gt;
&lt;p&gt;Windows error message on childrens&apos; arcade machine&lt;/p&gt;</content:encoded></item><item><title>Flickr test</title><link>https://www.digitalhobbit.com/legacy/2005/07/18/flickr-test/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/07/18/flickr-test/</guid><description>Flickr test , originally uploaded by DigitalHobbit . Just testing posting images from my mobile phone.</description><pubDate>Mon, 18 Jul 2005 00:00:00 GMT</pubDate><content:encoded>&lt;style type=&quot;text/css&quot;&gt;
.flickr-photo { border: solid 2px #000000; }
.flickr-yourcomment { }
.flickr-frame { text-align: left; padding: 3px; }
.flickr-caption { font-size: 0.8em; margin-top: 0px; }
&lt;/style&gt;
&lt;div class=&quot;flickr-frame&quot;&gt;
	&lt;a href=&quot;http://www.flickr.com/photos/83417711@N00/26934003/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://photos23.flickr.com/26934003_bc02b80d92.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot;&gt;&lt;/a&gt;
&lt;br&gt;
	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/83417711@N00/26934003/&quot;&gt;Flickr test&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/83417711@N00/&quot;&gt;DigitalHobbit&lt;/a&gt;.&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Just testing posting images from my mobile phone.&lt;/p&gt;</content:encoded></item><item><title>Ruby on Rails vs. J2EE</title><link>https://www.digitalhobbit.com/legacy/2005/07/16/ruby-on-rails-vs-j2ee/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/07/16/ruby-on-rails-vs-j2ee/</guid><description>IBM published a nice article on their developerWorks website that compares Ruby on Rails with J2EE. To be more precise, the article compares the complete Ruby on Rails stack to that of a typical Java web application that combines J2EE with the open source Struts and Hibernate frameworks. This is a very valid comparison (Spring and other frameworks would be valid alternatives as well), as both stacks provide similar functionality.</description><pubDate>Sat, 16 Jul 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;IBM published a nice article on their developerWorks website that &lt;a href=&quot;http://www-128.ibm.com/developerworks/web/library/wa-rubyonrails/&quot;&gt;compares Ruby on Rails with J2EE&lt;/a&gt;. To be more precise, the article compares the complete &lt;a href=&quot;http://www.rubyonrails.org/&quot;&gt;Ruby on Rails&lt;/a&gt; stack to that of a typical Java web application that combines J2EE with the open source &lt;a href=&quot;http://struts.apache.org/&quot;&gt;Struts&lt;/a&gt; and &lt;a href=&quot;http://www.hibernate.org/&quot;&gt;Hibernate&lt;/a&gt; frameworks. This is a very valid comparison (Spring and other frameworks would be valid alternatives as well), as both stacks provide similar functionality. There are however crucial differences in the way these are achieved. In particular, J2EE, Struts, and Hibernate all rely on verbose XML configuration files, whereas Ruby on Rails mostly relies on conventions and reflection in order to glue everything together, which in turn should allow the developer to focus on the actual application and business logic rather than dealing with the same plumbing code / configuration data over and over again. This and the highly dynamic nature of the Ruby language itself appear to create a refreshing and potentially much more productive alternative to the established J2EE standard.&lt;/p&gt;
&lt;p&gt;Of course J2EE has its own advantages, such as the fact that it is very mature, has excellent tool support (both commercial and open source), strong vendor backing, large developer communities, etc. It&apos;s difficult to imagine Ruby on Rails (or any technology for that matter, with the unfortunate exception of .NET) overtaking J2EE in the enterprise anytime soon.&lt;/p&gt;
&lt;p&gt;Still, Ruby on Rails is gaining a lot of traction and I&apos;d certainly like to give it a shot for some small personal projects. My webhosting provider now officially supports Ruby on Rails, so I may start playing with this a little. I thought about adding a moblog to my blog for a while, and Ruby on Rails sounds like it might be a good way to implement this.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Don&apos;t Panic</title><link>https://www.digitalhobbit.com/legacy/2005/07/12/dont-panic-2/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/07/12/dont-panic-2/</guid><description>The Hitchhiker&apos;s Guide To The Galaxy movie (which I didn&apos;t care for all that much, as I previously wrote), prompted me to pick up a copy of &quot;Don&apos;t Panic&quot;, Neil Gaiman&apos;s guide to the guide.</description><pubDate>Tue, 12 Jul 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The Hitchhiker&apos;s Guide To The Galaxy movie (which I didn&apos;t care for all that much, as I previously wrote), prompted me to pick up a copy of &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;#x26;camp=1789&amp;#x26;tag=digitalhobbit-20&amp;#x26;creative=9325&amp;#x26;path=tg/detail/-/1840237422/qid=1121232177/sr=8-1/ref=sr_8_xs_ap_i1_xgl14?v=glance%26s=books%26n=507846&quot;&gt;&quot;Don&apos;t Panic&quot;&lt;/a&gt;, Neil Gaiman&apos;s guide to the guide. The original version came out in the late 80s, but it has been updated several times since then to keep up with all additions to the increasingly inaccurately named trilogy, as well as the unfinished work that Douglas Adams left behind after his death in 2001. &quot;Don&apos;t Panic&quot; does an amazing job of covering the background behind (and the major differences between) the various incarnations of the Guide, including the radio series, the books, the BBC TV series, the audio books, etc. There are many interesting facts, such as the fact that the whole Krikkitmen story from &quot;Life, the Universe, and Everything&quot; was originally conceived as a script for Doctor Who that never made it. An excerpt of the script is also contained in &quot;Don&apos;t Panic&quot;. The book also provides a great insight into the mind and personality of Douglas Adams.&lt;/p&gt;
&lt;p&gt;If you&apos;re a fan of the Hitchhiker&apos;s Guide and Douglas Adams and want to find out more about both, I strongly encourage you to pick up both &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;#x26;camp=1789&amp;#x26;tag=digitalhobbit-20&amp;#x26;creative=9325&amp;#x26;path=tg/detail/-/1840237422/qid=1121232177/sr=8-1/ref=sr_8_xs_ap_i1_xgl14?v=glance%26s=books%26n=507846&quot;&gt;&quot;Don&apos;t Panic&quot;&lt;/a&gt; and &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;#x26;camp=1789&amp;#x26;tag=digitalhobbit-20&amp;#x26;creative=9325&amp;#x26;path=tg/detail/-/1400045088/ref=pd_sim_b_2?%5Fencoding=UTF8%26v=glance&quot;&gt;&quot;The Salmon Of Doubt&quot;&lt;/a&gt; , which contains many previously unpublished items such as essays, speeches, and of course the unfinished story Douglas was last working on.&lt;/p&gt;
&lt;p&gt;On that note: It&apos;s been a few years, I think it may be time to re-read the Hitchhiker&apos;s Guide books again... :)&lt;/p&gt;</content:encoded><category>books</category></item><item><title>DigitalHobbit CafePress Store</title><link>https://www.digitalhobbit.com/legacy/2005/07/08/digitalhobbit-cafepress-store/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/07/08/digitalhobbit-cafepress-store/</guid><description>I&apos;ve been playing a little with CafePress. I have to say it&apos;s a pretty cool concept, and very powerful. My daughter Julianna is drawing the cutest pictures these days, and I thought I&apos;d use that opportunity to put my scanner to good use and upload some of those pictures to CafePress. Check out my CafePress store.</description><pubDate>Fri, 08 Jul 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been playing a little with CafePress. I have to say it&apos;s a pretty cool concept, and very powerful. My daughter Julianna is drawing the cutest pictures these days, and I thought I&apos;d use that opportunity to put my scanner to good use and upload some of those pictures to CafePress.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.cafepress.com/digitalhobbit&quot;&gt;Check out my CafePress store.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So far I have uploaded one image called &quot;Happy Guy&quot; (not sure if this is supposed to be me; he certainly has a bit more hair than me ;) ). Next up will be some really neat dinosaurs, complete with teeth and all.&lt;/p&gt;
&lt;p&gt;I&apos;ll certainly be ordering some T-Shirts for myself. To those of you who work with me: Consider this a warning so you&apos;re mentally prepared for the day on which I&apos;ll show up in my new, green Happy Guy T-Shirt...&lt;/p&gt;</content:encoded><category>family</category><category>technology</category></item><item><title>Multitasking</title><link>https://www.digitalhobbit.com/legacy/2005/07/07/multitasking/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/07/07/multitasking/</guid><description>It&apos;s amazing how far computers have come in the past 10 years. I remember when decoding a single JPG image took several seconds on my 386 CPU (that was around the same time I was dreaming about having a 1GB hard drive some day...). Even 7 years ago, encoding MP3s still took a many minutes per song and rendered the PC virtually unusable for anything else.</description><pubDate>Thu, 07 Jul 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s amazing how far computers have come in the past 10 years. I remember when decoding a single JPG image took several seconds on my 386 CPU (that was around the same time I was dreaming about having a 1GB hard drive some day...). Even 7 years ago, encoding MP3s still took a many minutes per song and rendered the PC virtually unusable for anything else. Watching (or even encoding) movies on the PC was not even conceivable. Burning a CD still meant that you had to be very careful with what you did in parallel in order to avoid the dreaded buffer underrun errors.&lt;/p&gt;
&lt;p&gt;Now, none of this is an issue any more. Earlier this evening I was burning a DVD while at the same time ripping CDs, watching an MPEG movie, and downloading files via Bittorrent. Heck, and this was even on Windows. :)&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>iPod and collections 2</title><link>https://www.digitalhobbit.com/legacy/2005/07/05/ipod-and-collections-2/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/07/05/ipod-and-collections-2/</guid><description>Maybe I should have checked Apple&apos;s website before posting my previous blog entry. It turns out that the iPod update that came out a few days ago does in fact address the problem with compilations that I mentioned. This makes a huge difference browsing music on the iPod!</description><pubDate>Tue, 05 Jul 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Maybe I should have checked Apple&apos;s website before posting my previous blog entry. It turns out that the iPod update that came out a few days ago does in fact address the problem with compilations that I mentioned. This makes a &lt;strong&gt;huge&lt;/strong&gt; difference browsing music on the iPod!&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>iTunes 4.9 / Podcasts</title><link>https://www.digitalhobbit.com/legacy/2005/07/05/itunes-49-podcasts/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/07/05/itunes-49-podcasts/</guid><description>In addition to a new iPod update, Apple also released an updated version of iTunes (4.9). The main feature that this version adds is built-in support for podcasts. This is awesome! Podcasts can be selected and subscribed to using the Music Store interface (don&apos;t worry, they&apos;re all free). Once subscribed, podcasts can be configured to automatically be synchronized with the iPod.</description><pubDate>Tue, 05 Jul 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In addition to a new iPod update, Apple also released an updated version of iTunes (4.9). The main feature that this version adds is built-in support for podcasts. This is awesome! Podcasts can be selected and subscribed to using the Music Store interface (don&apos;t worry, they&apos;re all free). Once subscribed, podcasts can be configured to automatically be synchronized with the iPod. When a new edition of a podcast comes out, iTunes automatically downloads it and syncs it to the iPod the next time it is connected. There&apos;s a huge amount of podcasts to choose from, ranging from music to news, audio blogs, comedy, audio books, and more.&lt;/p&gt;
&lt;p&gt;I only checked out a few podcasts so far (listened to some this morning), and it&apos;s pretty cool stuff. If a podcast consists of multiple sections, the iPod can jump from section to section. Even better, my iPod photo will display a unique picture for each section of the podcast (again, of course only if the podcast is setup accordingly).&lt;/p&gt;
&lt;p&gt;My only regret is that I waited until podcasting became truly mainstream to play with this technology.&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>iPod and collections</title><link>https://www.digitalhobbit.com/legacy/2005/06/30/ipod-and-collections/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/06/30/ipod-and-collections/</guid><description>Now that I&apos;ve gotten pretty far with ripping my CD collection and properly tagging the MP3s I already had, I ran into a minor iPod annoyance. I have about 20GB and more than 3300 songs in my iTunes library at this point, all of which I sync to my 60GB iPod.</description><pubDate>Thu, 30 Jun 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Now that I&apos;ve gotten pretty far with ripping my CD collection and properly tagging the MP3s I already had, I ran into a minor iPod annoyance. I have about 20GB and more than 3300 songs in my iTunes library at this point, all of which I sync to my 60GB iPod. A bunch of my albums are collections from various artists - mostly industrial / electronic / goth samplers, 80s collections, tribute albums, etc. This means that there is a huge (one might call it inflated) number of artists in my collection. The actual number of artists of whom I own at least one full album and that are currently in my iTunes library is 97. The inflated number that includes artists of whom I only have a single song on a collection is more than twice as much, 227.&lt;/p&gt;
&lt;p&gt;Within iTunes, I have checked the &quot;Group collections when browsing&quot; option that limits the list of artists to the 97 artists I really care about, and groups all collections in an entry called &quot;Collections&quot;. This is the perfect solution to managing my music collection.&lt;/p&gt;
&lt;p&gt;Unfortunately, the iPod does not support this feature and insists on displaying all 227 artists. This is particularly annoying as the iPod with its more constrained UI (compared to a desktop app such as iTunes) is where a streamlined interface really matters. Cyling through the artists on iTunes is one thing, but doing the same thing using the clickwheel on the iPod is quite another one. Furthermore, I usually don&apos;t cycle through my library looking for a particular artist, but rather browse around to see what I might feel like listening to.&lt;/p&gt;
&lt;p&gt;Hopefully a future iPod firmware update is going to fix this...&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>Java web service resources</title><link>https://www.digitalhobbit.com/legacy/2005/05/15/java-web-service-resources/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/05/15/java-web-service-resources/</guid><description>I came across this nice collection of web service frameworks, tools, and resources for Java.</description><pubDate>Sun, 15 May 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I came across this &lt;a href=&quot;http://www.javaskyline.com/webservices/&quot;&gt;nice collection of web service frameworks, tools, and resources for Java&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Hitchhiker&apos;s Guide Movie: Disappointing</title><link>https://www.digitalhobbit.com/legacy/2005/05/07/hitchhikers-guide-movie-disappointing/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/05/07/hitchhikers-guide-movie-disappointing/</guid><description>Today I saw the &quot;Hitchhiker&apos;s Guide to the Galaxy&quot; movie. It was always clear to me that it would be difficult to turn this story into a motion picture, something that Douglas Adams unsuccessfully attempted several times before his untimely death in 2001.</description><pubDate>Sat, 07 May 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I saw the &quot;Hitchhiker&apos;s Guide to the Galaxy&quot; movie. It was always clear to me that it would be difficult to turn this story into a motion picture, something that Douglas Adams unsuccessfully attempted several times before his untimely death in 2001. I didn&apos;t expect all books to be reflected in the movie, and I also didn&apos;t expect all the pieces that did make it into the movie to be completely consistent with the books. Even Douglas Adams considerably changed the story when transforming it from one media to another (radio series, books, and TV series). I therefore tried to go into the movie with an open mind and reasonably low expectations. Unfortunately, I still managed to be disappointed.&lt;/p&gt;
&lt;p&gt;The story mainly covered the first two books. However, while large parts of the books were (understandably) not part of the movie, a substantial part of the movie&apos;s story was made up just for the movie and did not come from any of the previous incarnations of the story, which I found very odd, given the huge amount of suitable and arguably much more relevant story elements that were already available. This includes the rescue of Trillian from the Vogons, the much more emphasized (in true Hollywood style) love story between her and Arthur, etc. The vogons were done very well, but their role seemed exaggerated in an attempt to show off the nice work of the Jim Henson puppets. There were also many inconsistencies between the movie and the books (for example Deep Thought wasn&apos;t actually on the planet Magratea), although I&apos;m more willing to forgive these in the name of artistic license.&lt;/p&gt;
&lt;p&gt;On the positive side, I liked the way the guide was presented. Most of the actors were good fits for their roles. Martin Freeman was a very good choice for Arthur Dent, and even though I initially had some concerns, Mos Def was a pretty good Ford Prefect. Sam Rockwell as Zaphod Beeblebrox was quite good as well, even though he always strikes me as a Mike Myers wannabe...&lt;/p&gt;
&lt;p&gt;Overall, good enough for an entertaining evening, but definitely not the movie that I expected (and that I had been waiting for since I first read the books close to 20 years ago...)&lt;/p&gt;</content:encoded><category>entertainment</category><category>movies</category></item><item><title>Ruby on Rails</title><link>https://www.digitalhobbit.com/legacy/2005/05/03/ruby-on-rails/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/05/03/ruby-on-rails/</guid><description>My hosting service, DreamHost, finally upgraded their Ruby installation from 1.6.x to 1.8.2. This should allow me to play with all the recent Ruby software, including the Ruby on Rails web framework, which I&apos;ve heard great things about.</description><pubDate>Tue, 03 May 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My hosting service, &lt;a href=&quot;http://www.dreamhost.com/rewards.cgi?sfgeek&quot;&gt;DreamHost&lt;/a&gt;, finally upgraded their Ruby installation from 1.6.x to 1.8.2. This should allow me to play with all the recent Ruby software, including the &lt;a href=&quot;http://www.rubyonrails.org/&quot;&gt;Ruby on Rails&lt;/a&gt; web framework, which I&apos;ve heard great things about.&lt;/p&gt;
&lt;p&gt;I&apos;ve always wanted to learn Ruby, and Ruby on Rails may be a good opportunity to finally do this (I wrote a few simple one-off scripts a couple of years ago, but not enough for the language syntax to really stick). In many ways, it seems to directly compete with the more lightweight J2EE frameworks, such as &lt;a href=&quot;http://www.google.com/url?sa=U&amp;#x26;start=1&amp;#x26;q=http://www.springframework.org/&amp;#x26;e=9888&quot;&gt;Spring&lt;/a&gt; (which I&apos;m also currently reading up on). Professionally, I&apos;m quite happy working with Java, and these days I feel that there are enough great, open source Java-based solutions out there that allow powerful and scalable Java applications to be developed fairly easily. However, for personal projects such as websites, I&apos;ve usually gone with php based solutions, mostly because it is easy to find good, cheap hosting services for php, whereas Java hosting usually still costs quite a bit more... I&apos;ve never been a big fan of php itself though, and while I love &lt;a href=&quot;http://www.google.com/url?sa=U&amp;#x26;start=1&amp;#x26;q=http://wordpress.org/&amp;#x26;e=9888&quot;&gt;WordPress&lt;/a&gt;, most other php based web solutions I&apos;ve seen are quite ugly once you look at the underlying code.&lt;/p&gt;
&lt;p&gt;Now that Ruby is becoming an option with cheap hosting services, Ruby based web software may be a great alternative to php, and Ruby on Rails sounds like a great framework to build on. Even outside of the web context, learning Ruby would certainly be a worthwhile investment, as it is a very nice scripting language that can be used as a better alternative to Perl or other shell scripting languages.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Eclipse WTP Milestone M4</title><link>https://www.digitalhobbit.com/legacy/2005/05/01/eclipse-wtp-milestone-m4/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/05/01/eclipse-wtp-milestone-m4/</guid><description>The Eclipse Web Tools Platform Project has released WTP Milestone M4 yesterday. It was built against the Eclipse SDK 3.1M6 release, which was released about a month ago. A few months ago, I tested WTP M3 in conjunction with Eclipse SDK 3.1M5, but it wasn&apos;t quite there yet...</description><pubDate>Sun, 01 May 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;a href=&quot;http://eclipse.org/webtools/index.html&quot;&gt;Eclipse Web Tools Platform Project&lt;/a&gt; has released &lt;a href=&quot;http://download.eclipse.org/webtools/downloads/drops/S-1.0M4-200504292037/&quot;&gt;WTP Milestone M4&lt;/a&gt; yesterday. It was built against the &lt;a href=&quot;http://download.eclipse.org/eclipse/downloads/drops/S-3.1M6-200504011645&quot;&gt;Eclipse SDK 3.1M6 release&lt;/a&gt;, which was released about a month ago.&lt;/p&gt;
&lt;p&gt;A few months ago, I tested WTP M3 in conjunction with Eclipse SDK 3.1M5, but it wasn&apos;t quite there yet... Two weeks or so ago I installed the latest nightly build of WTP M4 on Eclipse 3.1M6 on my home machine, and this already looked very promising, although I haven&apos;t had much of a chance to really exercise it, and I didn&apos;t quite dare to install it on my PC at work. Now that there are at least official milestone releases for the latest WTP and Eclipse builds, I think I&apos;ll give this a try.&lt;/p&gt;
&lt;p&gt;To be honest, I don&apos;t really care about the app server integration features of WTP, as I prefer to handle deployment and related issues using Ant, outside my IDE. But at least being able to edit JSPs with full support for syntax highlighting, code completion, etc. is a feature that I consider absolutely essential, and this seemed to work very well when I tried it a few weeks ago. Maybe not quite like IntelliJ IDEA, but it&apos;s definitely a huge step in this direction.&lt;/p&gt;
&lt;p&gt;I&apos;ll let you know how it goes.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Linux iTunes Server II</title><link>https://www.digitalhobbit.com/legacy/2005/04/26/linux-itunes-server-ii/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/04/26/linux-itunes-server-ii/</guid><description>I just set my Linux box up as an iTunes server. After seeing how easy it was to get this working (not least because of Gentoo&apos;s excellent package management), I&apos;m almost annoyed at myself for putting this off for so long.</description><pubDate>Tue, 26 Apr 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just set my Linux box up as an iTunes server. After seeing how easy it was to get this working (not least because of Gentoo&apos;s excellent package management), I&apos;m almost annoyed at myself for putting this off for so long. :)&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://gentoo-wiki.com/HOWTO_Apple_ITunes_Server&quot;&gt;HOWTO Apple ITunes Server&lt;/a&gt; document on the Gentoo Wiki was absolutely on the spot and made this very easy, and the entire installation only consisted of a handful of comments plus some very simple config file changes.&lt;/p&gt;
&lt;p&gt;The iTunes server shows up fine on both of my Windows laptops and allows me to access my entire music library (well, at least the part of it that I&apos;ve ripped so far, which already comprises a large chunk of the CDs that I really care about). In combination with my Apple Airport Express, this is a very powerful part of my digital media strategy.&lt;/p&gt;
&lt;p&gt;The sheer power of being able to play virtually any song of my music collection either on my laptop or on the living room stereo with a few mouse clicks (or a quick title search) is almost overwhelming... ;)&lt;/p&gt;
&lt;p&gt;I have yet to try syncing songs to the iPod. If this works, I think I&apos;ve found my perfect solution, as I&apos;m not all that excited about the Linux alternatives to iTunes.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update:&lt;/em&gt; It turns out that syncing songs from the iTunes server to the iPod is not supported. More surprisingly, iTunes does not even support adding songs from the iTunes server to a playlist, which severly reduces the usefulness of this approach. I may have to go back to using Samba to share my music collection. The downside of this approach is that I need to manually update my iTunes library on all computers whenever I add new songs to the server, but at least I get full access to the library, including the ability to create playlists, sync to the iPod, etc.&lt;/p&gt;</content:encoded><category>entertainment</category><category>linux</category><category>technology</category></item><item><title>Another Apple Gadget</title><link>https://www.digitalhobbit.com/legacy/2005/04/16/another-apple-gadget/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/04/16/another-apple-gadget/</guid><description>Today I went to the Apple Store and bought an AirPort Express Base Station. I had been looking for a good way of listening to MP3s in the living room, and after my boss mentioned how we was using an AirPort Express and a set of PC speakers to stream music into his kitchen, I decided to give it a shot.</description><pubDate>Sat, 16 Apr 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I went to the Apple Store and bought an &lt;a href=&quot;http://store.apple.com/1-800-MY-APPLE/WebObjects/AppleStore.woa/72902/wo/VP2mlXLbsCUW2HnLJGmzSABS3il/1.0.11.1.0.6.12&quot;&gt;AirPort Express Base Station&lt;/a&gt;. I had been looking for a good way of listening to MP3s in the living room, and after my boss mentioned how we was using an AirPort Express and a set of PC speakers to stream music into his kitchen, I decided to give it a shot.&lt;/p&gt;
&lt;p&gt;I have to admit that I&apos;m very impressed with this little device. Setting it up on my existing wireless network (using a D-Link DI-624 wireless router and a couple of Windows laptops) was a snap. A few minutes later, I was streaming music from iTunes into my living room stereo. I ran into some slight issues afterwards, as the AirPort Express would happily play music for a minute or two, and then lose its network connection until I would power-cycle it. I&apos;m not sure what exactly fixed it in the end, but after configuring my router to assign the same static IP address (static DHCP) to the AirPort (after having noticed that it had acquired several different IP addresses during my initial attempts), as well as enabling the enhanced interference tolerance (don&apos;t remember what exactly the option was called), things started working perfectly.&lt;/p&gt;
&lt;p&gt;I still need to set up my Linux box as an iTunes server, enabling me to play my entire music collection on the living room stereo from any computer in the house. There are still some problems with my Linux configuration, mostly the way it deals with German umlauts (see my earlier post). Hopefully I&apos;ll be able to figure out a solution to this problem soon. In the mean time, I can still access all my music through a file share. Even better, I can listen to streaming Internet radio in the living room. There are many preconfigured channels within iTunes, but I was happy to discover that &lt;a href=&quot;http://shoutcast.com/index.phtml&quot;&gt;Shoutcast&lt;/a&gt; streams work in iTunes as well, as many of my favorite Industrial / Electronic / Goth channels are in Shoutcast.&lt;/p&gt;
&lt;p&gt;I guess it says something about Apple&apos;s strategy that neither of the first couple of devices I bought (an iPod Photo, an iPod Mini, and now the versatile AirPort Express) were computers. I have a feeling that my next major purchase will be an Apple computer, such as a PowerBook or maybe even a Mac Mini.
They definitely know how to make things that just work...&lt;/p&gt;
&lt;p&gt;I could have just used my Tivo to play MP3s, but that would have meant figuring out how to manually upgrade my hacked Tivo to the latest version, as it is unfortunately stuck with an earlier version of the operating system that no longer supports the home media option. That&apos;s too bad, as there is some interesting Linux software for this as well. Maybe some other time. And because the AirPort Express is so small and easy to use, I can even use it as a portable media player (in conjunction with some PC speakers) in other rooms, when traveling, etc.&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>Podcasting is taking off</title><link>https://www.digitalhobbit.com/legacy/2005/04/05/podcasting-is-taking-off/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/04/05/podcasting-is-taking-off/</guid><description>I have not tried it yet, but according to this article, Podcasting is really taking off and supposedly already reaching 6 million adults in the US. For those of you who are not familiar with this term, here&apos;s the Wikipedia definition for &quot;Podcasting&quot;.</description><pubDate>Tue, 05 Apr 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have not tried it yet, but according to this article, &lt;a href=&quot;http://www.extremeipod.com/article2/0,1759,1781985,00.asp&quot;&gt;Podcasting is really taking off&lt;/a&gt; and supposedly already reaching 6 million adults in the US.&lt;/p&gt;
&lt;p&gt;For those of you who are not familiar with this term, here&apos;s the &lt;a href=&quot;http://en.wikipedia.org/wiki/Podcasting&quot;&gt;Wikipedia definition for &quot;Podcasting&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One of the original Podcasting websites, &lt;a href=&quot;http://www.ipodder.org/&quot;&gt;iPodder.org&lt;/a&gt;, has a huge list of available Podcasts, ranging from different styles of music to audio blogs and all kinds of other topics.&lt;/p&gt;
&lt;p&gt;This could be just the right thing for my 30-minute commute to work every day. I think I&apos;ll start by checking out the &lt;a href=&quot;http://slashdotreview.com/&quot;&gt;Slashdot Review Podcast&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Wordpress Plugin Competition</title><link>https://www.digitalhobbit.com/legacy/2005/04/05/wordpress-plugin-competition/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/04/05/wordpress-plugin-competition/</guid><description>Weblog Tools Collection is organizing a WordPress Plugin and Mod Competition. The competion will start on April 15 and run for two months. If the participation is anything like the recent WordPress Themes Competition, we can be sure to see some excellent plugins coming our way.</description><pubDate>Tue, 05 Apr 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://weblogtoolscollection.com/&quot;&gt;Weblog Tools Collection&lt;/a&gt; is organizing a &lt;a href=&quot;http://weblogtoolscollection.com/archives/2005/04/04/wordpress-plugin-competition/trackback/&quot;&gt;WordPress Plugin and Mod Competition&lt;/a&gt;. The competion will start on April 15 and run for two months.&lt;/p&gt;
&lt;p&gt;If the participation is anything like the recent &lt;a href=&quot;http://www.alexking.org/software/wordpress/themes/blog/&quot;&gt;WordPress Themes Competition&lt;/a&gt;, we can be sure to see some excellent plugins coming our way.&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>Follow-up on Gmail</title><link>https://www.digitalhobbit.com/legacy/2005/03/31/follow-up-on-gmail/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/03/31/follow-up-on-gmail/</guid><description>A little over a week ago, I switched to Gmail, and I&apos;d like to report that I&apos;m very happy with it so far. It is very fast and easy to use, and ideal for accessing the same email account from several different computers (such as my workstation at work, as well as my desktop and my laptop at home). Labels are very nice as well.</description><pubDate>Thu, 31 Mar 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A little over a week ago, I switched to &lt;a href=&quot;http://gmail.google.com&quot;&gt;Gmail&lt;/a&gt;, and I&apos;d like to report that I&apos;m very happy with it so far. It is very fast and easy to use, and ideal for accessing the same email account from several different computers (such as my workstation at work, as well as my desktop and my laptop at home). Labels are very nice as well. They work pretty much like folders, but since Gmail organizes email by conversations, a label will automatically be applied to an incoming email if it represents a follow-up to a previouly labeled conversation, meaning that you can simply hit &quot;Archive&quot; once you&apos;re done reading the email. Also, Gmail does an absolutely astounding job at presenting a conversation and cutting out quoted text, regardless of how exactly the quoting was accomplished.&lt;/p&gt;
&lt;p&gt;Today I noticed a &quot;New Features&quot; link, alerting me to the fact that &lt;a href=&quot;http://gmail.google.com/support/bin/answer.py?answer=8260&quot;&gt;Gmail now supports email with rich formatting&lt;/a&gt; (although this feature is apparently still being rolled out and may not be available to all users). I tried it out, and it works as advertised. Very nice!&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Linux iTunes Server</title><link>https://www.digitalhobbit.com/legacy/2005/03/27/linux-itunes-server/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/03/27/linux-itunes-server/</guid><description>I haven&apos;t tried it yet, but it is possible to set up Linux as an iTunes server, allowing any Windows or Apple machines on the network running iTunes to browse and play any music on that server. This sounds ideal for me, as my music collection lives on my desktop PC that usually runs Linux, while my wife and I often use our wireless laptops.</description><pubDate>Sun, 27 Mar 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I haven&apos;t tried it yet, but it is possible to set up Linux as an iTunes server, allowing any Windows or Apple machines on the network running iTunes to browse and play any music on that server. This sounds ideal for me, as my music collection lives on my desktop PC that usually runs Linux, while my wife and I often use our wireless laptops. This should even allow us to easily sync music to out iPods, albeit over the relatively slow 54Mbps wireless connection (which is why I usually just hook up my iPod to my desktop for this purpose). My alternative solution would have been to simply access my music library using a Samba share, but exposing it as an iTunes server sounds like a much better solution.&lt;/p&gt;
&lt;p&gt;The two main components that are required in order to set this up are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.deleet.de/projekte/daap/daapd/&quot;&gt;daapd&lt;/a&gt;, the server for the &quot;digital audio access protocol&quot; that iTunes uses&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://developer.apple.com/darwin/projects/rendezvous/&quot;&gt;mDNSResponder&lt;/a&gt;, the Apple Rendezvous multicast DNS advertiser&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are the instructions for &lt;a href=&quot;http://gentoo-wiki.com/HOWTO_Apple_ITunes_Server&quot;&gt;setting up an iTunes server on Gentoo Linux&lt;/a&gt;. Sounds pretty straightforward, so this might be my next weekend project.&lt;/p&gt;</content:encoded><category>entertainment</category><category>linux</category><category>technology</category></item><item><title>Slight URL Change</title><link>https://www.digitalhobbit.com/legacy/2005/03/27/slight-url-change/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/03/27/slight-url-change/</guid><description>I moved the blog from the &quot;/blog&quot; context to the webroot (http://www.digitalhobbit.com). Old links should still work. Please leave me a comment in case you run into any issues.</description><pubDate>Sun, 27 Mar 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I moved the blog from the &quot;/blog&quot; context to the webroot (&lt;a href=&quot;/legacy/&quot;&gt;http://www.digitalhobbit.com&lt;/a&gt;). Old links should still work. Please leave me a comment in case you run into any issues.&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>Speaking of The Office...</title><link>https://www.digitalhobbit.com/legacy/2005/03/26/speaking-of-the-office/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/03/26/speaking-of-the-office/</guid><description>Speaking of the original BBC series The Office: In case you haven&apos;t done so yet, you really should check out BBC&apos;s definitive online guide. The website has a wealth of background information such as an episode guide, interviews, wallpaper, a screensaver, video clips (such as David&apos;s infamous dance), the lyrics and chords to Freelove Freeway, a fake and hilarious homepage of Gareth Keenan, and much more.</description><pubDate>Sat, 26 Mar 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Speaking of the original BBC series The Office: In case you haven&apos;t done so yet, you really should check out &lt;a href=&quot;http://www.bbc.co.uk/comedy/theoffice/&quot;&gt;BBC&apos;s definitive online guide&lt;/a&gt;. The website has a wealth of background information such as an episode guide, interviews, wallpaper, a screensaver, video clips (such as &lt;a href=&quot;http://www.bbc.co.uk/comedy/theoffice/clips/brent/dancer.shtml&quot;&gt;David&apos;s infamous dance&lt;/a&gt;), the lyrics and chords to &lt;a href=&quot;http://www.bbc.co.uk/comedy/theoffice/freelove_tablature.shtml&quot;&gt;Freelove Freeway&lt;/a&gt;, a fake and hilarious &lt;a href=&quot;http://www.bbc.co.uk/comedy/theoffice/gareth/&quot;&gt;homepage of Gareth Keenan&lt;/a&gt;, and much more.&lt;/p&gt;</content:encoded><category>entertainment</category><category>movies</category></item><item><title>The Office: BBC vs. NBC</title><link>https://www.digitalhobbit.com/legacy/2005/03/26/the-office-bbc-vs-nbc/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/03/26/the-office-bbc-vs-nbc/</guid><description>Two days ago, the first episode of NBC&apos;s remake of the popular BBC series &apos;The Office&quot; was broadcast. As a fan of the original BBC series, I had a bad feeling about this remake. Yesterday evening, I watched the NBC pilot on my Tivo, and it turns out I was right...</description><pubDate>Sat, 26 Mar 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Two days ago, the first episode of &lt;a href=&quot;http://www.nbc.com/nbc/The_Office/&quot;&gt;NBC&apos;s remake of the popular BBC series &apos;The Office&quot;&lt;/a&gt; was broadcast. As a fan of &lt;a href=&quot;http://www.bbc.co.uk/comedy/theoffice/&quot;&gt;the original BBC series&lt;/a&gt;, I had a bad feeling about this remake. Yesterday evening, I watched the NBC pilot on my Tivo, and it turns out I was right...&lt;/p&gt;
&lt;p&gt;Disappointingly, the story was a direct rip-off of several original The Office episodes, the main difference being that a couple of the more British jokes were translated into their US equivalents. The characters were not necessarily terrible, but nothing like their British counterparts. In particular, Steve Carell&apos;s performance as the boss Michael is unconvincing. I always thought that the original series&apos; boss character David Brent (played by Ricky Gervais) was absolutely brilliant and the unreplaceable centerpiece of the entire show, and watching someone else attempt to play that role definitely proves this. Gervais character came across as eerily realistic, while of course being completely over the top. Michael&apos;s character is over the top as well, but seems more like a typical sitcom character than an actual person, destroying the the whole appeal of the documentary-themed show.&lt;/p&gt;
&lt;p&gt;I might watch a couple more episodes as I&apos;ve heard that the later episodes will have some original content, but I&apos;m not holding my breath... If you haven&apos;t watched the original series, do yourself a favor (maybe I should say &quot;favour&quot; :) ) and buy the &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?tag=digitalhobbit-20&amp;#x26;path=ASIN/B0002W4P98/ref=amb_center-4_198620_2&quot;&gt;DVD collection&lt;/a&gt;. I did a The Office marathon myself about a week ago and am almost ready for another one.&lt;/p&gt;</content:encoded><category>entertainment</category><category>movies</category></item><item><title>Linux, MP3, and international characters</title><link>https://www.digitalhobbit.com/legacy/2005/03/24/linux-mp3-and-international-characters/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/03/24/linux-mp3-and-international-characters/</guid><description>I am currently using both Linux and Windows with my iPod.</description><pubDate>Thu, 24 Mar 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I am currently using both Linux and Windows with my iPod. So far, I have found iTunes to be far superior to any of the Linux applications for syncing songs to my iPod, so I usually dual boot into Windows for this purpose (which isn&apos;t all that often these days, now that I&apos;ve got a fair amount of songs on my iPod to get me started until I&apos;ve had a chance to clean up the ID3 tags for the rest of my MP3 collection and rip my remaining CDs).&lt;/p&gt;
&lt;p&gt;However, I currently mostly run Linux on my desktop, and I&apos;d like to at least be able to rip CDs in the background while I&apos;m doing other stuff. On Windows, I usually use the simple and excellent &lt;a href=&quot;http://cdexos.sourceforge.net/&quot;&gt;CDex&lt;/a&gt; for this purpose, selecting cdparanoia to extract the tracks from CD and the &lt;a href=&quot;http://lame.sourceforge.net/&quot;&gt;LAME&lt;/a&gt; encoder to turn them into MP3 format.&lt;/p&gt;
&lt;p&gt;The closest tool I&apos;ve been able to find for Linux is &lt;a href=&quot;http://nostatic.org/grip/&quot;&gt;Grip&lt;/a&gt;. In typical Linux style, its interface is a little funky, but it has pretty much the same functionality as CDex, including built-in support for cdparanoia, LAME, and CDDB. The configuration is a little clunkier; for example you need to type in the LAME command line parameters to use (I generally use &quot;--preset standard&quot; to encode using good-quality VBR) rather than selecting them from a dropdown. Other than that, it does a great job at ripping CDs, and even though I&apos;m using the same settings for reading CDs as well as for encoding MP3s as under Windows, it actually seems to be a little faster. I wonder if this could be related to the fact that I&apos;m running the AMD64 version of Gentoo Linux, as tasks like encoding are prime examples of applications that actually benefit from the 64 bit processor.&lt;/p&gt;
&lt;p&gt;My only gripe with Grip (and to some extent Linux in general) is the way it handles international characters (i.e. anything outside standard ASCII). For example, I have quite a few German CDs, and many of the song titles contain German umlauts. So far, I have not been able to find a solution that allows me to view the correct titles both in Linux and in Windows, and both in the filesystem as well as in the ID3 tags.&lt;/p&gt;
&lt;p&gt;When I rip tracks using Grip, the filenames by default strip out any German umlauts unless the option to allow high-bit characters (which is off by default) is selected. When I select this option, the umlauts appear in the filename, although only in the Gnome file manager and not in the Gnome terminal... When I look at filenames with umlauts that I ripped in Windows, they don&apos;t show up correctly in Linux either.&lt;/p&gt;
&lt;p&gt;I just realized that this problem may simply be caused by an incorrect translation in the way I mounted the FAT drive that I use to share data between Windows and Linux on my dual boot machine. I&apos;ll try explicitly setting the encoding to UTF-8 to see if this fixes the problem.&lt;/p&gt;
&lt;p&gt;Ultimately, I could probably live with messed up filenames in these cases, as iTunes and the iPod only care about ID3 tags anyway. Unfortunately, Grip messes these up as well. It allows the ID3 tag encoding to be specified for both ID3 v1 and v2 tags, the default being ISO-8859-1. But no matter whether I choose ISO-8859-1 or UTF-8 (both of which should have no problem handling the entire German character set), the umlauts show up as garbage.&lt;/p&gt;
&lt;p&gt;Any suggestions? Leave a comment.&lt;/p&gt;</content:encoded><category>entertainment</category><category>linux</category><category>technology</category></item><item><title>Evolution vs. Thunderbird &amp; Calendar</title><link>https://www.digitalhobbit.com/legacy/2005/03/21/thunderbird-calendar/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/03/21/thunderbird-calendar/</guid><description>After changing my personal emai strategy over the weekend by switching to Gmail, I was motivated to change the way I handle email at work as well. I am currently using Ximian Evolution 1.4 (which has recently become Novell Evolution) on Linux, but I am not quite happy with it. Similar to the way OpenOffice tries (and only superficially succeeds) to emulate Microsoft Office, Evolution emulates Microsoft Outlook.</description><pubDate>Mon, 21 Mar 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After changing my personal emai strategy over the weekend by switching to Gmail, I was motivated to change the way I handle email at work as well. I am currently using Ximian Evolution 1.4 (which has recently become &lt;a href=&quot;http://ximian.com/products/ximian_evolution/&quot;&gt;Novell Evolution&lt;/a&gt;) on Linux, but I am not quite happy with it. Similar to the way OpenOffice tries (and only superficially succeeds) to emulate Microsoft Office, Evolution emulates Microsoft Outlook. I certainly does a decent job, but at least the 1.4 version that I&apos;m currently tied to has quite a few quirks. My main gripe is the calendar functionality, which is severely lacking, particularly when dealing with meetings or recurring appointments. Evolution 2.0 may solve some of these issues, but due to the Evolution&apos;s tight integration into the Gnome desktop, this upgrade would entail upgrading Gnome as well as X, and these upgrades are not officially supported for our Redhat Enterprise 3.0 workstations and therefore not feasible at this point.&lt;/p&gt;
&lt;p&gt;I really like &lt;a href=&quot;http://www.mozilla.org/products/thunderbird/&quot;&gt;Mozilla Thunderbird&lt;/a&gt; as an email (and news) client. Unfortunately, it does not include a calendar feature. The &lt;a href=&quot;http://www.mozilla.org/projects/calendar/&quot;&gt;Calendar extension&lt;/a&gt; (which is the Firefox / Thunderbird plugin version of the standalone &lt;a href=&quot;http://www.mozilla.org/projects/calendar/sunbird.html&quot;&gt;Mozilla Sunbird&lt;/a&gt; project) attempts to fill this void, so I decided to give this a shot today. However, I was not able to get it working in a satisfactory manner. The calendar is not properly integrated into Thunderbird, but shows up as a separate window. I was unable to open appointments (i.e. iCal attachments sent via Evolution) in Thunderbird. The only way I was able to view an appointment and enter it on my calendar was by manually saving the attachment and then explicitly importing the appointment using the calendar. This is obviously much too tedious and not feasible. I was also unable to accept a meeting request and notify the meeting&apos;s originator by email. This is too bad, particularly since the standalone calendar application itself looks pretty promising.&lt;/p&gt;
&lt;p&gt;To be fair, the calendar extension (as well as Sunbird) is only at version 0.2. It will certainly be worth keeping an eye on this, as Thunderbird + Calendar could be a very good alternative to Evolution once this integration works properly. Until then, I guess I&apos;ll keep using my old version of Evolution.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Email Strategy</title><link>https://www.digitalhobbit.com/legacy/2005/03/20/email-too-many-options/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/03/20/email-too-many-options/</guid><description>I&apos;ve been thinking about a better email strategy. About 8 years or so ago, when I was still using my university&apos;s email account, I signed up for a forwarding address from Bigfoot (which at the time was still free and without any limitations). This allowed me to keep using the same email address until now, even though the actual mailbox that it was pointing to changed numerous times when I switched ISPs, domains, etc. Bigfoot introduced their own webmail service later, which provided a decent way for me to check my personal email at work, for example. However, there are several problems with this approach:</description><pubDate>Sun, 20 Mar 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been thinking about a better email strategy. About 8 years or so ago, when I was still using my university&apos;s email account, I signed up for a forwarding address from Bigfoot (which at the time was still free and without any limitations). This allowed me to keep using the same email address until now, even though the actual mailbox that it was pointing to changed numerous times when I switched ISPs, domains, etc. Bigfoot introduced their own webmail service later, which provided a decent way for me to check my personal email at work, for example.&lt;/p&gt;
&lt;p&gt;However, there are several problems with this approach:&lt;/p&gt;
&lt;!--more--&gt;
&lt;ol&gt;
&lt;li&gt;The way Bigfoot works, all incoming emails are forwarded both to my Bigfoot webmail as well as to my ISP&apos;s mailbox. This means that I essentially have to go through all my email twice, once on webmail (usually while I&apos;m on work), and once again at home, when I download my email from my ISP&apos;s mailbox using POP3 and my email client, at which point I also file it in folders, etc.&lt;/li&gt;
&lt;li&gt;I have had this email address for around 8 years now, and particularly in the early years, when (believe it or not) spam wasn&apos;t a big problem yet, I used it pretty liberally when posting in Usenet newsgroups or on public forums, when signing up for various accounts, ordering things online, etc. Because of this, I receive a tremendous amount of spam (on the order of 100 emails a day). Granted, much of this is caught by Bigfoot&apos;s anti-spam solution and never even forwarded to my POP3 mailbox, but unfortunately there are quite a lot of false positives, and about half of the actual spam emails are not caught... Suffice to say, I finally need to get rid of this email address.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There are obviously many different solutions. In fact, there are so many completely different solutions that it makes it hard to decide which one to employ. Here are my criteria:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I would like to have constant and consistent access to my email (both new and archived, and sent as well as received) from wherever I am (home laptop, home desktop, work, traveling, etc.)&lt;/li&gt;
&lt;li&gt;I only want to manage (file, delete, etc.) my email once, not twice as I currently have to (Bigfoot webmail plus POP3 mailbox).&lt;/li&gt;
&lt;li&gt;I want to be able to change my email service any time, without having to notify all my contacts of a new email address.&lt;/li&gt;
&lt;li&gt;I want to minimize spam, while avoiding false positives. Ideally, I&apos;d like to be able to use several email aliases that all forward to the same mailbox, which would allow me to for example use one or more aliases when signing up for any services that might attract spam (such as when placing orders online or posting to mailing lists with publicly accessible archives), while using a more stable alias for my personal email. If I end up getting too much spam from one of the extra aliases, I can simply turn it off without fear of losing any actually important email.&lt;/li&gt;
&lt;li&gt;I want to be able to back up all my email.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At this point, I am mainly considering two solutions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;IMAP&lt;/b&gt;
&lt;p&gt;My current hosting provider (as well as most providers these days, I assume) supports IMAP as well as POP3. In addition, I finally have more than enough space on the filesystem for my domain, which would allow me to easily store a few hundred MB of email on the server. This way, I could access my new as well as my archived emails from home or from work using whichever email client I prefer (I currently use Outlook at home on my Windows laptop, and Evolution at work on my Linux workstation, although I am considering switching to &lt;a href=&quot;http://www.mozilla.org/products/thunderbird/&quot;&gt;Mozilla Thunderbird&lt;/a&gt; for both environments). When travelling, I would still be able to acces my mail using my provider&apos;s webmail service (they use &lt;a href=&quot;http://www.squirrelmail.org/&quot;&gt;SquirrelMail&lt;/a&gt;, which, while not necessarily fancy, fulfills its purpose well). Backups could presumably handled using the IMAP client software, although I could probably just back up the entire mailbox from the server using FTP. I would be able to set up as many aliases as I need and have all of them point to the same physical mailbox.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://gmail.google.com&quot;&gt;Google Gmail&lt;/a&gt;&lt;/b&gt;
&lt;p&gt;I received an invite to Gmail about 5 months ago, but I haven&apos;t really used it so far, mostly, because I wasn&apos;t sure how to fit it into my email strategy, as I already had a Yahoo webmail account in addition to my POP3 mailboxes and my Bigfoot forwarding address. Yet another email service seemed like the last thing I needed...&lt;/p&gt;
&lt;p&gt;However, at this point I think that Gmail would be an excellent solution. It is fast, intuitive, has many great features (such the excellent search functionality, which I can only assume is a lot better and faster than what Microsoft has built into Outlook), comes with ample storage (1GB), has a clean and lean UI (in typical  Google style), an excellent anti-spam solution, and much more. As of recently, Gmail also supports email forwarding as well as POP3 access, both of which make a big difference in convincing me to give it a try (forwarding means that I could decide to no longer use Gmail and simply forward all emails that might still be using this address to my new email service, while POP3 would allow me to download all emails to an email client should I be so inclined). Google also has some features that are beyond the capabilities of most mail clients, such as displaying a threaded view of email conversations. Another interesting feature is Gmail&apos;s use of labels instead of the typical email folders. They might take some getting used to, but I have a feeling that they, combined with Google&apos;s strong search functionality, would work very well.&lt;/p&gt;
&lt;p&gt;About the only downside I can see at this point is the fact that backups would be a lot harder to accomplish. Sure, I could just download all emails using POP3, but that way I would lose all label classifications, which means that I&apos;d end up with a big folder containing thousands of emails that I&apos;d have to manually file into folders... I&apos;ll have to do some research to find out if anybody has built a tool that downloads emails from Gmail and maintains their labels, possibly even filing them into corresponding folders. Given that people have gone so far as to build Linux filesystems on top of Gmail, I would not be surprised if such a tool already exists.&lt;/p&gt;
&lt;p&gt;Of course, I could still combine this with the same alias approach as above and have several &lt;em&gt;digitalhobbit.com&lt;/em&gt; email addresses that all forward to my Gmail account. Gmail does not allow changing the From address, but at least I can change the Reply-To address to point to my &lt;em&gt;digitalhobbit.com&lt;/em&gt; forwarding address.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It&apos;s a tough call. I know that the first approach would work fine and provide the ultimate level of control, but somehow the second approach seems sexier. :)&lt;/p&gt;
&lt;p&gt;I think I&apos;ll give Gmail a try for a couple of months. I&apos;ll let you know how it goes...&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>New Host</title><link>https://www.digitalhobbit.com/legacy/2005/03/20/new-host/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/03/20/new-host/</guid><description>I just successfully switched hosting providers. Looks like everything&apos;s up again and running happily on the new host.</description><pubDate>Sun, 20 Mar 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just successfully switched hosting providers. Looks like everything&apos;s up again and running happily on the new host.&lt;/p&gt;</content:encoded></item><item><title>Upgraded to WordPress 1.5</title><link>https://www.digitalhobbit.com/legacy/2005/03/18/upgraded-to-wordpress-15/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/03/18/upgraded-to-wordpress-15/</guid><description>I just upgraded my blog from WordPress 1.2 to 1.5. As expected, the actual upgrade was very smooth, and it really didn&apos;t take longer than a few minutes. In the next few days, I&apos;ll need to play with WordPress&apos;s new theme mechanism to customize the design of my blog.</description><pubDate>Fri, 18 Mar 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just upgraded my blog from WordPress 1.2 to 1.5. As expected, the actual upgrade was very smooth, and it really didn&apos;t take longer than a few minutes.&lt;/p&gt;
&lt;p&gt;In the next few days, I&apos;ll need to play with WordPress&apos;s new theme mechanism to customize the design of my blog. I tried a bunch of themes (there are a lot of 1.5-compatible themes already, many of them very nice), but none of them were usable without at least a little bit of tweaking (for example to insert my logo at the right place, customize colors to match, etc.).&lt;/p&gt;
&lt;p&gt;So for now, I&apos;m sticking with the default design (which is quite elegant but looks like about 100,000 other blogs out there...).&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>iPod: first impressions</title><link>https://www.digitalhobbit.com/legacy/2005/03/05/ipod-first-impressions/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/03/05/ipod-first-impressions/</guid><description>I received my iPod on Wednesday and wanted to briefly share my first impressions (mind you, I have only used it for about 2 days now, and I haven&apos;t really had a chance to load it up yet). The iPod is a very nice gadget. It is extremely well made and has a very intuitive user interface.</description><pubDate>Sat, 05 Mar 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I received my iPod on Wednesday and wanted to briefly share my first impressions (mind you, I have only used it for about 2 days now, and I haven&apos;t really had a chance to load it up yet).&lt;/p&gt;
&lt;p&gt;The iPod is a very nice gadget. It is extremely well made and has a very intuitive user interface. My 60GB version should have enough space to store my entire mp3 collection, as well as the remaining CDs that I haven&apos;t had a chance to rip to mp3 yet. The main challenge with this huge amount of data is how easy it is to access it from the iPod.&lt;/p&gt;
&lt;p&gt;Both the iPod and iTunes rely heavily on ID3 tags. In theory, this is very nice, as it means that we&apos;re not constrained by file names and folder hierarchies. On the down side, this works only when all mp3s have proper ID3 tags and causes annoying side effects when this isn&apos;t the case (which is unfortunately the case for many of my mp3s). For example, my mp3 file names are normally prefixed with the track number, ensuring that they always get displayed in the proper order in the filesystem, as well as by most mp3 applications (e.g. Winamp). The iPod seems to rely purely on the track number in the ID3 tag. When this doesn&apos;t exist, it resorts to sorting the tracks alphabetically by title, rather than by file name (in fact, once a song is uploaded to the iPod, it no longer has a notion of file name), resulting in a random (for all intents and purposes) order that bears no resemblence to the proper order.&lt;/p&gt;
&lt;p&gt;This is probably my biggest gripe so far, although there are some related problems. Songs from the same album are only properly grouped together when all songs have the correct ID3 album tag. If even one of the album names contains a typo, the iPod considers it a different album and both show up in the album list, each containing only those songs with matching album ID3 tags.&lt;/p&gt;
&lt;p&gt;Ultimately, I believe that this approach will end up working well for me. In the mean time, I guess I have to bite the bullet and clean up my mp3 collection. Luckily, there are several promising ID3 tag management applications (both for Windows and Linux) as well as services (such as &lt;a href=&quot;http://www.freedb.org&quot;&gt;freedb&lt;/a&gt; and &lt;a href=&quot;http://www.musicbrainz.org&quot;&gt;MusicBrainz&lt;/a&gt;) that provide metadata for music and even (in case of MusicBrainz, although I haven&apos;t tried it yet) claim to be able to automatically identify a song based on a signature that is calculated from the mp3.&lt;/p&gt;
&lt;p&gt;On the positive side: As I went with the 60GB version, I am planning on simply syncing my entire music collection to the iPod (rather than picking individual albums and songs), which should make it really easy to simply re-sync everything whenever I&apos;ve made significant updates to the ID3 tags. Until then, I guess I can live with a little bit of chaos in my music collection.&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>iPod</title><link>https://www.digitalhobbit.com/legacy/2005/03/01/ipod/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/03/01/ipod/</guid><description>I finally gave in and bought an iPod, kind of as a belated birthday present to myself... Most of my colleagues have one, and I guess I was feeling left out. :) I think my timing was pretty good, as Apple just restructured the pricing for their numerous iPod models.</description><pubDate>Tue, 01 Mar 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I finally gave in and bought an iPod, kind of as a belated birthday present to myself... Most of my colleagues have one, and I guess I was feeling left out. :)&lt;/p&gt;
&lt;p&gt;I think my timing was pretty good, as Apple just restructured the pricing for their numerous iPod models. In particular, the regular 40GB model that I probably would have bought if I had bought my iPod a few weeks ago, has been phased out and replaced with the 30GB and 60GB iPod Photo models. Of course, I couldn&apos;t resist the temptation and decided to go for the 60GB iPod Photo (which at $449 costs only another $50 more than the now obsolete 40GB regular iPod). If you&apos;re thinking of buying an iPod anytime soon, do yourself a favor and get the iPod photo from buy.com in the next week or so, as they still sell the version that includes the accessories (dock, firewire cable, etc.) that Apple no longer includes with the new models. The actual iPod is the same as the previous model (the iPod photo only came out fairly recently), so you get the same improved battery life, etc.&lt;/p&gt;
&lt;p&gt;At this opportunity, I also went ahead and bought a 6GB iPod Mini for my wife. She does not listen to as much music as myself, and therefore should benefit more from the extremely small and convenient size of the Mini than the sheer capacity of the regular iPod or iPod photo.&lt;/p&gt;
&lt;p&gt;According to pretty much everybody else I know who has an iPod, this is how it starts, and we should expect to turn into Apple fanatics very soon... I certainly wouldn&apos;t mind to have a nice PowerBook instead of my WIntel laptop...&lt;/p&gt;
&lt;p&gt;In the mean time, I need to track down some good software for managing my iPod (which is due to arrive tomorrow) under Linux. It&apos;s too bad that there&apos;s no Linux version of iTunes, but it looks like there are some decent alternatives. In any case, I don&apos;t expect to do a whole lot of syncing once I&apos;ve loaded up my 60GB iPod. :)&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>Sorry, Texas</title><link>https://www.digitalhobbit.com/legacy/2005/02/23/sorry-texas/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/02/23/sorry-texas/</guid><description>While I&apos;ve been pretty successful in suppressing comment spam, I still seem to have some trouble with trackback spam. I believe there are some decent WordPress solutions out there now, but I haven&apos;t really had a chance to play with them.</description><pubDate>Wed, 23 Feb 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While I&apos;ve been pretty successful in suppressing comment spam, I still seem to have some trouble with trackback spam. I believe there are some decent WordPress solutions out there now, but I haven&apos;t really had a chance to play with them.&lt;/p&gt;
&lt;p&gt;In the mean time, I decided to start filtering out all comments that contain the word &lt;em&gt;Texas&lt;/em&gt;, as I&apos;ve been getting a lot of spam for &lt;em&gt;Texas Poker&lt;/em&gt; and &lt;em&gt;Texas Hold&apos;em&lt;/em&gt;, and for some reason Wordpress (at least my version) seems to be unable to recognize the word &lt;em&gt;hold&apos;em&lt;/em&gt; as a spam word... If you&apos;re from Texas or need to comment on Texas for one reason or another, I apologize in advance. :)&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>Virus Attack</title><link>https://www.digitalhobbit.com/legacy/2005/02/22/virus-attack/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/02/22/virus-attack/</guid><description>Argh... My wife caught a virus on her laptop. It looks like it came in using some IE exploit, and the fact that the latest Windows security updates were not installed probably didn&apos;t help... I&apos;ve installed a better virus scanner and hope that I can still fix everything without having to reinstall Windows.</description><pubDate>Tue, 22 Feb 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Argh... My wife caught a virus on her laptop. It looks like it came in using some IE exploit, and the fact that the latest Windows security updates were not installed probably didn&apos;t help...&lt;/p&gt;
&lt;p&gt;I&apos;ve installed a better virus scanner and hope that I can still fix everything without having to reinstall Windows. If everything goes well, I&apos;ll immediately install Firefox and have my wife switch from IE to this instead.&lt;/p&gt;</content:encoded><category>software</category></item><item><title>Xbox Live Nerds</title><link>https://www.digitalhobbit.com/legacy/2005/02/22/xbox-live-nerds/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/02/22/xbox-live-nerds/</guid><description>When I upgraded my SBC / Yahoo DSL service a while ago, I received a free Xbox Live Starter Kit, including a one-year subscription. I finally signed up for the Xbox Live service last week. Overall, I have to admit that Xbox Live is pretty neat. Signing into the service is very easy from any game I&apos;ve tried.</description><pubDate>Tue, 22 Feb 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I upgraded my SBC / Yahoo DSL service a while ago, I received a free &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?tag=digitalhobbit-20&amp;#x26;path=ASIN/B000209V8K/qid%3D1109136263/sr%3D11-1/ref%3Dsr%5F11%5F1/&quot;&gt;Xbox Live Starter Kit&lt;/a&gt;, including a one-year subscription. I finally signed up for the Xbox Live service last week.&lt;/p&gt;
&lt;p&gt;Overall, I have to admit that Xbox Live is pretty neat. Signing into the service is very easy from any game I&apos;ve tried. Once signed in, many games (such as &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?tag=digitalhobbit-20&amp;#x26;path=ASIN/B00006LELH/qid%3D1109136358/sr%3D11-1/ref%3Dsr%5F11%5F1/&quot;&gt;MechAssault&lt;/a&gt;) offer downloadable content such as new maps, new mechs (in this case), etc. Finding and joining an appropriate Xbox Live game session is easy using the Quickmatch and Optimatch features, and very similar to the experience of multiplayer games on the PC.&lt;/p&gt;
&lt;p&gt;The included headset, while fairly basic, also manages to fulfill its job and definitely has the potential of adding to the experience. The only annoying thing is that most online games appear to be populated by demented nerds, who keep swearing about how other players are cheating whenever they get killed, etc. This gets old after a while...&lt;/p&gt;
&lt;p&gt;I suppose finding a good server to play on is kind of hit and miss, but overall I think that Xbox Live is a pretty nice feature.&lt;/p&gt;
&lt;p&gt;Of course, the experience still depends on the actual games. For example, while the Xbox Live nicely solves the multiplayer aspect of first person shooters, I still feel that this type of game is much more playable on a PC using mouse and keyboard. Other games (MechWarrior 1 and 2 are good examples)  are surprisingly playable on the console.&lt;/p&gt;</content:encoded><category>games</category></item><item><title>Amazon Prime</title><link>https://www.digitalhobbit.com/legacy/2005/02/19/amazon-prime/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/02/19/amazon-prime/</guid><description>When I went to Amazon a few minutes ago, I was presented with a memo from Jeff Bezos, introducing the new Amazon Prime service. This sounds like an excellent idea, and certainly one that I&apos;m bound to benefit from. Amazon Prime requires a yearly membership fee of $79, for which you get free second day shipping on most items. You can also upgrade to overnight shipping for $3.99 per item.</description><pubDate>Sat, 19 Feb 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I went to Amazon a few minutes ago, I was presented with a memo from Jeff Bezos, introducing the new &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?tag=digitalhobbit-20&amp;#x26;path=http://www.amazon.com/gp/subs/primeclub/signup/main.html/ref=amb_promo_183711_2/&quot;&gt;Amazon Prime&lt;/a&gt; service.  This sounds like an excellent idea, and certainly one that I&apos;m bound to benefit from. Amazon Prime requires a yearly membership fee of $79, for which you get free second day shipping on most items. You can also upgrade to overnight shipping for $3.99 per item. We order from Amazon all the time and definitely spend more on shipping than $79, even though we often take advantage of the free (but slow...) super saver shipping.&lt;/p&gt;
&lt;p&gt;Almost sounds like the good old dot-com days, when stores like Outpost.com were offering free overnight shipping (and Kozmo.com offered free 30-minute delivery for something as cheap as a box of Altoids, but that&apos;s a different story...).&lt;/p&gt;
&lt;p&gt;Sign me up!&lt;/p&gt;</content:encoded><category>commerce</category></item><item><title>Gentoo / AMD64 / Bluetooth</title><link>https://www.digitalhobbit.com/legacy/2005/02/03/gentoo-amd64-bluetooth/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/02/03/gentoo-amd64-bluetooth/</guid><description>After a bit of fiddling with masked ebuilds, I finally managed to get Bluetooth working with Gnome on my AMD64-based Gentoo system.</description><pubDate>Thu, 03 Feb 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After a bit of fiddling with masked ebuilds, I finally managed to get Bluetooth working with Gnome on my AMD64-based Gentoo system. In case you&apos;re running into similar AMD64-related issues, please check out the following bugs I submitted to the &lt;a href=&quot;http://bugs.gentoo.org&quot;&gt;Gentoo bug tracker&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://bugs.gentoo.org/show_bug.cgi?id=80670&quot;&gt;80670&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bugs.gentoo.org/show_bug.cgi?id=80671&quot;&gt;80671&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bugs.gentoo.org/show_bug.cgi?id=80672&quot;&gt;80672&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
(Hey, I got three sequential bug numbers) :)
&lt;p&gt;The following bug is also relevant:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://bugs.gentoo.org/show_bug.cgi?id=80400&quot;&gt;80400&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;a href=&quot;http://gentoo-wiki.com/HOWTO_mobile_phone,_Bluetooth_and_GNOME&quot;&gt;HOWTO mobile phone, Bluetooth and GNOME&lt;/a&gt; Wiki page is also helpful. Note however that this is somewhat outdated. For example, the bluez-sdp package is deprecated and should no longer be used, as its functionality has been rolled into the other bluez packages.&lt;/p&gt;
&lt;p&gt;After setting everything up, I was able to connect to my new Motorola V551 phone and transfer several files and J2ME applications from Gnome / Nautilus.&lt;/p&gt;
&lt;p&gt;Leave a comment if you need further help.&lt;/p&gt;</content:encoded><category>linux</category><category>technology</category><category>mobile</category></item><item><title>3D Fractals</title><link>https://www.digitalhobbit.com/legacy/2005/02/02/3d-fractals/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/02/02/3d-fractals/</guid><description>While browsing Gentoo Portage for some Bluetooth ebuilds, I came across an ebuild for quat, a &quot;3D quaternionic fractal generator&quot;. I had never heard of 3D fractals, let alone quaternionic fractals, so I checked out the website, and it looks pretty interesting. Here and here are some nice examples of what 3D fractals look like. If you&apos;re interested in computer graphics, these are worth checking out.</description><pubDate>Wed, 02 Feb 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While browsing &lt;a href=&quot;http://gentoo-portage.com/&quot;&gt;Gentoo Portage&lt;/a&gt; for some Bluetooth ebuilds, I came across an ebuild for &lt;a href=&quot;http://www.physcip.uni-stuttgart.de/phy11733/quat_e.html&quot;&gt;quat&lt;/a&gt;, a &quot;3D quaternionic fractal generator&quot;. I had never heard of 3D fractals, let alone quaternionic fractals, so I checked out the website, and it looks pretty interesting.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.physcip.uni-stuttgart.de/phy11733/qaf_foyer_e.html&quot;&gt;Here&lt;/a&gt; and &lt;a href=&quot;http://www.physcip.uni-stuttgart.de/phy11733/gallery.html&quot;&gt;here&lt;/a&gt; are some nice examples of what 3D fractals look like. If you&apos;re interested in computer graphics, these are worth checking out.&lt;/p&gt;</content:encoded><category>software</category></item><item><title>Spring Framework</title><link>https://www.digitalhobbit.com/legacy/2005/01/31/spring-frameworks/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/01/31/spring-frameworks/</guid><description>I&apos;ve been reading up a little on the Spring Framework, which seems very impressive. It can be used in several tiers of a typical web application, and depending on where it is used it either cooperates or competes with other established frameworks. For example, Spring comes with its own MVC imlementation that competes with Apache Struts and addresses several of Struts&apos; shortcomings.</description><pubDate>Mon, 31 Jan 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been reading up a little on the &lt;a href=&quot;http://www.springframework.org/&quot;&gt;Spring Framework&lt;/a&gt;, which seems very impressive. It can be used in several tiers of a typical web application, and depending on where it is used it either cooperates or competes with other established frameworks. For example, Spring comes with its own MVC imlementation that competes with &lt;a href=&quot;http://struts.apache.org/&quot;&gt;Apache Struts&lt;/a&gt; and addresses several of Struts&apos; shortcomings. On the other hand, Spring&apos;s container framework can be used to build a business tier in conjunction with another front-end technology, such as Struts (for example as an alternative to more heavyweight J2EE solutions such as EJB).&lt;/p&gt;
&lt;p&gt;For a new application, it seems like it would definitely be worth checking out Spring as an alternative to Struts and other frameworks, as it appears to offer a nice balance between full-featuredness and ease of use.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Subversion on Gentoo</title><link>https://www.digitalhobbit.com/legacy/2005/01/26/subversion-on-gentoo/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/01/26/subversion-on-gentoo/</guid><description>I just moved the Subversion repository that I created on my Windows box some time ago over to my Gentoo box (actually the same box, just a different dual-boot OS, now that I&apos;m phasing out Windows in favor of Gentoo Linux).</description><pubDate>Wed, 26 Jan 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just moved the &lt;a href=&quot;http://subversion.tigris.org/&quot;&gt;Subversion&lt;/a&gt; repository that I created on my Windows box some time ago over to my Gentoo box (actually the same box, just a different dual-boot OS, now that I&apos;m phasing out Windows in favor of Gentoo Linux). This was a very smooth operation, and I&apos;m pretty impressed with the way Gentoo&apos;s Apache configuration already accounts for Subversion (which is generally exposed as a WebDAV repository using an extension of the Apache mod_dav module). The configuration file to integrate Subversion with Apache already exists in the &quot;/etc/apache2/conf/modules.d/&quot; folder and only needs to be slightly adjusted according to the desired location of the Subversion repository.&lt;/p&gt;
&lt;p&gt;There&apos;s also a very helpful &lt;a href=&quot;http://gentoo-wiki.com/HOWTO_Subversion&quot;&gt;Gentoo / Subversion HOWTO&lt;/a&gt; on the Gentoo Wiki.&lt;/p&gt;
&lt;p&gt;Now whether I actually end up using my Subversion repository for any projects is a different question... I tend to start new hobby projects every once in a while, but I rarely end up completing these... :)&lt;/p&gt;</content:encoded><category>development</category><category>linux</category><category>technology</category></item><item><title>Debugging via Google</title><link>https://www.digitalhobbit.com/legacy/2005/01/19/debugging-via-google/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/01/19/debugging-via-google/</guid><description>I just had a funny debugging experience. I had added a new Ant target with a Java task, but when I tried to execute it Ant complained with the following error message: The &lt;java&gt; type doesn&apos;t support the &quot;classame&quot; attribute As I didn&apos;t see anything obvious, I did what I often do in those cases: I copied and pasted the error message into Google.</description><pubDate>Wed, 19 Jan 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just had a funny debugging experience. I had added a new Ant target with a Java task, but when I tried to execute it Ant complained with the following error message:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The &amp;#x3C;java&gt; type doesn&apos;t support the &quot;classame&quot; attribute&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As I didn&apos;t see anything obvious, I did what I often do in those cases: I copied and pasted the error message into Google. This time there were no search results, but Google responded with a helpful message nonetheless:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Did you mean: The &amp;#x3C;java&gt; type doesn&apos;t support this &quot;classname&quot; attribute&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I struggled to see the difference between what I had typed in and what Google suggested and finally realized that I had accidentally omitted an &quot;n&quot;  in the &quot;classname&quot; attribute.&lt;/p&gt;
&lt;p&gt;Go Google! :)&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Updated ATI Linux Drivers</title><link>https://www.digitalhobbit.com/legacy/2005/01/17/updated-ati-linux-drivers/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/01/17/updated-ati-linux-drivers/</guid><description>Since I installed Gentoo Linux a few weeks ago, I have made it a habit to check the ATI website almost every day to see if a new driver has been released that supports my AMD64 processor as well as the XOrg (instead of XFree) server. The default driver works fine in 2D, but it does not support 3D acceleration. Today, my search was finally rewarded.</description><pubDate>Mon, 17 Jan 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Since I installed Gentoo Linux a few weeks ago, I have made it a habit to check the ATI website almost every day to see if a new driver has been released that supports my AMD64 processor as well as the XOrg (instead of XFree) server. The default driver works fine in 2D, but it does not support 3D acceleration.&lt;/p&gt;
&lt;p&gt;Today, my search was finally rewarded. &lt;a href=&quot;http://ati.com/support/drivers/linux/radeon-linux64.html?type=64linux&amp;#x26;prodType=graphic&amp;#x26;prod=products64LINUXdriver&amp;#x26;submit.x=2&amp;#x26;submit.y=8&amp;#x26;submit=GO%21&quot;&gt;Here is the updated ATI driver&lt;/a&gt;. Of course, there are a few &lt;a href=&quot;http://www2.ati.com/drivers/linux/linux_8.8.25.htm#174111&quot;&gt;known issues&lt;/a&gt;, so I should probably surf around and read the initial success / failure reports before attempting to install the driver myself. Also, the new driver has not made it into the Portage tree yet, so I guess I&apos;ll have to install it manually.&lt;/p&gt;</content:encoded><category>linux</category><category>technology</category></item><item><title>Gentoo for All the Unusual Reasons</title><link>https://www.digitalhobbit.com/legacy/2005/01/16/gentoo-for-all-the-unusual-reasons/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/01/16/gentoo-for-all-the-unusual-reasons/</guid><description>Here is a Great article on Gentoo Linux. It includes a lot of information about Gentoo&apos;s package management system, including an overview of how to build your own or customize existing ebuild files. It also has some very interesting points on how a corporate environment could benefit from Gentoo, which is different from the usual preconception about Gentoo being better suited as a desktop OS.</description><pubDate>Sun, 16 Jan 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here is a &lt;a href=&quot;http://www.linuxjournal.com/article/7438?from=0&amp;#x26;comments_per_page=50&quot;&gt;Great article on Gentoo Linux&lt;/a&gt;. It includes a lot of information about Gentoo&apos;s package management system, including an overview of how to build your own or customize existing ebuild files. It also has some very interesting points on how a corporate environment could benefit from Gentoo, which is different from the usual preconception about Gentoo being better suited as a desktop OS.&lt;/p&gt;
&lt;p&gt;Of course most of the comments by other users on that page degrade into the usual Linux distro flame wars, but there are some interesting ones. In particular, one comment pointed me to &lt;a href=&quot;http://desktop.vidalinux.com/index.php?option=com_frontpage&amp;#x26;Itemid=1&quot;&gt;Vidalinux&lt;/a&gt;, which I had not previously heard of. It is based on Gentoo and sounds like this is essentially Gentoo Linux wrapped with Redhat&apos;s Anaconda installer and a bunch of standard desktop applications. Not a bad idea, as Gentoo&apos;s somewhat daunting installation process is certain to scare many users who could otherwise benefit from the many nice aspects of this distribution.&lt;/p&gt;</content:encoded><category>linux</category><category>technology</category></item><item><title>Axis / Web Services</title><link>https://www.digitalhobbit.com/legacy/2005/01/13/axis-web-services/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/01/13/axis-web-services/</guid><description>I finally got an opportunity to work with web services. I had of course read about these in the past and in fact implemented web service like applications prior to the emergence of SOAP, but I had never really had a chance to actually work with web services on a project.</description><pubDate>Thu, 13 Jan 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I finally got an opportunity to work with web services. I had of course read about these in the past and in fact implemented web service like applications prior to the emergence of &lt;a href=&quot;http://www.w3.org/TR/soap/&quot;&gt;SOAP&lt;/a&gt;, but I had never really had a chance to actually work with web services on a project. On my current project, I am using &lt;a href=&quot;http://ws.apache.org/axis/&quot;&gt;Apache Axis&lt;/a&gt; to expose some of our functionality to third parties, a prime example of what web serices are good for. Axis makes it very easy to expose existing Java classes through a web service, as well as (although we are not currently using this functionality) access an arbitrary web service through a set of automatically generated proxy classes, based on the service&apos;s &lt;a href=&quot;http://www.w3.org/TR/wsdl&quot;&gt;WSDL&lt;/a&gt;. Still, I had to at first catch up on WSDL and SOAP in order to define a clean web service that will (hopefully) work with most SOAP / web service client implementations.&lt;/p&gt;
&lt;p&gt;One of the main things I was not aware of is the fact that there are several styles of WSDL. Mainly, there&apos;s the traditional RPC-encoded style, the newer document-literal style, and the wrapped variant of the latter. I am not going to explain the differences here, but this article helped me understand &lt;a href=&quot;http://www-106.ibm.com/developerworks/webservices/library/ws-whichwsdl/&quot;&gt;the pros and cons of the various WSDL styles&lt;/a&gt;. In the end, I decided to go with the document-literal wrapped style, which should work well for our purposes and seems to be the direction in which WSDL and SOAP are evolving. It allows us to fully define the input and output parameters of our web service using XML Schema notation embedded within the WSDL file, while allowing for an RPC-style invokation mechanism.&lt;/p&gt;
&lt;p&gt;So far, I have been able to easily access our web service using the client stub that Axis was able to generate from our WSDL, as well as using very simple, low-level SOAP code using the &lt;a href=&quot;http://java.sun.com/xml/saaj/index.jsp&quot;&gt;SAAJ (Soap with Attachments API for Java)&lt;/a&gt;, for which Axis also provides an implementation. Based on what I have read, it should be straightforward to access the same service using .NET or other web service clients.&lt;/p&gt;
&lt;p&gt;I originally used Axis to generate the WSDL file based on a Java interface that I had written for this purpose, but I ended up customizing the WSDL to come up with a nicer XML Schema for input and output types. Based on various sources on the web, the recommended way to implement a web service using Axis seems to be to use some kind of tool to generate the WSDL file, and then use Axis to auto-generate the necessary glue (the actual web service, marshalling / unmarshalling code, etc.).&lt;/p&gt;
&lt;p&gt;Another invaluable tool that Axis provides is a simple TCP monitor. This essentially acts as a proxy that sits between the web service client and the actual service and that provides a nice UI to inspect SOAP requests and responses. Very nice for debugging a service.&lt;/p&gt;
&lt;p&gt;Definitely fun to work with.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>VNV Nation and Coder23</title><link>https://www.digitalhobbit.com/legacy/2005/01/08/vnv-nation-and-coder23/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/01/08/vnv-nation-and-coder23/</guid><description>I saw VNV Nation in San Francisco yesterday, and I have to say that it was a great show - especially considering that apart from the live vocals and a little bit of live drumming, which was more for show than for actual percussion, there was no live music to speak of.</description><pubDate>Sat, 08 Jan 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I saw &lt;a href=&quot;http://www.vnvnation.com/&quot;&gt;VNV Nation&lt;/a&gt; in San Francisco yesterday, and I have to say that it was a great show - especially considering that apart from the live vocals and a little bit of live drumming, which was more for show than for actual percussion, there was no live music to speak of. Still, the two band members vere very charismatic, and particularly the singer put on a great show and really managed to engage the crowd. In fact, he seemed more like a stand up comedian than a singer. Humour is rare enough in the electro / industrial scene, so this was very refreshing.&lt;/p&gt;
&lt;p&gt;The other act was &lt;a href=&quot;http://www.deejaybooking.com/dj.php?id=145&quot;&gt;Coder23&lt;/a&gt;, a Live DJ side project from two of the &lt;a href=&quot;http://www.front242.com&quot;&gt;Front 242&lt;/a&gt; guys. I am still not sure exactly what they did on their two Apple laptops, but the result wasn&apos;t too bad, if a little too close to Techno for my taste. Certainly entertaining, and the two definitely looked like they were enjoying themselves.&lt;/p&gt;</content:encoded><category>entertainment</category><category>music</category></item><item><title>Cross OS file system support</title><link>https://www.digitalhobbit.com/legacy/2005/01/02/cross-os-file-system-support/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/01/02/cross-os-file-system-support/</guid><description>Now that I&apos;m getting more serious about switching to Linux, I had to come up with a good strategy for sharing data between Linux and Windows. I still need Windows XP for games, and potentially for a few other applications, so I&apos;m not quite ready to give it up completely. Unfortunately, sharing data between the two operating systems still isn&apos;t trivial.</description><pubDate>Sun, 02 Jan 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Now that I&apos;m getting more serious about switching to Linux, I had to come up with a good strategy for sharing data between Linux and Windows. I still need Windows XP for games, and potentially for a few other applications, so I&apos;m not quite ready to give it up completely. Unfortunately, sharing data between the two operating systems still isn&apos;t trivial.&lt;/p&gt;
&lt;p&gt;The first problem is that Linux still does not support writing to NTFS partitions. Read-only access works fine these days, and there are some experimental solutions for writing, but none of these are stable, tested, and support full access to NTFS shares. Not that I blame Linux or its developers, since the problem is due to the closed specs for the NTFS file system that Microsoft isn&apos;t releasing. These days, NTFS is pretty much the standard file system on Windows XP systems. I switched from FAT to NTFS a long time ago, when I installed Windows 2000. Nowadays, FAT(32) isn&apos;t even a feasible option any more, as &lt;a href=&quot;http://www.microsoft.com/resources/documentation/Windows/XP/all/reskit/en-us/Default.asp?url=/resources/documentation/Windows/XP/all/reskit/en-us/prkc_fil_tdrn.asp&quot;&gt;Windows XP isn&apos;t able to format FAT32 partitions greater than 32GB&lt;/a&gt;. I wasn&apos;t even aware of this limitation until I tried to format my new 250GB SATA drive with FAT32 and found this option to be missing... This is truly lame, as most new hard drives have capacities between 100GB and 300GB. Of course, this is simply Microsoft&apos;s way of forcing people to use the proprietary NTFS file system and thereby preventing them from using other operating systems, since they cannot access the data on these partitions.&lt;/p&gt;
&lt;p&gt;Luckily, there are still ways of getting larger FAT32 partitions working. They simply need to be created and formatted in another OS. After using the Linux fdisk and mkfs.vfat tools to partition and format my new drive, I was able to access it from both Linux and Windows without any problems. Now I just need to perform some major hard drive copy operations to move my data around, as it is not possible to convert NTFS partitions back to FAT32. In my case, this is easy to accomplish because I bought a new drive at this opportunity. Otherwise, things would be even more annoying...&lt;/p&gt;</content:encoded><category>linux</category><category>technology</category></item><item><title>More file system woes...</title><link>https://www.digitalhobbit.com/legacy/2005/01/02/more-file-system-woes/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2005/01/02/more-file-system-woes/</guid><description>I ran into another FAT32 limitation yesterday: I had completely forgotten that the maximum file tsize in FAT32 is 4GB. Or more likely, it simply wasn&apos;t an issue back when I was using FAT32 the last time. Unfortunately, it is much more of an issue now.</description><pubDate>Sun, 02 Jan 2005 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I ran into another FAT32 limitation yesterday: I had completely forgotten that the maximum file tsize in FAT32 is 4GB. Or more likely, it simply wasn&apos;t an issue back when I was using FAT32 the last time. Unfortunately, it is much more of an issue now. I frequently burn DVDs, and as a regular DVD can be up to 4.7GB, I sometimes need to deal with 4.7GB ISO files on my hard drives. I also still have some old, 8GB large AVI files that I captured from my digital video camera some time ago and haven&apos;t gotten around to processing yet. I just ran into this issue when I tried to copy my data files from my old NTFS drive to my new FAT32 drive. Unfortunately this means that FAT32 isn&apos;t the solution for sharing data between Linux and Windows that I was hoping for.&lt;/p&gt;
&lt;p&gt;For now, I think I will keep an NTFS partition and use it for these kinds of files. Most of these are transient in nature rather than data files that need to be stored for a long time, so something around 25GB might suffice for now. I am still hoping that solid NTFS support will be available for Linux soon, but I&apos;m not holding my breath.&lt;/p&gt;
&lt;p&gt;Another potential option could be to store my data on a Linux (ext2 or ext3) partition and find a way to access this on Windows. There are various tools that provide access to ext2 partitions, but I really would need a solution that provides native, transparent access to the file system. There is at least one such solution (&lt;a href=&quot;http://ext2fsd.sourceforge.net/&quot;&gt;ext2fsd&lt;/a&gt;) with at least &lt;a href=&quot;http://www.asiatica.org/~ludo/archive/2003/12/Misc%20Stuff_ext2.html&quot;&gt;one positive user report&lt;/a&gt;, but some of the recently fixed bugs listed on the website indicate that this implementation might still be very risky... I think I&apos;ll hold off on this for now.&lt;/p&gt;
&lt;p&gt;Using a separate file server with NFS shares could be another option,  but unfortunately this would not really work for my use case either, as I would need fast access to the video and DVD ISO files for video processing and DVD burning applications.&lt;/p&gt;</content:encoded><category>linux</category><category>technology</category></item><item><title>Gentoo and Java</title><link>https://www.digitalhobbit.com/legacy/2004/12/30/gentoo-and-java/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/12/30/gentoo-and-java/</guid><description>Just a few comments on Gentoo and Java. Of course, Gentoo includes many Java packages. For the most part, installing a Java application works the same way as installing a native application, using the &quot;emerge&quot; tool. The source code for the application is downloaded, compiled using the appropriate settings, and installed, along with any dependent packages.</description><pubDate>Thu, 30 Dec 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Just a few comments on &lt;a href=&quot;http://www.gentoo.org&quot;&gt;Gentoo&lt;/a&gt; and Java. Of course, Gentoo includes many Java packages. For the most part, installing a Java application works the same way as installing a native application, using the &quot;emerge&quot; tool. The source code for the application is downloaded, compiled using the appropriate settings, and installed, along with any dependent packages. For example, installing the Eclipse IDE and the Tomcat application server, both of which depend on many other Java packages, was a snap (well, maybe not exactly a snap due to the lengthy compilation cycle, but easy nevertheless).&lt;/p&gt;
&lt;p&gt;At first, I was slightly surprised that Gentoo decided to compile all Java programs from scratch. After all, all significant Java optimizations occur at runtime, rather than compile time. But it really fits better into the Gentoo philosophy. The following page on the Gentoo Wiki explains some of the &lt;a href=&quot;http://gentoo-wiki.com/Why_Build_Java_Code_From_Source&quot;&gt;reaons for building Java code from source&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Wiki also contains a page on &lt;a href=&quot;http://gentoo-wiki.com/Java&quot;&gt;Java on Gentoo&lt;/a&gt;, as well as a nice &lt;a href=&quot;http://gentoo-wiki.com/Gentoo_Java_Roadmap&quot;&gt;Gentoo Java roadmap&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As I mainly work with Java, I&apos;m glad to see that it is an important consideration for Gentoo.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Gentoo Linux</title><link>https://www.digitalhobbit.com/legacy/2004/12/30/gentoo-linux/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/12/30/gentoo-linux/</guid><description>I have spent a significant portion of last week installing, configuring, and exploring Gentoo Linux on my desktop at home. I have used Linux on and off over the past 9 years or so, starting with an early Suse distribution (long before there was a graphical installer). Most of my recent Linux experience has been on Redhat, and at my new job we use Redhat Enterprise 3.0 on our workstations. The fact that we use Linux at my job has sparked a renewed interest in Linux, while at the same time causing some minor frustrations. Many of these are due to the package management. Overall, I think that Redhat has done a decent job with RPM, which allows for a relatively easy way to install and manage packages and dependencies. But when trying to get a particular feature working (such as Bluetooth), this often leads to a wild goose chase to download all the necessary RPM, the dependent RPMs, etc. In case of Bluetooth, I would have had to install Gnome, which again would have required upgrading to the xorg (rather than XFree86) X server, as the updated Gnome RPM packages are only available for the newer Fedora distribution, which has (like most current distros) switched to xorg. At that point I gave up and decided to pursue this again some time in the future... Particularly in a corporate environment, goose chases like that are not very desirable, as our sys admins (who are ultimately responsible for maintaining and upgrading our systems) want to maintain a reasonably standard workstation configuration. They use the apt tools to manage packages and push updates to our systems, which is definitely a step up from RPM. Anyway, I&apos;m getting off track, as I really wanted to write about Gentoo. I was recently forced to upgrade my personal desktop due to a motherboard failure, and I ended up upgrading to an Athlon64 processor. I figured that this would be a good opportunity to install a recent Linux distribution with AMD64 support. Fedore Core 3 first came to my mind, but I felt like trying out something new and different and decided to give Gentoo Linux a try.</description><pubDate>Thu, 30 Dec 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have spent a significant portion of last week installing, configuring, and exploring Gentoo Linux on my desktop at home. I have used Linux on and off over the past 9 years or so, starting with an early Suse distribution (long before there was a graphical installer). Most of my recent Linux experience has been on Redhat, and at my new job we use Redhat Enterprise 3.0 on our workstations. The fact that we use Linux at my job has sparked a renewed interest in Linux, while at the same time causing some minor frustrations. Many of these are due to the package management. Overall, I think that Redhat has done a decent job with RPM, which allows for a relatively easy way to install and manage packages and dependencies. But when trying to get a particular feature working (such as Bluetooth), this often leads to a wild goose chase to download all the necessary RPM, the dependent RPMs, etc. In case of Bluetooth, I would have had to install Gnome, which again would have required upgrading to the xorg (rather than XFree86) X server, as the updated Gnome RPM packages are only available for the newer Fedora distribution, which has (like most current distros) switched to xorg. At that point I gave up and decided to pursue this again some time in the future... Particularly in a corporate environment, goose chases like that are not very desirable, as our sys admins (who are ultimately responsible for maintaining and upgrading our systems) want to maintain a reasonably standard workstation configuration. They use the apt tools to manage packages and push updates to our systems, which is definitely a step up from RPM.&lt;/p&gt;
&lt;p&gt;Anyway, I&apos;m getting off track, as I really wanted to write about Gentoo. I was recently forced to upgrade my personal desktop due to a motherboard failure, and I ended up upgrading to an Athlon64 processor. I figured that this would be a good opportunity to install a recent Linux distribution with AMD64 support. Fedore Core 3 first came to my mind, but I felt like trying out something new and different and decided to give &lt;a href=&quot;http://www.gentoo.org&quot;&gt;Gentoo Linux&lt;/a&gt; a try.&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;Gentoo differs from major distributions like Redhat and Suse in many ways. For one thing, it is source based (although binary packages exist, but the normal way to install a package is to build it from source). This allows each package to be optimized for the user&apos;s system. For example, code can be optimized for the user&apos;s CPU (e.g. i386 vs. Athlon64), without having to maintain different binary packages for each CPU. It also means that only the relevant features are included in the package. Many packages have optional components, such as KDE vs. Gnome integration, support for ALSA vs. OSS sound, Java bindings, etc. The user generally only needs to configure a global set of flags that determine which features to include, and all installed packages will be customized appropriately at build time. What Gentoo really shines at is its package management. It uses a system called Portage, which is apparently quite similar to the Ports system used by BSD-style Unix systems. In most cases, installing a particular application is as simple as issuing a command like &quot;emerge &amp;#x3C;application_name&gt;&quot;. The emerge tool is the general interface into the Portage system. This will first check that a version of the application exists that works for your system (e.g. AMD64 / i386) and conforms to the stability level you have configured (i.e. stable vs. unstable or at least not adequately tested), along with all dependent packages. It will then automatically download the source code for the application itself as well as all dependencies, compile, and then install all packages. Users don&apos;t need to hunt for RPMs or manually download, compile, and install source distributions. It took me a little while to get used to this type of package management, but I quickly grew to love it. Once a week or so, a simple &quot;emerge --deep --upgrade world&quot; will upgrade all packages on the system to the latest stable version. This is not necessarily something that would be desired in a corporate setting, but it seems adequate and convenient for a personal desktop.&lt;/p&gt;
&lt;p&gt;Another area where Gentoo differs from its competition is the installer, as it doesn&apos;t really have one to speak of. The installation is performed manually by booting in to a simple linux CD and manually issuing the appropriate commands from the command line in order to partition the hard drive, mount and format the partitions, copy over a minimal bootstrap system, etc. Once this barebones Linux system is up and running, emerge is employed to do the rest. Alternatively, an additional set of binary packages can be downloaded and installed to speed up the installation process. I did this during my installation to install things like Gnome and X11, but as the subsequent emerge ended up upgrading pretty much all the packages anyway, I probably would leave this step out the next time and build everything from the latest sources right away.&lt;/p&gt;
&lt;p&gt;At this point, my system is running great. All the basic software (Gnome and XFCE desktop environments, the Firefox browser, XMMS media player, etc.) are installed and I am in the process of installing some other interesting applications. Distros like Redhat or Suse offer a lot of packages during the installation, many of which sound very cool, but after the installation I rarely remember which cool packages I wanted to check out. With Gentoo, I install applications when I need them, which keeps my system clean.&lt;/p&gt;
&lt;p&gt;As a professional computer user with a reasonable amount of Linux experience, getting Gentoo running was fairly easy, particularly due to the absolutely excellent Gentoo documentation on the website. The installation handbook is very detailed, down to the actual commands that need to be entered. The forums also contain a wealth of information, and the IRC channels are full of helpful people as well. Overall, the community around Gentoo seems very active and newbie-friendly. Still, installing Gentoo is a lengthy and very manual process that I would not recommend to more casual users. Those would probably be served better with a distro like Redhat, Suse, or Mandrake. But if you feel like a little challenge with a nice pay off, Gentoo is well worth a try. I am planning on sticking with it for now.&amp;#x3C;/application_name&gt;&lt;/p&gt;</content:encoded><category>linux</category><category>technology</category></item><item><title>JSourcery</title><link>https://www.digitalhobbit.com/legacy/2004/12/30/jsourcery/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/12/30/jsourcery/</guid><description>I had previously mentioned JDocs on my blog. JSourcery provides a similar service. The site currently comprises the Javadocs for several common APIs (such as the Apache Commons APIs), as well as the actual J2SE Javadocs (although I suspect it is only a matter of time before SUN will force JSourcery to take these down, just like JDocs did).</description><pubDate>Thu, 30 Dec 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had previously mentioned &lt;a href=&quot;http://www.jdocs.com&quot;&gt;JDocs&lt;/a&gt; on my blog. &lt;a href=&quot;http://www.jsourcery.com/&quot;&gt;JSourcery&lt;/a&gt; provides a similar service. The site currently comprises the Javadocs for several common APIs (such as the Apache Commons APIs), as well as the actual J2SE Javadocs (although I suspect it is only a matter of time before SUN will force JSourcery to take these down, just like JDocs did). The unique thing about JSourcery is that it also provides access to the hyperlinked, highlighted source code. On the other hand, it does not have JDoc&apos;s comments feature, and the list of APIs is significantly smaller.&lt;/p&gt;
&lt;p&gt;In my opinion, these two services should merge. JDocs has probably gained a fair amount of traction, and the added source code feature would be a nice addition.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>XFCE: A great, lean desktop environment for Linux</title><link>https://www.digitalhobbit.com/legacy/2004/12/30/xfce/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/12/30/xfce/</guid><description>In one of my previous postings, I hinted at some of the issues I initially had with the Linux workstation at my new job (we use Redhat Enterprise 3.0). The UI was very sluggish, the memory usage high, I was unable to get Bluetooth support working, etc. Some of these issues have been resolved in the mean time, at least for the time being.</description><pubDate>Thu, 30 Dec 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In one of my previous postings, I hinted at some of the issues I initially had with the Linux workstation at my new job (we use Redhat Enterprise 3.0). The UI was very sluggish, the memory usage high, I was unable to get Bluetooth support working, etc. Some of these issues have been resolved in the mean time, at least for the time being.&lt;/p&gt;
&lt;p&gt;Our home directories are on a network share, which adds significant overhead with desktop environments like Gnome that frequently need to access dot files in the user&apos;s home directory. Moving these dot files to a local directory and symlinking to them from the home directory brought some performance gains. The memory usage was still high, though.&lt;/p&gt;
&lt;p&gt;Ultimately, I ended up switching from Gnome to &lt;a href=&quot;http://www.xfce.org/&quot;&gt;XFCE&lt;/a&gt;, which  brought a tremendous improvement. XFCE is much leaner than Gnome and thus requires much less memory. It does not offer all the desktop functionality that Gnome has, but it has everything that I really care about, such as an extensible and configurable panel, a task bar, virtual desktop, etc. Like Gnome it is built on top of the GTK library, and all Gnome applications I have tried work and look fine under XFCE.&lt;/p&gt;
&lt;p&gt;I never really got all that much into the whole desktop metaphor, to be honest. Perhaps, because I never had a Mac... The year or so that I ran OS/2 in the early 90s was perhaps the closest I got to a nice desktop environment. On Windows, I usually just use the start button or quicklaunch bar to launch applications, and Windows explorer to manage files. I never use the desktop itself to store and manage files. Therefore, a desktop environment with support for icons really isn&apos;t very important to me (although I believe there are ways to extend XFCE to support this, for example by integrating it with the Rox file manager).  Most of the time, I end up using the terminal for all file management tasks on Linux (somehow everything else just doesn&apos;t feel quite right under Unix...), and I rarely even use the Gnome, KDE, or XFCE file managers.&lt;/p&gt;
&lt;p&gt;Anyway, I can heartily recommend XFCE as a lean alternative to the bloated Gnome or KDE. It is much more complete desktop environment than simple window managers such as Fluxbox provide (which is one of the best super-lightweight window managers I&apos;ve used), yet very quick and sporting a conservative resource usage. It supports themes and other eye candy, is easy to configure, and supports many useful, optional plugins.&lt;/p&gt;</content:encoded><category>linux</category><category>technology</category></item><item><title>Fighting Comment Spam</title><link>https://www.digitalhobbit.com/legacy/2004/12/27/fighting-comment-spam/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/12/27/fighting-comment-spam/</guid><description>Lately I&apos;ve been bombarded with comment spam (free online poker anyone?). I have expanded the list of keywords that flag a comment as potential spam, thus requiring manual admin approval before it is posted. This is still annoying, though, as I have to disapprove the spam every time it is posted. Therefore, I have implemented a simple but hopefully effective automatic anti-comment-spam solution based on Elliott Back&apos;s Spam Stopgap Extreme.</description><pubDate>Mon, 27 Dec 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Lately I&apos;ve been bombarded with comment spam (free online poker anyone?).&lt;/p&gt;
&lt;p&gt;I have expanded the list of keywords that flag a comment as potential spam, thus requiring manual admin approval before it is posted. This is still annoying, though, as I have to disapprove the spam every time it is posted. Therefore, I have implemented a simple but hopefully effective automatic anti-comment-spam solution based on &lt;a href=&quot;http://elliottback.com/wp/archives/2004/11/29/spam-stopgap-extreme/&quot;&gt;Elliott Back&apos;s Spam Stopgap Extreme&lt;/a&gt;. The only downside is that it requires Javascript to be enabled in order to post comments. If for some reason you are unable to post a comment, please email me at digitalhobbit AT digitalhobbit DOT com.&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>XWiki</title><link>https://www.digitalhobbit.com/legacy/2004/12/27/xwiki/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/12/27/xwiki/</guid><description>I recently came across XWiki, a relatively new, Java-based Wiki. For anybody looking to deploy a new Wiki, this looks like a great option. It has an extensive feature list and seems to combine the best features of other Wiki engines as well as add a few unique Features of its own, for example scripting using Groovy or Velocity, PDF export, and others.</description><pubDate>Mon, 27 Dec 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently came across &lt;a href=&quot;http://www.xwiki.org/xwiki/bin/view/Main/WebHome&quot;&gt;XWiki&lt;/a&gt;, a relatively new, Java-based Wiki. For anybody looking to deploy a new Wiki, this looks like a great option. It has an extensive feature list and seems to combine the best features of other Wiki engines as well as add a few unique &lt;a href=&quot;http://www.xwiki.org/xwiki/bin/view/Main/WhyIsXWikiDifferent&quot;&gt;Features of its own&lt;/a&gt;, for example scripting using Groovy or Velocity, PDF export, and others. It has a plugin API and supports RSS. The website layout is very clean. Definitely worth checking out.&lt;/p&gt;</content:encoded><category>java</category><category>development</category><category>software</category></item><item><title>display tag library</title><link>https://www.digitalhobbit.com/legacy/2004/12/22/display-tag-library/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/12/22/display-tag-library/</guid><description>I was looking for an API or (preferably) custom tag library to handle pagination and sorting of lists in JSP, when I came across the display tag library, and I have to admit that I&apos;m very impressed. This tag library is surprisingly easy and intuitive to use, while at the same time being extremely powerful, flexible, and configurable.</description><pubDate>Wed, 22 Dec 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I was looking for an API or (preferably) custom tag library to handle pagination and sorting of lists in JSP, when I came across the &lt;a href=&quot;http://displaytag.sourceforge.net/&quot;&gt;display tag library&lt;/a&gt;, and I have to admit that I&apos;m very impressed.&lt;/p&gt;
&lt;p&gt;This tag library is surprisingly easy and intuitive to use, while at the same time being extremely powerful, flexible, and configurable. It supports rendering tables based on a list of elements that can be supplied as a Collection, Enumeration, array, any object that has an iterator() method, etc. It supports both sorting and pagination. The look and feel can be configured using CSS, but in some cases the actual HTML code that is generated (for example for pagination controls) is configurable as well. Some options can be configured on a per-tag basis as well as in a properties file, which is useful to define a consistent look and feel for a site once.&lt;/p&gt;
&lt;p&gt;But most of all, I was amazed by the quality of the documentation. The &lt;a href=&quot;http://displaytag.sourceforge.net/&quot;&gt;display tag library website&lt;/a&gt; is well organized and the documentation may very well be the best that I&apos;ve seen for a project of this type. It certainly blows away many of the common open source projects, including Apache. It even comes with a very nice and complete collection of &lt;a href=&quot;http://www.displaytag.org/&quot;&gt;live examples&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Well, I know what I&apos;ll use on my project. Nice work!&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Integrated Development Environment for Laszlo</title><link>https://www.digitalhobbit.com/legacy/2004/12/20/integrated-development-environment-for-laszlo/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/12/20/integrated-development-environment-for-laszlo/</guid><description>I still have not had much of a chance to play with Laszlo, but IBM has released a very promising looking Integrated Development Environment for Laszlo in form of an Eclipse plugin (what else) on their alphaWorks site. I&apos;ll definitely have to give this a try.</description><pubDate>Mon, 20 Dec 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I still have not had much of a chance to play with &lt;a href=&quot;http://www.openlaszlo.org/&quot;&gt;Laszlo&lt;/a&gt;, but IBM has released a very promising looking &lt;a href=&quot;http://alphaworks.ibm.com/tech/ide4laszlo&quot;&gt;Integrated Development Environment for Laszlo&lt;/a&gt; in form of an Eclipse plugin (what else) on their alphaWorks site. I&apos;ll definitely have to give this a try.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Portlet Community</title><link>https://www.digitalhobbit.com/legacy/2004/12/20/portlet-community/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/12/20/portlet-community/</guid><description>SUN has recently created a new Portlet Community website. It looks like it contains some interesting articles and links.</description><pubDate>Mon, 20 Dec 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;SUN has recently created a new &lt;a href=&quot;http://community.java.net/portlet/&quot;&gt;Portlet Community website&lt;/a&gt;. It looks like it contains some interesting articles and links.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Laptop Woes</title><link>https://www.digitalhobbit.com/legacy/2004/12/04/laptop-woes/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/12/04/laptop-woes/</guid><description>For some reason it seems like I&apos;m just not very lucky with computers right now... After my recent (and still somewhat ongoing) PC issues, my laptop gave up over the Thanksgiving weekend. This is a Compaq Presario R3000Z that is less than half a year old and that I&apos;m otherwise extremely happy with. All of a sudden, the screen stopped working.</description><pubDate>Sat, 04 Dec 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For some reason it seems like I&apos;m just not very lucky with computers right now...&lt;/p&gt;
&lt;p&gt;After my recent (and still somewhat ongoing) PC issues, my laptop gave up over the Thanksgiving weekend. This is a Compaq Presario R3000Z that is less than half a year old and that I&apos;m otherwise extremely happy with. All of a sudden, the screen stopped working. Of course, I couldn&apos;t resist taking the computer apart to see if this problem might have a simple cause, such as a disconnected cable. Unfortunately, this was not the case, and I decided to give up my own investigation and call upon the warranty instead.&lt;/p&gt;
&lt;p&gt;The first couple of times I called Compaq / HP support, it was after hours in the US, and I was therefore redirected to their service center in India. I spoke to several very friendly and helpful customer service representatives who all agreed that I should send my laptop in for repair or replacement. Unfortunately, neither of them was able to take an RMA order because their database was down at the time. This continued for at least 1 1/2 days, after which I had enough... The problem was supposedly going to be fixed in another hour or two, but that&apos;s what I had been told the previous day as well.&lt;/p&gt;
&lt;p&gt;The next day, I had better luck. I called in the morning and got through to someone in the USA, who immediately placed an RMA order for me and arranged for a FedEx pickup the next day. After that, everything went extremely smooth. FedEx picked up the laptop on Tuesday, it arrived at Compaq / HP on Wednesday, they shipped the fixed laptop on Thursday, and I received it on Friday.&lt;/p&gt;
&lt;p&gt;Everything is working fine again. It seems like they only had to replace the backlight, or maybe the entire LCD screen.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Unable to install Windows</title><link>https://www.digitalhobbit.com/legacy/2004/12/04/unable-to-install-windows/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/12/04/unable-to-install-windows/</guid><description>After some research and comparison shopping, I decided to buy the following components to replace my defective motherboard: Athlon64 3000+ CPU, Winchester core with 90nm process. These run significantly cooler than their older 0.13Micron siblings and have better overclocking potential. Asus A8V Deluxe motherboard. This VIA K8T800Pro based board has a Socket 939 that supports the latest Winchester core Athlons and hopefully will be supported for a while. More importantly for me, the board has 3 regular (Parallel ATA) IDE connectors in addition to the 4 SATA connectors. Most motherboards these days seem to be moving towards SATA, which is certainly a good thing, but as I still have quite a few Parallel ATA devices (DVD-ROM, DVD-R/W, and 4 hard drives), I need at least 3 PATA connectors. Of course, I could always buy a separate controller PCI card, but I prefer this simpler solution. The A8V Deluxe has been getting good reviews, so I should be fine. 2 Corsair 512MB PC3200 DIMMs. I went with their value line, which may not yield the same performance as some of the higher quality memory, but nonetheless it is officially supported by my motherboard and supports dual channel. For the most part, I am very happy with this combination, although I still have some serious problems. Read below for more...</description><pubDate>Sat, 04 Dec 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After some research and comparison shopping, I decided to buy the following components to replace my defective motherboard:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Athlon64 3000+ CPU, Winchester core with 90nm process. These run significantly cooler than their older 0.13Micron siblings and have better overclocking potential.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://usa.asus.com/products/mb/socket939/a8v-d/overview.htm&quot;&gt;Asus A8V Deluxe motherboard&lt;/a&gt;. This VIA K8T800Pro based board has a Socket 939 that supports the latest Winchester core Athlons and hopefully will be supported for a while. More importantly for me, the board has 3 regular (Parallel ATA) IDE connectors in addition to the 4 SATA connectors. Most motherboards these days seem to be moving towards SATA, which is certainly a good thing, but as I still have quite a few Parallel ATA devices (DVD-ROM, DVD-R/W, and 4 hard drives), I need at least 3 PATA connectors. Of course, I could always buy a separate controller PCI card, but I prefer this simpler solution. The A8V Deluxe has been getting good reviews, so I should be fine.&lt;/li&gt;
&lt;li&gt;2 Corsair 512MB PC3200 DIMMs. I went with their value line, which may not yield the same performance as some of the higher quality memory, but nonetheless it is officially supported by my motherboard and supports dual channel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the most part, I am very happy with this combination, although I still have some serious problems. Read below for more...&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;My initial start after putting everything back together was somewhat rocky. First, the computer didn&apos;t POST and all I got was a black screen. I then remembered reading somewhere that the A8V requires BIOS v.1007 in order to support Winchester core CPUs. Since I had ordered the CPU and motherboard as a combo from Mwave, I assumed that they would ensure to ship a motherboard with an appropriate BIOS, but this was not the case. After some initial frustration, I found a helpful post somewhere that suggested to start the system with a single DIMM in slot 3. And voila, with this configuration the system was able to boot into the BIOS. After downloading the latest official BIOS (v.1008) and flashing it using the A8V&apos;s convenient EZ Flash procedure, my CPU was now properly supported and I was able to put in the second DIMM.&lt;/p&gt;
&lt;p&gt;So far so good. I still wasn&apos;t able to boot into Windows. I had previously set up a dual boot Windows / Linux configuration using the Grub bootloader, which for some reason wasn&apos;t happy now. I now had to hunt for some DOS boot disks with the appropriate tools (e.g. Fdisk) on them, but wasn&apos;t successful. Luckily, two downloadable CD-ROM bootdisks came to the rescue. Both contain a variety of rescue and system diagnostics tools, and using them I was easily able to fix my MBR to remove Grub.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ultimatebootcd.com/&quot;&gt;Ultimate Boot CD&lt;/a&gt;: This is my favorite of these two CDs. It contains a wealth of tools, as well as a complete, Knoppix-based Linux distribution. You simply download the ISO, burn it on CD, and boot from it.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.911cd.net/&quot;&gt;911 Rescue CD&lt;/a&gt;: Another great tool. Instead of an ISO image, you need to download a CD builder that you run on your computer in order to generate a rescue CD image. I believe (although I haven&apos;t really looked much into this aspect) that it is able to incorporate a Windows installer into the rescue CD, which is probably the main reason why the CD cannot simply be downloaded in form of an ISO image. It does not contain a Linux distribution, though.&lt;/p&gt;
&lt;p&gt;I had anticipated having to reinstall Windows after replacing the motherboard, but surprisingly it was able to recognize the new components and ran happily after updating or installing the corresponding drivers. Maybe the fact that my previous system also used an Athlon CPU and a VIA chipset helped.&lt;/p&gt;
&lt;p&gt;Now for the remaining problem that I&apos;ve been unable to fix so far: I am unable to boot from any Windows XP installation CD. This may not be an immediate issue, as my existing installation is luckily working just fine, but of course I need to be able to reinstall Windows if I have to.&lt;/p&gt;
&lt;p&gt;I get to the point where I have to press a button the boot the CD, and I also get the following message: &quot;Setup is inspecting your computer&apos;s hardware configuration&quot;. After this, the screen goes blank and nothing happens. I have even left the computer in this state for a whole night, without a change.&lt;/p&gt;
&lt;p&gt;I have tried everything I could think of: Booting from my DVD-R/W instead of my DVD-ROM, removing one of my two DIMMs, disconnecting all hard drives, replacing my USB keyboard and mouse with PS2 components, etc. I have also tried virtually all permutations of BIOS settings (RAM timings and  voltage, AGP settings, CPU and AGP voltage, ACPI, etc.). In addition, I downloaded and flashed the latest beta BIOS (v.1009.3).&lt;/p&gt;
&lt;p&gt;This seems to affect all Windows XP boot CDs, including the vanilla XP version, SP1, and SP2. All other CDs boot fine, including Knoppix or the Fedora Linux installation DVD.&lt;/p&gt;
&lt;p&gt;Many forums on the Internet mention RAM problems as the most likely cause of these types of problems. But I have tried different RAM, without success. I have also run Memtest86+ for about an hour, without encountering any errors, so it is unlikely that the RAM is to blame.&lt;/p&gt;
&lt;p&gt;I suppose a bad power supply could potentially be causing problems as well, and while I have a 500W supply, it is a generic and probably low quality brand. I have actually ordered a new PC case as well as a new power supply, and I will test this as soon as it arrives on Monday.&lt;/p&gt;
&lt;p&gt;And of course, I could just have a defective motherboard. However, the fact that it otherwise works fine (even games play fine, and I&apos;ve had the computer running for several days at a time without issues) leads me to believe that the issue lies elsewhere. Still, I might have to try to RMA it if I can&apos;t find any other causes.&lt;/p&gt;
&lt;p&gt;If you have any suggestions, please leave a comment.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Update on my PC</title><link>https://www.digitalhobbit.com/legacy/2004/11/13/update-on-my-pc/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/11/13/update-on-my-pc/</guid><description>It turned out that it&apos;s not the power supply. I guess I should have known, as the LEDs on the motherboard still light up. At this point it seems most likely that the motherboard is fried. This itself isn&apos;t too bad, as my motherboard and processor are about 2 1/2 years old now and they weren&apos;t exactly cutting edge back then.</description><pubDate>Sat, 13 Nov 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It turned out that it&apos;s not the power supply. I guess I should have known, as the LEDs on the motherboard still light up. At this point it seems most likely that the motherboard is fried. This itself isn&apos;t too bad, as my motherboard and processor are about  2 1/2 years old now and they weren&apos;t exactly cutting edge back then. So I guess it&apos;s time to get a new motherboard and processor. Time to start doing my research on the current generation of motherboards and processors. I don&apos;t tend to keep up with the rapid developments in these fields, and I usually just invest the time to get up to speed when it&apos;s time to buy new hardware.&lt;/p&gt;
&lt;p&gt;The problem is that buying a new motherboard often has a cascading effect... The last time I bought a new motherboard, I had to buy new RAM as well. I have 1GB of PC 2100 RAM which I&apos;d rather not replace with the preferred RAM type du jour, but I have a feeling that the new motherboard generation will have updated memory requirements. And I&apos;ve also thought about replacing my case for a while, because it&apos;s not all that great. But at that point it might be more economic to buy an entirely new PC (which I haven&apos;t done in about 8 years), as these often go on sale for much less than the sum of their parts these days. Then again, I really don&apos;t need any of the other peripherals, as I have a good sound card, a decent video card, a DVD-ROM, DVD burner, and several large HDs.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Sigh&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Time to hit the following websites:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.anandtech.com/&quot;&gt;AnandTech&lt;/a&gt;
&lt;a href=&quot;http://www.tomshardware.com/&quot;&gt;Tom&apos;s Hardware Guide&lt;/a&gt;
&lt;a href=&quot;http://www.xpbargains.com&quot;&gt;xpBargains&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you have any good suggestions on which motherboard to buy (I am somewhat biased towards Athlon processors but still need to do my research and compare prices), please leave a comment. Up to now, I was very happy with my Gigabyte GA-7VRXP, particularly because of its secondary IDE controller, which came in handy because I have more than 4 IDE devices. I would like to buy another motherboard with this feature, although I suppose I could buy a separate IDE controller card.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>The More Things Change...</title><link>https://www.digitalhobbit.com/legacy/2004/11/12/the-more-things-change/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/11/12/the-more-things-change/</guid><description>I don&apos;t tend to post political comments on my blog, but Andy Hunt dug up this wonderful, 84 year old quote that seems oddly relevant now: When a candidate for public office faces the voters he does not face men of sense; he faces a mob of men whose chief distinguishing mark is that they are quite incapable of weighing ideas, or even of comprehending any save the most elemental---men</description><pubDate>Fri, 12 Nov 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I don&apos;t tend to post political comments on my blog, but Andy Hunt dug up &lt;a href=&quot;http://www.toolshed.com/blog/SocialCommentary/Moron.html,v&quot;&gt;this wonderful, 84 year old quote that seems oddly relevant now&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;When a candidate for public office faces the voters he does not face men of sense; he faces a mob of men whose chief distinguishing mark is that they are quite &lt;strong&gt;incapable of weighing ideas&lt;/strong&gt;, or even of comprehending any save the most elemental---men whose whole thinking is done in terms of emotion, and whose dominant emotion is &lt;strong&gt;dread of what they cannot understand.&lt;/strong&gt; So confronted, the candidate must either bark with the pack, or count himself lost. &lt;strong&gt;His one aim is to disarm suspicion, to arouse confidence in his orthodoxy, to avoid challenge.&lt;/strong&gt; If he is a man of convictions, of enthusiasm, or self-respect, it is cruelly hard...&lt;/p&gt;
&lt;p&gt;The larger the mob, the harder the test. In small areas, before small electorates, a first rate man occasionally fights his way through, carrying even a mob with him by the force of his personality. But when the field is nationwide, and the fight must be waged chiefly at second or third hand, and the force of personality cannot so readily make itself felt, then all the odds are on the man who is, &lt;strong&gt;intrinsically the most devious and mediocre&lt;/strong&gt; -- the man who can most adeptly disperse the notion that &lt;strong&gt;his mind is a virtual vacuum.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Presidency tends, year by year, to go to such men.&lt;/strong&gt; As democracy is perfected, the office represents, more and more closely, the inner soul of the people. We move toward a lofty ideal. On some great and glorious day the plain folks of the land will reach their hearts desire at last, and the White House will be adorned by a &lt;strong&gt;downright moron.&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;--H.L. Mencken, The Baltimore Evening Sun, July 26, 1920&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>Argh... My Computer Just Died</title><link>https://www.digitalhobbit.com/legacy/2004/11/10/argh-my-computer-just-died/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/11/10/argh-my-computer-just-died/</guid><description>This morning my PC&apos;s video display suddenly shut down. When I tried to reboot it, it got through the initial boot sequence and died again right after it switched into graphics mode during the Windows startup. As I had similar problems with my previous ATI card, I wasn&apos;t particularly surprised... I turned the PC off and decided to troubleshoot the problem after work.</description><pubDate>Wed, 10 Nov 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This morning my PC&apos;s video display suddenly shut down. When I tried to reboot it, it got through the initial boot sequence and died again right after it switched into graphics mode during the Windows startup. As I had similar problems with my previous ATI card, I wasn&apos;t particularly surprised... I turned the PC off and decided to troubleshoot the problem after work.&lt;/p&gt;
&lt;p&gt;After I got back, I tried to start the PC again. It actually managed to boot into Windows and display the login screen, but it died immediately afterwards, before I even had a chance to log in. All subsequent attempts to boot failed even sooner. I actually noticed a little bit of a burnt smell, but I couldn&apos;t quite place where it was coming from. Upon opening the case I discovered that one of the case fans was no longer functioning. The CPU fan and the video card fans were running fine, and the hard disks seemed to be spinning up as well, so I blamed the fan. I left the computer for a few minutes, and now it is completely dead. Turning on the PC has no effect whatsoever - no fans start up, the hard disks don&apos;t start up, etc. The only odd thing is that two LEDs on the motherboard are still on.&lt;/p&gt;
&lt;p&gt;At this point, I suspect the power supply. It wouldn&apos;t be the first power supply that died on me... The fact that the LEDs are still on is kind of weird, though. Guess I&apos;ll have to dig up my old 300W power supply, which I ditched in favor of this 500W supply fairly recently, when I ran into problems with my previous ATI video card that appeared to be (but turned out not to be) power related. Wish me luck!&lt;/p&gt;
&lt;p&gt;At least I still have my laptop and my Xbox. :)&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>GMail Drive</title><link>https://www.digitalhobbit.com/legacy/2004/11/09/gmail-drive/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/11/09/gmail-drive/</guid><description>A while ago I mentioned GmailFS. I still have not had a chance to try it, but now that I use Linux at work there&apos;s even more reason to give it a shot. A similar tool now exists for Windows users: GMail Drive. Definitely worth a look. I wonder how much effort Google will put into disabling these tools. I guess it depends on how much they catch on.</description><pubDate>Tue, 09 Nov 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A while ago I mentioned &lt;a href=&quot;http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html&quot;&gt;GmailFS&lt;/a&gt;. I still have not had a chance to try it, but now that I use Linux at work there&apos;s even more reason to give it a shot.&lt;/p&gt;
&lt;p&gt;A similar tool now exists for Windows users: &lt;a href=&quot;http://www.viksoe.dk/code/gmail.htm&quot;&gt;GMail Drive&lt;/a&gt;. Definitely worth a look.&lt;/p&gt;
&lt;p&gt;I wonder how much effort Google will put into disabling these tools. I guess it depends on how much they catch on. Apparently they have already modified their login procedures, breaking a previous version of GMail Drive. It certainly would not be wise to rely on Gmail storage for anything other than email, but it could be convenient as a temporary transfer mechanism. Then again, so is CD-R or USB Thumbdrives...&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Disappointed in Linux</title><link>https://www.digitalhobbit.com/legacy/2004/11/08/linux-disappointment/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/11/08/linux-disappointment/</guid><description>At my new job, development is done on Linux workstations. In many ways this is great, as I enjoy the power of Unix. Unfortunately, the experience has not nearly been as smooth as I would have hoped...</description><pubDate>Mon, 08 Nov 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;At my new job, development is done on Linux workstations. In many ways this is great, as I enjoy the power of Unix. Unfortunately, the experience has not nearly been as smooth as I would have hoped...&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;I have used Linux on and off for the past 9 years, starting with a very early, floppy disk-based SUSE distribution (they were already popular back in Germany at the time) with a crappy (compared to today&apos;s standards) installer. Back in college, I did some C++ / OpenGL programming on Linux as part of my thesis. This was convenient because it allowed me to develop at home on Linux and then run the application on the university computer lab&apos;s Solaris and SGI workstations. Back in those days, most Linux deployments used a simple window manager like fwvm, and complete desktops like KDE or Gnome were just starting to come out and not ready for prime time. I was always impressed by how much more responsive Linux was, and how much faster it seemed because of this, even though my system at the time was a lousy Pentium-100. The multitasking was great, switching between virtual desktops was virtually instantaneous, etc.&lt;/p&gt;
&lt;p&gt;Today, desktops like Gnome and KDE have become the standard. At work, we use Redhat Enterprise Linux 3.0, which defaults to Gnome. Overall, the Gnome desktop is pretty decent, with Windows-like functionality including a start menu, task bar, file manager, etc. Unfortunately, it is extremely sluggish, even on my 3Ghz dual processor machine. I tend to have Ximian Evolution open on one virtual desktop, Eclipse on another one, as well as a few terminal windows and Firefox browsers. Switching between virtual desktops is no longer instantaneous. Even on the same virtual desktop, bringing a window into the foreground often takes several seconds. Needless to say, this destroys a lot of the productivity gains that a Unix environment would otherwise yield.&lt;/p&gt;
&lt;p&gt;I am not sure if the culprit is Gnome, or if it is Firefox or Eclipse. I know that Eclipse is not exactly lean, so I am not all that surprised that it behaves a little sluggishly. But the overall desktop should be a lot more responsive. And as nice as Gnome looks, I actually don&apos;t use all that many features. For example, I rarely use the Nautilus file manager. I guess this is because I was used to doing all file management from the shell in Linux, and old habits die hard. I think I&apos;ll try switching to a lean window manager without the full desktop support that Gnome or KDE offer. If this fixes my performance issues, this is a price I&apos;d be willing to pay. In the past, I&apos;ve had good experiences with &amp;#x3C;a href=&quot;&lt;a href=&quot;http://fluxbox.sourceforge.net/%3EFluxbox&quot;&gt;http://fluxbox.sourceforge.net/&gt;Fluxbox&lt;/a&gt;, which I have successfully used on an ancient laptop that couldn&apos;t quite handle Gnome.&lt;/p&gt;
&lt;p&gt;On top of my performance issues, I&apos;ve hit a few other snags. Most of these are related to software installation and updates. My system came with Ximian Evolution 1.4, which I wanted to upgrade to 2.0 to take advantage of some of the new features in this release. In theory, upgrades should be straightforward now that packages are managed using RPM. Unfortunately, that&apos;s not quite the case. In case of Evolution, I ran into many unresolved dependencies, and after chasing and installing or upgrading one missing package after the other, I eventually gave up after wasting several hours.&lt;/p&gt;
&lt;p&gt;A similar thing happened today when I tried to install Bluetooth support on my machine. Even though it is already included in my kernel, installing the user space applications (&lt;a href=&quot;http://usefulinc.com/software/gnome-bluetooth&quot;&gt;Gnome Bluetooth&lt;/a&gt;) proved to be a painful experience. I was eventually able to install the binary RPM, but the application still gives me an error message when I try to start it. I also tried to compile the source distribution, without success. &quot;./configure&quot; completes fine (at least after I installed several missing packages), but &quot;make&quot; craps out with an error message. Again, I have wasted several hours on this.&lt;/p&gt;
&lt;p&gt;If I add up the time that I wasted trying to configure Linux, I have cost my company a fair amount of money. Probably enough to pay for a Windows license... If licensing fees are the only reason to choose Linux over Windows, I am not sure the payoff is really worth it. Therefore, I am still very spectical about Linux as a Windows replacement. I am very confident in Linux as a server operating system, and I think it is great for hardcore users who don&apos;t mind fiddling with their system. But I think we&apos;re a long way from widespread adoption of Linux as an enterprise desktop system.&lt;/p&gt;</content:encoded><category>linux</category><category>technology</category></item><item><title>Eclipse Shortcomings</title><link>https://www.digitalhobbit.com/legacy/2004/11/07/eclipse-shortcomings/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/11/07/eclipse-shortcomings/</guid><description>In the last 4 months or so, I have made several posts on Eclipse, which I had started to use at my previous job. Overall, my experience with Eclipse up to now had been fairly positive, with the exception of some minor quirks. Unfortunately, this has changed significantly in the last two weeks, at my new job. At my previous job, our applications were built on top of J2EE, but we did not use JSP. Instead, our Struts actions generated XML output which was then rendered into HTML using XSLT templates. Therefore, I never even realized that Eclipse does not support JSP out of the box. It does not even provide syntax highlighting!</description><pubDate>Sun, 07 Nov 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the last 4 months or so, I have made several posts on Eclipse, which I had started to use at my previous job. Overall, my experience with Eclipse up to now had been fairly positive, with the exception of some minor quirks. Unfortunately, this has changed significantly in the last two weeks, at my new job.&lt;/p&gt;
&lt;p&gt;At my previous job, our applications were built on top of J2EE, but we did not use JSP. Instead, our Struts actions generated XML output which was then rendered into HTML using XSLT templates. Therefore, I never even realized that Eclipse does not support JSP out of the box. It does not even provide syntax highlighting!&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;At my new job (as well as most other J2EE projects, I assume), we do use JSP pages, and being able to edit those using the same convenience features that I enjoy when working with other Java code (syntax highlighting, auto completion, etc.) is an absolute requirement for me. It looks like web application and JSP support is within the scope of the &lt;a href=&quot;http://eclipse.org/webtools/index.html&quot;&gt;Eclipse Web Tools Platform Project&lt;/a&gt;. Unfortunately, the charter of this project, as well as the downloadable packages and other information on this project, are extremely confusing to me. Part of this is due to the generic nature of Eclipse, which tries to be much more than just a Java IDE. For example, the first milestone release is now available, and while the website mentions that this includes both WST (Web Standard Tools) and JST (J2EE Standard Tools), it is unclear to me whether this release already contains everything that is needed in order to edit JSPs within Eclipse. This is further complicated by the fact that the &lt;a href=&quot;http://download.eclipse.org/webtools/downloads/&quot;&gt;Eclipse Web Tools download site&lt;/a&gt; contains several &quot;Initial Code Contributions&quot;, from IBM, ObjectWeb, and Genuitec. I am not sure if these need to be installed in addition to the core package, or if these are now obsolete. The fact that no dates are presented for these contributions doesn&apos;t help... The downloaded archives seem to contain different packages (that live under the contributor&apos;s namespace) than the core web tools package, but it is possible that the code was just rolled into the new Eclipse packages.&lt;/p&gt;
&lt;p&gt;So far, I have been unable to get JSP support working in Eclipse. I have tried only installing the core web tools package, as well as additionally installing the Genuitec updated IBM contribution. After the latter step, I now have some duplicated tabs in my preferences (for example a second &quot;Server&quot; entry in my project properties), which leads me to believe that either of the contributions are mutually exclusive with the core web tools package. I have been able to create a web project (a new type of project that is now available) and point it to my Tomcat server, but JSP support still does not work.&lt;/p&gt;
&lt;p&gt;I would appreciate any comments on how to get this working. Personally, I feel that it is unacceptable for any Java IDE (open source or commercial) to not support at least basic web application functionality such as JSP editing. I don&apos;t care about EJB and deployment support (which Ant is better suited for anyway). I could also understand some restrictions in the JSP support, for example lack of auto completion for tag libraries. But to not even support syntax highlighting for JSP pages is very lame. Don&apos;t get me wrong - I appreciate everybody&apos;s efforts on Eclipse and recognize the tremendous work that has been done, but the priorities appear to be a little off. As far as I know, the vast majority of all Java projects are server-side, and I assume that almost all of these involve JSP. Either integrating this functionality into the core IDE or making it very easy to install this functionality by means of a plugin should be a top priority.&lt;/p&gt;
&lt;p&gt;Until I get this working, I guess I&apos;ll have to switch to JEdit, which at least gives me basic JSP support including syntax highlighting. I may have to talk my boss into buying me an IntelliJ IDEA license after all (or rather upgrading my IDEA 3.0 license to 4.5)...&lt;/p&gt;
&lt;p&gt;A similar shortcoming is Eclipse&apos;s lack of support for XML. Luckily, this is easily resolved by installing the free version of &lt;a href=&quot;http://xmlbuddy.com/&quot;&gt;XML Buddy&lt;/a&gt;, which contains the most important XML editing functionality. In fact, the Pro version, which adds much improved support for XML Schema and XSLT, only costs $35. I may very well suggest this purchase as well, as it would be useful when working with XML Schema, and only costs about one tenth of the more sophisticated &lt;a href=&quot;http://www.xmlspy.com/&quot;&gt;XML Spy&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Job Update</title><link>https://www.digitalhobbit.com/legacy/2004/11/07/job-update/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/11/07/job-update/</guid><description>The first two weeks at my new job have passed very quickly. I am still very happy and confident that I have made the right choice. The people are smart and pretty easy to get along with, both on my team and in the rest of the company (at least as far as I can tell so far).</description><pubDate>Sun, 07 Nov 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The first two weeks at my new job have passed very quickly. I am still very happy and confident that I have made the right choice. The people are smart and pretty easy to get along with, both on my team and in the rest of the company (at least as far as I can tell so far). I attended the first bi-weekly company meeting on Friday and was reminded of the fact that we are still a small startup, where the CEO updates the company every week or two, the entire company discusses new products, shares other news, etc. It&apos;s been about 5 years since I last worked in a similar environment.&lt;/p&gt;
&lt;p&gt;In terms of the actual work, I wasn&apos;t disappointed either. Besides getting up to speed on the existing software, in the last two weeks my work consisted of implementing a few new features, fixing a few bugs, and doing some research on potential technologies and architectures for an upcoming project. This is a nice mix of responsibilities. Of course I spent some time setting up my Linux work environment as well. I have some thoughts on that as well, which I will blog about in a separate post. The collaboration is good, we have had several brainstorming sessions, and engineers are very involved in the actual product design. We have many exciting products in the pipeline, and I am glad that I am in the mobile industry at this point in time. I believe that the killer app for the mobile space has yet to be invented, and it sure would be nice if we could play that role.&lt;/p&gt;
&lt;p&gt;I am also positively surprised by how well our development processes appear to work, particularly for a company this young. We have a solid build process with nightly builds, a good deployment process, pretty good unit test coverage, various CVS statistics on the intranet, etc.&lt;/p&gt;
&lt;p&gt;For now, I think I&apos;ll shut up about my job and continue to blog about technology and other topics.&lt;/p&gt;</content:encoded><category>work</category></item><item><title>More info on JSP support for Eclipse</title><link>https://www.digitalhobbit.com/legacy/2004/11/07/more-info-on-jsp-support-for-eclipse/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/11/07/more-info-on-jsp-support-for-eclipse/</guid><description>This is a follow-up to my previous posting on several Eclipse shortcomings, mostly regarding JSP support. As I was confused by the relationship between the official M1 release of the Eclipse Web Tools Platform Project and the various initial contributions, I did a little more research on this. It turns out that quite a few people on the Eclipse newsgroups had the same question...</description><pubDate>Sun, 07 Nov 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a follow-up to my previous posting on several Eclipse shortcomings, mostly regarding JSP support. As I was confused by the relationship between the official M1 release of the &lt;a href=&quot;http://eclipse.org/webtools/index.html&quot;&gt;Eclipse Web Tools Platform Project&lt;/a&gt; and the various initial contributions, I did a little more research on this.&lt;/p&gt;
&lt;p&gt;It turns out that quite a few people on the Eclipse newsgroups had the same question... The initial contributions (IBM and Lomboz) are now obsolete and will be replaced by the WTP. However, the M1 release only contains very basic functionality and most importantly does not include JSP editing support. In fact, according to the &lt;a href=&quot;http://www.eclipse.org/webtools/development/planning/milestone_plan_1_0.html&quot;&gt;WTP Milestone Plan&lt;/a&gt;, support for editing and debugging is only a medium priority for the M2 release (scheduled for December 22) and a high priority for the M3 release (February 25).&lt;/p&gt;
&lt;p&gt;The initial focus appears to be on server support, which I think is a big mistake. All of these things are already possible by using Ant, which integrates nicely with Eclipse. Editing JSPs on the other hand requires the use of a third party editor until this functionality is made available in Eclipse. 4 years ago, this may have been acceptable, but in the last few years the ability to edit all components of a project within the same IDE has become pretty standard, and certainly results in much improved productivity.&lt;/p&gt;
&lt;p&gt;The best course of action in the interm will probably be to uninstall the WTP M1 release and install either the IBM or the Lomboz contribution. If neither works acceptably, I guess I&apos;ll have to go back to editing my JSPs outside of Eclipse, for example using JEdit. Or persuade my boss to buy me an IntelliJ IDEA license... which would be sad in some ways, as I really like many aspects of Eclipse,  and more importantly the idea of relying on open source tools.&lt;/p&gt;
&lt;p&gt;To be continued...&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>First day at new job</title><link>https://www.digitalhobbit.com/legacy/2004/10/25/first-day-at-new-job/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/10/25/first-day-at-new-job/</guid><description>Today was my first day at my new job, and it looks very promising. The company has some great ideas and there are many interesting projects coming up.</description><pubDate>Mon, 25 Oct 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today was my first day at my new job, and it looks very promising. The company has some great ideas and there are many interesting projects coming up. The environment is refreshingly different from my last two companies, partially due to the entirely different space (mobile entertainment and applications), as well as the fact that I am not working on a shrink-wrap product per-se, but on the server-side infrastructure for mobile applications. This is the first company I have worked at that actually uses Linux workstations for development, which is another nice change. All of my previous companies used Windows workstations, although the resulting software was often deployed on Unix (or compatible with both Windows and Unix in case of the enterprise software companies I have worked at). This is also the closest I have come to &lt;a href=&quot;http://www.xprogramming.com/&quot;&gt;Extreme Programming (XP)&lt;/a&gt;. In fact, they consider themselves to use XP, even though (like many of the companies who I have interviewed with) only use select practices. For example, they don&apos;t use Pair Programming, arguably the most unique but also most controversial of the XP practices. They do however have a highly iterative process, involve the whole team in planning each iteration, define and track features in form of stories, put a lot of emphasis on unit tests (even though they don&apos;t use test-first development), generally try to keep things simple, encourage refactoring and collective code ownership, practice continuous integration, and maintain and check coding standards. For a company that is less than a year old, they are also very well organized. They have a nice Wiki-based intranet with many documents that help new developers get started, each developer maintains a blog, etc. Very nice indeed. :)&lt;/p&gt;</content:encoded><category>work</category></item><item><title>Free Wi-Fi coming soon to San Francisco?</title><link>https://www.digitalhobbit.com/legacy/2004/10/23/free-wi-fi-coming-soon-to-san-francisco/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/10/23/free-wi-fi-coming-soon-to-san-francisco/</guid><description>San Francisco Mayor Gavin Newsom has announced plans to establish free Wi-Fi Internet access for everybody in San Francisco. Parts of the city, including Union Square, already offer this service. (via The Wireless Weblog)</description><pubDate>Sat, 23 Oct 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;San Francisco Mayor Gavin Newsom has announced plans to establish &lt;a href=&quot;http://networks.silicon.com/mobile/0,39024665,39125205,00.htm&quot;&gt;free Wi-Fi Internet access for everybody in San Francisco&lt;/a&gt;. Parts of the city, including Union Square, already offer this service.&lt;/p&gt;
&lt;p&gt;(via &lt;a href=&quot;http://wireless.weblogsinc.com/entry/2341471835868803/&quot;&gt;The Wireless Weblog&lt;/a&gt;)&lt;/p&gt;</content:encoded><category>technology</category><category>sfbayarea</category></item><item><title>Introducing The Road to Hibernate</title><link>https://www.digitalhobbit.com/legacy/2004/10/23/introducing-the-road-to-hibernate/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/10/23/introducing-the-road-to-hibernate/</guid><description>Here is a nice tutorial for Hibernate, a Java-based ORM (object-relational mapping) tool. In the last couple of years, I&apos;ve been fairly removed from the database layer, as the applications I have worked on all had some kind of proprietary database abstraction layer, and most of my work was on the application layer above.</description><pubDate>Sat, 23 Oct 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here is &lt;a href=&quot;http://www.gloegl.de/5.html&quot;&gt;a nice tutorial for Hibernate&lt;/a&gt;, a Java-based ORM (object-relational mapping) tool. In the last couple of years, I&apos;ve been fairly removed from the database layer, as the applications I have worked on all had some kind of proprietary database abstraction layer, and most of my work was on the application layer above. It&apos;s likely that I will get closer to the database layer again, and while I am still confident enough in my SQL and JDBC skills, I feel that an ORM tool such as Hibernate can save a lot of time in many cases. In addition, there are portability-related advantages, as ORM should make it a lot easier to migrate from one database to another.&lt;/p&gt;
&lt;p&gt;I have had similar positive experiences with XML object mapping, which eliminates a lot of the tedious manual XML parsing using SAX, DOM, or whichever API you are using.&lt;/p&gt;
&lt;p&gt;Thanks to TheServerSide.com for &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=29524&quot;&gt;the original post&lt;/a&gt;, which also contains a lively discussion about
Hibernate and the pros and cons of ORM in general.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Jarhoo</title><link>https://www.digitalhobbit.com/legacy/2004/10/23/jarhoo/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/10/23/jarhoo/</guid><description>Why hasn&apos;t anybody thought of this before? If you&apos;re a Java developer, I&apos;m sure you&apos;ve often run into class not found exceptions and had a hard time chasing down the missing JAR file. Jarhoo provides a simple search page that can identify the JAR file or package that corresponds to a particular class. Its growing database currently comprises 246344 classes, 2305 JAR files, and 25 applications.</description><pubDate>Sat, 23 Oct 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Why hasn&apos;t anybody thought of this before? If you&apos;re a Java developer, I&apos;m sure you&apos;ve often run into class not found exceptions and had a hard time chasing down the missing JAR file. &lt;a href=&quot;http://www.jarhoo.com&quot;&gt;Jarhoo&lt;/a&gt; provides a simple search page that can identify the JAR file or package that corresponds to a particular class. Its growing database currently comprises 246344 classes, 2305 JAR files, and 25 applications.&lt;/p&gt;
&lt;p&gt;(via &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=29489&quot;&gt;TheServerSide.com&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;It&apos;s simple tools like &lt;a href=&quot;http://www.jarhoo.com&quot;&gt;Jarhoo&lt;/a&gt; and &lt;a href=&quot;http://www.jdocs.org/&quot;&gt;JDocs&lt;/a&gt; that can make a Java developer&apos;s life much easier.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Subversion: Initial Impression</title><link>https://www.digitalhobbit.com/legacy/2004/10/23/subversion-initial-impression/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/10/23/subversion-initial-impression/</guid><description>In the last few days, I have played a little with Subversion. I admit that I&apos;m somewhat of a sucker for configuration management / version control systems. Up to now, I&apos;ve had the opportunity to work with CVS, VSS, StarTeam, and Perforce (I&apos;m not even counting RCS).</description><pubDate>Sat, 23 Oct 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the last few days, I have played a little with &lt;a href=&quot;http://subversion.tigris.org/&quot;&gt;Subversion&lt;/a&gt;. I admit that I&apos;m somewhat of a sucker for configuration management / version control systems. Up to now, I&apos;ve had the opportunity to work with CVS, VSS, StarTeam, and Perforce (I&apos;m not even counting RCS). Out of these tools, the only one I really dislike is VSS, as it its file-based (rather than true client-server) approach severly limits its scalability. CVS, the de-facto standard for open source projects as well as many commercial ones, is certainly a solid tool, but it does have its shortcomings, such as the inability to version folders or to move or rename files. Its branching and merging is also somewhat awkward. StarTeam is my favorite tool in this regard, as its floating branches are extremely powerful in any project that requires maintenance of several major release branches. It also has some great bug tracking and task management features, which can be nicely integrated with the configuration management. Perforce is another very solid configuration management system. I have not had much exposure to its branching and merging features, but I believe that those are handled very similar to CVS. One of the things that sets it apart from similar tools is its support for changelists, which allow truly atomic checkins that are (for example) tied to a particular bugfix. Of course, both StarTeam and Perforce are commercial tools and therefore usually not an option for a startup. And as always there is some great stuff going on in the open source community.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://subversion.tigris.org/&quot;&gt;Subversion&lt;/a&gt; attempts to replace CVS and directly addresses most of its shortcomings, while providing a similar command line interface. A few days ago I have replaced my personal CVS server with a Subversion server, and the process was pretty painless. One of the interesting things about Subversion is its ability to piggy-back on various servers for remote access. It provides a lightweight server of its own, but it can also be used in cojunction with Apache, by using the provided Subversion WebDAV module. There are also a fair amount of Subversion clients available and under development. I have found &lt;a href=&quot;http://tortoisesvn.tigris.org/&quot;&gt;TortoiseSVN&lt;/a&gt; an excellent client for Windows systems. It contains both repository management as well as local Subversion sandbox management functionality. The &lt;a href=&quot;http://subclipse.tigris.org/&quot;&gt;Subclipse&lt;/a&gt; Eclipse plugin also appears to work flawlessly.&lt;/p&gt;
&lt;p&gt;I have not used Subversion enough to comment on its branching and merging features or other advanced functionality, but I can say that it is just as easy to use as CVS with basic operations, and moving or renaming files or folders works as advertised. The underlying concepts are quite different, so make sure to read up on it in the excellent and free (!) O&apos;Reilly &lt;a href=&quot;http://svnbook.org/&quot;&gt;Version control with Subversion&lt;/a&gt; book.&lt;/p&gt;
&lt;p&gt;If you are starting a new project and planning to use CVS, you should strongly consider using Subversion instead. Of course, there are several other free version control tools out there, which you may want to investigate as well. For example, &lt;a href=&quot;http://wiki.gnuarch.org/&quot;&gt;GNU Arch&lt;/a&gt; comes up every once in a while. Here&apos;s a link to a &lt;a href=&quot;http://www.thefreecountry.com/programming/versioncontrol.shtml&quot;&gt;list of free version control tools&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Got a new job!</title><link>https://www.digitalhobbit.com/legacy/2004/10/20/got-a-new-job/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/10/20/got-a-new-job/</guid><description>After a good 5 weeks of interviewing, I finally accepted a job offer. Towards the end, there were three jobs I was very interested in, and for some reason all three job offers came in yesterday. It&apos;s funny how these things work out sometimes... I don&apos;t usually write anything specific about my company on my blog, and I&apos;ll keep it that way for now.</description><pubDate>Wed, 20 Oct 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After a good 5 weeks of interviewing, I finally accepted a job offer. Towards the end, there were three jobs I was very interested in, and for some reason all three job offers came in yesterday. It&apos;s funny how these things work out sometimes...&lt;/p&gt;
&lt;p&gt;I don&apos;t usually write anything specific about my company on my blog, and I&apos;ll keep it that way for now. I will however say that my new job is at an early phase startup in the mobile entertainment industry. I am extremely excited about this opportunity, as I will be able to help build a business in this growing field pretty much from the ground up. My position is on the server side, where I will be able to leverage my Java and J2EE skills, while at the same time being exposed to this new mobile domain, which is a great combination.&lt;/p&gt;
&lt;p&gt;Just wanted to share this little bit of good news. :)&lt;/p&gt;</content:encoded><category>work</category></item><item><title>JustBlogIt Firefox Extension</title><link>https://www.digitalhobbit.com/legacy/2004/10/15/justblogit-firefox-extension/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/10/15/justblogit-firefox-extension/</guid><description>JustBlogIt is a nice little Firefox extension (also works with Mozilla) that adds a right-click menu entry to easily add a blog entry for the current page. The unique thing about it is that it also supports many web based news aggregators, such as Bloglines.</description><pubDate>Fri, 15 Oct 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://blog.warmbrain.com/justblogit/&quot;&gt;JustBlogIt&lt;/a&gt; is a nice little Firefox extension (also works with Mozilla) that adds a right-click menu entry to easily add a blog entry for the current page. The unique thing about it is that it also supports many web based news aggregators, such as &lt;a href=&quot;http://www.bloglines.com&quot;&gt;Bloglines&lt;/a&gt;. You simply have to right-click on the entry you wish to blog about, and JustBlogIt will automatically insert the correct title and link in the blog form. This works surprisingly well. Nice!&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>Google Desktop</title><link>https://www.digitalhobbit.com/legacy/2004/10/14/google-desktop/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/10/14/google-desktop/</guid><description>Another very interesting new (beta) Google service: Google Desktop. This allows users to search through files as well as emails on their desktops, and sounds pretty promising.</description><pubDate>Thu, 14 Oct 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Another very interesting new (beta) Google service: &lt;a href=&quot;http://desktop.google.com/&quot;&gt;Google Desktop&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This allows users to search through files as well as emails on their desktops, and sounds pretty promising.&lt;/p&gt;</content:encoded><category>websites</category></item><item><title>Google Print</title><link>https://www.digitalhobbit.com/legacy/2004/10/14/google-print/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/10/14/google-print/</guid><description>Google added a new service called Google Print. Very similar to Amazon&apos;s search within books feature, Google now includes search results from select books (try this sample query). It allows access to matching pages of the book, as well as the two pages before and after. Of course, it also includes links to online bookstores that carry the book, including Amazon. Nice addition!</description><pubDate>Thu, 14 Oct 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Google added a new service called &lt;a href=&quot;http://print.google.com/&quot;&gt;Google Print&lt;/a&gt;. Very similar to Amazon&apos;s search within books feature, Google now includes search results from select books (try &lt;a href=&quot;http://www.google.com/search?hl=en&amp;#x26;lr=&amp;#x26;q=books+about+web+services&amp;#x26;btnG=Search&quot;&gt;this sample query&lt;/a&gt;). It allows access to matching pages of the book, as well as the two pages before and after. Of course, it also includes links to online bookstores that carry the book, including Amazon.&lt;/p&gt;
&lt;p&gt;Nice addition!&lt;/p&gt;</content:encoded><category>websites</category></item><item><title>Laszlo</title><link>https://www.digitalhobbit.com/legacy/2004/10/14/laszlo/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/10/14/laszlo/</guid><description>There appears to be some buzz about a technology called Laszlo right now. Laszlo is an XML-based scripting language that is compiled to Flash, and therefore provides a nice and easy way of writing Flash applications. Laszlo has just been made available as open source. Definitely worth a look. BoingBoing posting Discussion at Lambda the Ultimate Laszlo Homepage</description><pubDate>Thu, 14 Oct 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There appears to be some buzz about a technology called &lt;a href=&quot;http://www.laszlosystems.com/&quot;&gt;Laszlo&lt;/a&gt; right now. Laszlo is an XML-based scripting language that is compiled to Flash, and therefore provides a nice and easy way of writing Flash applications. Laszlo has just been made available as open source. Definitely worth a look.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.boingboing.net/2004/10/07/open_source_noplugin.html&quot;&gt;BoingBoing posting&lt;/a&gt;
&lt;a href=&quot;http://lambda-the-ultimate.org/node/view/303&quot;&gt;Discussion at Lambda the Ultimate&lt;/a&gt;
&lt;a href=&quot;http://www.laszlosystems.com/&quot;&gt;Laszlo Homepage&lt;/a&gt;&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Job Hunt and Fable...</title><link>https://www.digitalhobbit.com/legacy/2004/10/08/lack-of-updates/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/10/08/lack-of-updates/</guid><description>Please excuse the recent lack of updates on my blog. This has several reasons: I am currently seeking a new job, which takes a fair amount of time. (On that note, if you know of a challenging opportunity as a Lead Software Engineer or Software Engineering Manager, please leave a comment). As I mentioned in my previous post, I bought an Xbox...</description><pubDate>Fri, 08 Oct 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Please excuse the recent lack of updates on my blog. This has several reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;I am currently seeking a new job, which takes a fair amount of time. (On that note, if you know of a challenging opportunity as a Lead Software Engineer or Software Engineering Manager, please leave a comment).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;As I mentioned in my previous post, I bought an Xbox... I spent the first few weeks playing with a few mods (upgrading the harddrive, etc.), and have to say that this is a great piece of equipment - certainly for $150. Lately, most of my spare  time has been sucked away by &lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/B0002IZICK/digitalhobbit-20?dev-t=mason-wrapper%26camp=2025%26link_code=xm2&quot;&gt;Fable&lt;/a&gt;. If you like action-oriented RPGs, you&apos;ll love Fable. In addition to the basic elements of this genre, it clearly bears Peter Molyneux&apos; handwriting, with a highly unique character development and reputation system. It also offers great open-ended gameplay, and you can choose a truly good or evil path, or anything in between.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</content:encoded><category>games</category><category>work</category></item><item><title>Bought an Xbox</title><link>https://www.digitalhobbit.com/legacy/2004/09/14/bought-an-xbox/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/09/14/bought-an-xbox/</guid><description>For various reasons, after using computers (and playing computer games) for 20 years now, I have finally decided to give in and buy a game console. Perhaps the main reason is that I&apos;m fed up with the constant upgrades that are required in order to be able to enjoy the latest PC games.</description><pubDate>Tue, 14 Sep 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For various reasons, after using computers (and playing computer games) for 20 years now, I have finally decided to give in and buy a game console. Perhaps the main reason is that I&apos;m fed up with the constant upgrades that are required in order to be able to enjoy the latest PC games. The console hardware only changes when a new version is released every 5 years or so, and in the mean time all games written for this console can be expected to perform well and take advantage of all the available features that the hardware offers. Individual games don&apos;t have to be tweaked in order to run well on the particular hardware, as is often the case with PC games and certain video cards.&lt;/p&gt;
&lt;p&gt;Another enabling factor is the fact that I have a kids now, which means that I rarely have more than 30 minutes at a time to spare. While I used to love highly immersive games such as RPGs or even MMRPGs, which are generally better on PCs, I now tend to favor more action-oriented games, which provide more immediate gratification. Plenty of those games exist on the current generation consoles. Even better, it looks like there&apos;s a fair amount of good RPGs and adventure games. While the complexity of these games may not quite be the same as on the PC, I&apos;m sure it will be good enough.&lt;/p&gt;
&lt;p&gt;After looking at the differences between the Xbox and the Playstation (I&apos;m not an expert on either, since I pretty much ignored this market up to now), I decided to go with the Xbox, which appears to be a higher-end machine. Of course, this adds another hackable machine to my household (in addition to the TiVo, which I already hacked a few months ago). :)&lt;/p&gt;
&lt;p&gt;Here are some Xbox modding notes on my Wiki.&lt;/p&gt;</content:encoded><category>games</category></item><item><title>Eclipse vs. other IDEs</title><link>https://www.digitalhobbit.com/legacy/2004/09/11/eclipse-vs-other-ides/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/09/11/eclipse-vs-other-ides/</guid><description>IBM has published a series of articles that compare Eclipse to various other IDEs. The three articles are titled &quot;Migrating to Eclipse...&quot;, which makes it pretty clear that there is an obvious bias towards Eclipse. Nevertheless, if you are familiar with one of the other IDEs, this might be a worthwhile read. Eclipse vs. IntelliJ IDEA Eclipse vs. JBuilder Foundation Eclipse vs.</description><pubDate>Sat, 11 Sep 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;IBM has published a series of articles that compare Eclipse to various other IDEs. The three articles are titled &quot;Migrating to Eclipse...&quot;, which makes it pretty clear that there is an obvious bias towards Eclipse. Nevertheless, if you are familiar with one of the other IDEs, this might be a worthwhile read.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www-106.ibm.com/developerworks/library/os-ecidea/?ca=dnt-536&quot;&gt;Eclipse vs. IntelliJ IDEA&lt;/a&gt;
&lt;a href=&quot;http://www-106.ibm.com/developerworks/library/os-ecjbuild/?ca=dnt-536&quot;&gt;Eclipse vs. JBuilder Foundation&lt;/a&gt;
&lt;a href=&quot;http://www.ibm.com/developerworks/library/os-ecnbeans/&quot;&gt;Eclipse vs. Netbeans&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Personally, I&apos;m still torn between IntelliJ IDEA and Eclipse. I have evaluated Eclipse for the past 6 weeks or so, and overall I&apos;m pretty impressed with it. It does however have a few quirks, particularly when it comes to CVS or Ant integration, and generally is not quite as polished as IDEA (except for the very nice UI).&lt;/p&gt;
&lt;p&gt;If I had a license for IntelliJ IDEA 4.0, I would probably go with this. My somewhat dated IDEA 3.0 license makes this a tougher choice. Even though this is still a great IDE, Eclipse is a lot newer and has a few advanced features. Most importantly, it has a great plugin architecture, with many useful plugins available for free from third party developers. This makes it very powerful. I believe that the upcoming patch release is going to address many of the bugs in the final 3.0 release, which will make Eclipse an even better choice.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>JRuby</title><link>https://www.digitalhobbit.com/legacy/2004/09/11/jruby/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/09/11/jruby/</guid><description>IBM has published another article in their alt.lang.jre series, this time on JRuby. JRuby is a pure Java implementation of the Ruby language. Ruby is often described as an object-oriented scripting language, and it combines the pure OO features of Smalltalk with powerful scripting features along the lines of Perl or Python.</description><pubDate>Sat, 11 Sep 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;IBM has published another article in their alt.lang.jre series, this time on &lt;a href=&quot;http://www-106.ibm.com/developerworks/library/j-alj09084/?ca=dnt-536&quot;&gt;JRuby&lt;/a&gt;. JRuby is a pure Java implementation of the &lt;a href=&quot;http://www.ruby-lang.org&quot;&gt;Ruby&lt;/a&gt; language. Ruby is often described as an object-oriented scripting language, and it combines the pure OO features of Smalltalk with powerful scripting features along the lines of Perl or Python.&lt;/p&gt;
&lt;p&gt;I have used various scripting languages (mostly Perl and Ruby) here and there, but never long enough to really become proficient in any of them. I have been planning on learning Ruby for a while, and with the availability of JRuby, it now becomes a powerful extension mechanism for Java, and learning it would definitely be a worthwhile investment.&lt;/p&gt;
&lt;p&gt;Of course, &lt;a href=&quot;http://groovy.codehaus.org/&quot;&gt;Groovy&lt;/a&gt; is a strong contender as well, and in fact it borrows many features from Ruby. It seems to have a slight edge when it comes to Java integration, but can be used as a standalone scripting language as well. Then again, Ruby has the advantage that it is more lightweight as it does not require a JVM (unless of course you want to use JRuby).&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Wikipedia</title><link>https://www.digitalhobbit.com/legacy/2004/09/01/wikipedia-reputation/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/09/01/wikipedia-reputation/</guid><description>Interesting article on the recent Wikipedia controversies. Have I mentioned how much I love Wikipedia? So far, I have always been able to find the information that I was looking for, including somewhat obscure topics and highly technical or computer-geeky information. Like most Wiki sites, Wikipedia has a very simple and clean design and is easy to navigate. Try visiting a random Wikipedia page today. :)</description><pubDate>Wed, 01 Sep 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Interesting article on the recent &lt;a href=&quot;http://www.corante.com/many/archives/2004/08/29/wikipedia_reputation_and_the_wemedia_project.php&quot;&gt;Wikipedia controversies&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Have I mentioned how much I love &lt;a href=&quot;http://en.wikipedia.org/wiki/Main_Page&quot;&gt;Wikipedia&lt;/a&gt;? So far, I have always been able to find the information that I was looking for, including somewhat obscure topics and highly technical or computer-geeky information. Like most Wiki sites, Wikipedia has a very simple and clean design and is easy to navigate.&lt;/p&gt;
&lt;p&gt;Try visiting a &lt;a href=&quot;http://en.wikipedia.org/wiki/Special:Randompage&quot;&gt;random Wikipedia page&lt;/a&gt; today. :)&lt;/p&gt;</content:encoded><category>websites</category></item><item><title>What to do with all that Gmail storage space?</title><link>https://www.digitalhobbit.com/legacy/2004/08/29/what-to-do-with-all-that-gmail-storage-space/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/29/what-to-do-with-all-that-gmail-storage-space/</guid><description>I don&apos;t have a Gmail account, but if I ever get one (*on that note, please feel free to leave a comment in case you have a spare Gmail invitation :)*), I&apos;ll be sure to try GmailFS. GmailFS turns your 1 GB Gmail account into a Linux-mountable filesystem.</description><pubDate>Sun, 29 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I don&apos;t have a Gmail account, but if I ever get one (&lt;em&gt;on that note, please feel free to leave a comment in case you have a spare Gmail invitation :)&lt;/em&gt;), I&apos;ll be sure to try &lt;a href=&quot;http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html&quot;&gt;GmailFS&lt;/a&gt;. GmailFS turns your 1 GB Gmail account into a Linux-mountable filesystem. I&apos;m not sure how useful this would actually be for me, as I only use Linux at home and therefore would not be able to access my files from the office, for example. Still, this is a very clever idea. I wonder if Google will attempt to crack down on this creative use of its email service...&lt;/p&gt;
&lt;p&gt;(via &lt;a href=&quot;http://www.boingboing.net/2004/08/29/turn_gmail_storage_i.html&quot;&gt;BoingBoing&lt;/a&gt;)&lt;/p&gt;</content:encoded><category>linux</category><category>technology</category></item><item><title>Groovy: initial impression</title><link>https://www.digitalhobbit.com/legacy/2004/08/28/groovy-initial-impression/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/28/groovy-initial-impression/</guid><description>I just spent an hour playing with Groovy, and I have to say that it is very promising. I have not experimented a whole lot with the actual Groovy syntax, but based on what I have read as well as on my limited experiments, Groovy is a nice mixture of popular scripting languages such as Ruby or Python, but geared towards Java programmers.</description><pubDate>Sat, 28 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just spent an hour playing with &lt;a href=&quot;http://groovy.codehaus.org/&quot;&gt;Groovy&lt;/a&gt;, and I have to say that it is very promising. I have not experimented a whole lot with the actual Groovy syntax, but based on what I have read as well as on my limited experiments, Groovy is a nice mixture of popular scripting languages such as Ruby or Python, but geared towards Java programmers. The syntax borrows many useful elements from other scripting elements but remains similar enough to Java to enable Java developers to easily learn this language. Most importantly, it provides full access to the Java class library and therefore does not require Java developers to learn yet another proprietary class library.&lt;/p&gt;
&lt;p&gt;Groovy is extremely easy to embed into Java applications, and I am sure this will come in handy. One obvious application of this feature are computer games, which often utilize an embedded scripting language to control the behavior.&lt;/p&gt;
&lt;p&gt;One thing I have always been interested in, even though I never ended up actually doing it (like so many things), is to write an RPG, such as a &lt;a href=&quot;http://en.wikipedia.org/wiki/MUD&quot;&gt;MUD&lt;/a&gt; or a &lt;a href=&quot;http://en.wikipedia.org/wiki/Roguelike&quot;&gt;Roguelike&lt;/a&gt;. If I was to start on such a project now, I would definitely use Groovy as the embedded scripting language. One main application for Groovy in this context would be the behavior of NPCs or certain objects. The way I envision this, objects and NPCs should be data driven, and they might be defined in XML files. Such an XML file might look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;npc id=&quot;grompf&quot; class=&quot;Orc&quot;&gt;
  &amp;#x3C;name&gt;Grompf&amp;#x3C;/name&gt;
  &amp;#x3C;description&gt;An ugly looking, smelly guy&amp;#x3C;description&gt;
  &amp;#x3C;stats&gt;
    &amp;#x3C;hp&gt;40&amp;#x3C;/hp&gt;
    &amp;#x3C;str&gt;19&amp;#x3C;/str&gt;
    ... other stats ...
  &amp;#x3C;/stats&gt;
  &amp;#x3C;behavior&gt;
    &amp;#x3C;on-sight&gt;[groovy script goes here]&amp;#x3C;/on-sight&gt;
    &amp;#x3C;on-attack&gt;[groovy script goes here]&amp;#x3C;/on-attack&gt;
    ... other behavior ...
  &amp;#x3C;/behavior&gt;
&amp;#x3C;/npc&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The game engine would parse this XML file, instantiate a new object of type Orc (which itself might be defined in an XML file and might inherit from a Java class called Monster), and set the specified stats as well as the Groovy event handlers. Unspecified properties or event handlers would inherit from the parent class, such as Orc in this case.&lt;/p&gt;
&lt;p&gt;Anyway, at this point I&apos;m getting away from the original topic and more into game design, so I&apos;ll leave it at this for now. :)&lt;/p&gt;
&lt;p&gt;Definitely worth playing with.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Converting to Linux</title><link>https://www.digitalhobbit.com/legacy/2004/08/26/converting-to-linux/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/26/converting-to-linux/</guid><description>I originally wanted to call this post (or series of posts) &quot;Patterns of Home Computing&quot; and provide a lot more background on how I use my various computers at home. However, as I really need to catch some sleep I will keep this initial posting reasonably short. About 2 months ago, I have bought two new laptops for me and my wife.</description><pubDate>Thu, 26 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I originally wanted to call this post (or series of posts) &quot;Patterns of Home Computing&quot; and provide a lot more background on how I use my various computers at home. However, as I really need to catch some sleep I will keep this initial posting reasonably short.&lt;/p&gt;
&lt;p&gt;About 2 months ago, I have bought two new laptops for me and my wife. I am running Windows XP on my laptop, which I mostly use for Email, web browsing, Microsoft Office, and some occasional programming. With a wireless network, it&apos;s great to be able to do these kinds of things from anywhere in the house, and it has changed the way I use my computers.&lt;/p&gt;
&lt;p&gt;My main desktop PC is an OK but slightly outdated Athlon-1800, on which I have been running Windows XP up to now as well. Now that I have a Windows-based laptop that I use for all of my office-type work, I am planning to make Linux the primary OS on my desktop. In fact, I installed Fedora Core 2 on a spare partition a couple of days ago, and now I am in the process of slowly installing all the applications I need and configuring my system.&lt;/p&gt;
&lt;p&gt;There are many different things that I like to do with my PC, for some of which Linux still is not ideally suited (such as games, even though the situation has improved tremendously since the last time I was seriously running Linux, about 6 years ago). Part of this has to do with lack of driver support (for example I have an ATI Radeon 9800 Pro, for which 3D-accelerated drivers don&apos;t exist yet for XFree86 4.4).&lt;/p&gt;
&lt;p&gt;I won&apos;t go into all the specifics here. Instead, I have setup a Wiki page on Converting to Linux. I just added some initial information on ATI driver support and games, and I will expand on this in the next few days to cover other topics of relevance (for me, anyways), such as NTFS support, various other types of applications (media players, music software), etc.&lt;/p&gt;</content:encoded><category>linux</category><category>technology</category></item><item><title>PC Games / Linux / Consoles</title><link>https://www.digitalhobbit.com/legacy/2004/08/26/pc-games-linux-consoles/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/26/pc-games-linux-consoles/</guid><description>As I mentioned in my previous posting, I am currently in the process of converting my main desktop from Windows XP to Linux. One of the main things I know I will struggle with (unless I just give up and live with an annoying dual-boot situation) is support for computer games. In many ways I am sick of PC gaming anyway. Don&apos;t get me wrong: I still love computer games.</description><pubDate>Thu, 26 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I mentioned in my previous posting, I am currently in the process of converting my main desktop from Windows XP to Linux. One of the main things I know I will struggle with (unless I just give up and live with an annoying dual-boot situation) is support for computer games.&lt;/p&gt;
&lt;p&gt;In many ways I am sick of PC gaming anyway. Don&apos;t get me wrong: I still love computer games. The only thing I am increasingly annoyed with are the constant upgrades that are required in order to be able to run the latest games, as well as the amount of tweaking that is often necessary to get a game working acceptably using particular hardware (particularly the video card, ATI Radeon 9800 Pro in my case).&lt;/p&gt;
&lt;p&gt;Ultimately, I am probably going to give in soon and buy a console, such as a PS2 or an XBox. While the hardware may be lagging behind my desktop, it is at least getting fully utilized as the game developers don&apos;t have to deal with all these compatibility layers and can focus on a specific hardware configuration instead. Overall, the games don&apos;t seem to look too bad.&lt;/p&gt;
&lt;p&gt;Another thing that has kept me from switching to a console so far is the type of games, compared to PC games. In the past, I was mostly interested in adventure and RPG games. While I still love those games, in reality I hardly have time for these kinds of games any more, with two kids, a house, and a job. These days, I tend to stick with more action-oriented games, such as first person shooters. I also enjoy playing online (although I don&apos;t do it as often these days), but as far as I am aware there are decent online gaming solutions for the major consoles.&lt;/p&gt;
&lt;p&gt;Just ranting, I guess... The bottom line is that lack of game support under Linux may not be a major issue for me going forward. Of course, I have a fairly large amount of games that I would like to be able to continue to play, so it would be nice if I could get those running on Linux in the interim.&lt;/p&gt;
&lt;p&gt;I guess it&apos;s time to start doing my research on whether to get a PS2 or an XBox, or even whether to hold off until the next generation of consoles comes out.&lt;/p&gt;</content:encoded><category>games</category></item><item><title>JUnit / New Instance</title><link>https://www.digitalhobbit.com/legacy/2004/08/24/junit-new-instance/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/24/junit-new-instance/</guid><description>Martin Fowler shares some thoughts on JUnit, mostly about why JUnit instantiates a new instance of the test class for each test case. As usual, he has some good points. The posting also contains some information on JUnit&apos;s TestSetup feature, which allows several test cases to share a single setup and teardown routine.</description><pubDate>Tue, 24 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Martin Fowler &lt;a href=&quot;http://martinfowler.com/bliki/JunitNewInstance.html&quot;&gt;shares some thoughts on JUnit&lt;/a&gt;, mostly about why JUnit instantiates a new instance of the test class for each test case. As usual, he has some good points. The posting also contains some information on JUnit&apos;s TestSetup feature, which allows several test cases to share a single setup and teardown routine.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Companies blocking BitTorrent</title><link>https://www.digitalhobbit.com/legacy/2004/08/22/companies-blocking-bittorrent/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/22/companies-blocking-bittorrent/</guid><description>This BoingBoing entry mentions a new product designed to block BitTorrent packets. Apparently the developer (Akonix) is getting companies to buy and deploy this product by spreading lies about the BitTorrent application and protocol, saying that it causes users to inadvertently share sensitive files. Sounds like a silly product in the first place, as a few simple firewall rules would accomplish the same feat.</description><pubDate>Sun, 22 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This BoingBoing entry mentions a new &lt;a href=&quot;http://www.boingboing.net/2004/08/22/antibittorrent_snake.html&quot;&gt;product designed to block BitTorrent&lt;/a&gt; packets. Apparently the developer (Akonix) is getting companies to buy and deploy this product by spreading lies about the BitTorrent application and protocol, saying that it causes users to inadvertently share sensitive files.&lt;/p&gt;
&lt;p&gt;Sounds like a silly product in the first place, as a few simple firewall rules would accomplish the same feat.&lt;/p&gt;
&lt;p&gt;Anyway, I wish I only had to worry about BitTorrent being blocked. My employer is getting so damn paranoid these days that virtually any software is now prohibited, including instant messaging applications like Yahoo Messenger... :(&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Freeware Suggestions for Windows</title><link>https://www.digitalhobbit.com/legacy/2004/08/18/freeware-suggestions-for-windows/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/18/freeware-suggestions-for-windows/</guid><description>Here is a nice article on Freeware suggestions under Windows. A lot of good stuff in there, as well as in the comments.</description><pubDate>Wed, 18 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here is a nice article on &lt;a href=&quot;http://www.osnews.com/story.php?news_id=8072&quot;&gt;Freeware suggestions under Windows&lt;/a&gt;. A lot of good stuff in there, as well as in the &lt;a href=&quot;http://www.osnews.com/comment.php?news_id=8072&quot;&gt;comments&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>software</category></item><item><title>&quot;Internet&quot; now simply &quot;internet&quot;</title><link>https://www.digitalhobbit.com/legacy/2004/08/17/internet-now-simply-internet/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/17/internet-now-simply-internet/</guid><description>Wired News has decided to no longer capitalize the &quot;I&quot; in &quot;Internet&quot;, which will now simply be spelled &quot;internet&quot;. At the same time, &quot;Web&quot; becomes &quot;web&quot; and &quot;Net&quot; becomes &quot;net&quot;. I wonder if this sets a big enough precedent that other people start adopting the new spelling. It kind of makes sense to me.</description><pubDate>Tue, 17 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.wired.com/news/culture/0,1284,64596,00.html&quot;&gt;Wired News&lt;/a&gt; has decided to no longer capitalize the &quot;I&quot; in &quot;Internet&quot;, which will now simply be spelled &quot;internet&quot;. At the same time, &quot;Web&quot; becomes &quot;web&quot; and &quot;Net&quot; becomes &quot;net&quot;.&lt;/p&gt;
&lt;p&gt;I wonder if this sets a big enough precedent that other people start adopting the new spelling. It kind of makes sense to me.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>&quot;Broken Windows&quot; theory also applies to kitchen work</title><link>https://www.digitalhobbit.com/legacy/2004/08/14/broken-windows-theory-also-applies-to-kitchen-work/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/14/broken-windows-theory-also-applies-to-kitchen-work/</guid><description>We recently moved back from the suburbs into San Francisco proper, but our new house is a little smaller than the old one.</description><pubDate>Sat, 14 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We recently moved back from the suburbs into San Francisco proper, but our new house is a little smaller than the old one. In particular, there is a lot less counter space than we are used to in the kitchen, which means that things very quickly fill up if we are not careful, at which point it becomes almost impossible to even think about activities such as cooking or simply making a sandwich.&lt;/p&gt;
&lt;p&gt;The only way to conquer this situation is to always empty the dishwasher as soon as it is clean, which then allows us to immediately put dirty dishes into the dishwasher, rather than allowing them to pile up on the counters. Of course, this requires a fair amount of discipline...&lt;/p&gt;
&lt;p&gt;Yesterday evening was another of those days (maybe because it was the end of an exhausting work week) where we were too tired to immediately put away the clean dishes, which meant that the first dirty dishes landed on the counters. Once some crap has started to pile up on the counters, the inhibition to add additional crap is a lot less, and from that point on it just goes downhill. Now, cleaning everything up becomes a major effort, which is therefore postponed for as long as possible... At the end of the evening, the counters are full of dirty dishes, garbage, food leftovers, etc.&lt;/p&gt;
&lt;p&gt;This morning I realized that this is exactly the same issue as in the &lt;a href=&quot;http://pragmaticprogrammer.com/ppbook/extracts/no_broken_windows.html&quot;&gt;Broken Windows&lt;/a&gt; theory that the &lt;a href=&quot;http://pragmaticprogrammer.com/index.html&quot;&gt;Pragmatic Programmers&lt;/a&gt; Dave Thomas and Andy Hunt describe in their book and on their website. I guess it is one of those cases where the same problems manifest themselves in software development as well as in real life.&lt;/p&gt;</content:encoded><category>personal</category></item><item><title>Free book on Subversion version control</title><link>https://www.digitalhobbit.com/legacy/2004/08/14/free-book-on-subversion-version-control/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/14/free-book-on-subversion-version-control/</guid><description>There is a free book on Subversion version control. I have not had a chance to look at Subversion yet, but I am planning on upgrading my CVS installation at home (which I am keeping out of principle more than anything, as I don&apos;t actually do all that much development at home these days) to Subversion..</description><pubDate>Sat, 14 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There is a &lt;a href=&quot;http://svnbook.red-bean.com/&quot;&gt;free book on Subversion&lt;/a&gt; version control. I have not had a chance to look at Subversion yet, but I am planning on upgrading my CVS installation at home (which I am keeping out of principle more than anything, as I don&apos;t actually do all that much development at home these days) to Subversion..&lt;/p&gt;
&lt;p&gt;Before my current job, I actually had not used CVS for about 5 years, as my previous companies used Visual Source Safe, StarTeam, and Perforce. Overall, StarTeam is my personal favorite, followed closely by Perforce. It has however been refreshing to use CVS again at my current job (although we are soon going to migrate to Perforce), as CVS is generally a very solid version control system. Unfortunately it is quite dated and has a few quirks, such as the inability to rename or move files, and the inability to version directories. &lt;a href=&quot;http://subversion.tigris.org/&quot;&gt;Subversion&lt;/a&gt; addresses these and many other issues and otherwise remains similar to CVS, so it should be well worth checking out.&lt;/p&gt;
&lt;p&gt;(via &lt;a href=&quot;http://photomatt.net/2004/08/14/subversion-book/&quot;&gt;Photo Matt&lt;/a&gt;)&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Make: technology on your time</title><link>https://www.digitalhobbit.com/legacy/2004/08/14/make-technology-on-your-time/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/14/make-technology-on-your-time/</guid><description>The upcoming Make: magazine from O&apos;Reilly sounds very interesting. It is published as a &quot;mook&quot;, a magazine / book hybrid, and covers a wide array of technology and what people can do with it. It sounds like the focus will be on concrete consumer projects, including things like kite aereal photography, home entertainment, websites, etc. This sounds like the ultimate geek magazine and I&apos;m curious about the first edition.</description><pubDate>Sat, 14 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The upcoming &lt;a href=&quot;http://make.oreilly.com/&quot;&gt;Make: magazine&lt;/a&gt; from O&apos;Reilly sounds very interesting. It is published as a &quot;mook&quot;, a magazine / book hybrid, and covers a wide array of technology and what people can do with it. It sounds like the focus will be on concrete consumer projects, including things like kite aereal photography, home entertainment, websites, etc. This sounds like the ultimate geek magazine and I&apos;m curious about the first edition.&lt;/p&gt;
&lt;p&gt;There is also a section on user reviews, for which Mark Frauenfelder, the Editor in Chief of Make:, is currently looking for writers in &lt;a href=&quot;http://www.boingboing.net/2004/08/14/reviewers_needed_for.html&quot;&gt;this BoingBoing posting&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>books</category></item><item><title>Prevayler: Prevalent Persistence Engine</title><link>https://www.digitalhobbit.com/legacy/2004/08/14/prevayler-prevalent-persistence-engine/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/14/prevayler-prevalent-persistence-engine/</guid><description>Prevayler 2.0, a prevalent persistence engine, was released a few days ago. This is the first time I have heard about this project or about this type of persistence engine, but it sounds very promising. Prevayler can be used in lieu of a (relational or object-oriented) database in many cases. It is based on simple mechanisms that are built into the Java language, in particular serialization.</description><pubDate>Sat, 14 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.prevayler.org/wiki.jsp&quot;&gt;Prevayler 2.0&lt;/a&gt;, a prevalent persistence engine, was released a few days ago.&lt;/p&gt;
&lt;p&gt;This is the first time I have heard about this project or about this type of persistence engine, but it sounds very promising. Prevayler can be used in lieu of a (relational or object-oriented) database in many cases. It is based on simple mechanisms that are built into the Java language, in particular serialization. The idea is that the engine tracks and logs any changes in (due to commands being run on) your business objects. Upon restarting your application, Prevayler is able to bring it back into the state it was in before it was shut down simply by re-executing the commands based on the log file. It also supports saving snapshots (I believe these are stored using XML), to avoid having to recreate the entire history since the beginning every time the application is restarted. The general usage pattern seems to be to save a snapshot in a regular interval (such as every day) and log changes in between snapshots.&lt;/p&gt;
&lt;p&gt;Supposedly, queries are lightning fast (several orders of magnitude faster than relational databases), and the paradigm fits nicely within object oriented development; much nicer than relational databases, which always have to be bridged in some way in order to work with object oriented applications.&lt;/p&gt;
&lt;p&gt;One drawback is that Prevayler requires the entire application&apos;s data to be stored in memory. While this is certainly feasible for small to mid-size applications, I am concerned about larger applications. Also, future scalability may be more difficult. For example, with a traditional database-based server-side application, it is easy to start small with a single application server and a single database. If the system later evolves into a larger application with more sophisticated concurrency requirements, the system can easily be scaled by adding additional application servers and potentially database servers. In contrast, using Prevayler as the persistence mechanism, simply adding another application server is not possible, as the entire data exists in memory in the one and only JVM. Of course, there might be ways of migrating the application to another persistence mechanism when it comes to this. In this case, object-relational mapping frameworks such as Castor, Hibernate, or JDO would probably be good candidates.&lt;/p&gt;
&lt;p&gt;I might check Prevayler out at some point, as it definitely sounds like a promising alternative to databases for certain types of applications.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=27931&quot;&gt;TheServerSide discussion&lt;/a&gt;&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Eclipse and XML</title><link>https://www.digitalhobbit.com/legacy/2004/08/13/eclipse-and-xml/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/13/eclipse-and-xml/</guid><description>I&apos;m still evaluating Eclipse 3.0 to see if I could imagine switching from IntelliJ IDEA to Eclipse. Overall, I&apos;m still pretty impressed with Eclipse, with the exception of a few shortcomings I mentioned before. Another important feature that Eclipse lacks out of the box is support for XML editing.</description><pubDate>Fri, 13 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m still evaluating &lt;a href=&quot;http://www.eclipse.org&quot;&gt;Eclipse 3.0&lt;/a&gt; to see if I could imagine switching from &lt;a href=&quot;http://www.jetbrains.com&quot;&gt;IntelliJ IDEA&lt;/a&gt; to Eclipse. Overall, I&apos;m still pretty impressed with Eclipse, with the exception of a few shortcomings I &lt;a href=&quot;/legacy/2004/08/02/eclipse-30-initial-impression/&quot;&gt;mentioned&lt;/a&gt; before.&lt;/p&gt;
&lt;p&gt;Another important feature that Eclipse lacks out of the box is support for XML editing. I find this somewhat surprising, as pretty much any Java project these days involves XML files (just think about XML config files as used by Struts and other frameworks, or even the web.xml file that every web application has), and being able to edit these in the same IDE as the Java files is very convenient. This is particularly odd because Eclipse already includes support for editing XML-based Ant scripts, and it should be simple enough to at least generalize this functionality to support other XML files as well.&lt;/p&gt;
&lt;p&gt;On the positive side, Eclipse&apos;s plugin support comes to the rescue, as there are several XML plugins. The one I&apos;m currently using is &lt;a href=&quot;http://xmlbuddy.com/2.0/index.php&quot;&gt;XMLBuddy&lt;/a&gt;, and it does a great job of filling this gap. The free version adds standard XML editing support, including syntax highlighting, autocompletion, validation against DTD and XML Schema, and an outline view. This is all I usually need and effectively brings Eclipse&apos;s XML support to the same level as IntelliJ IDEA. XMLBuddy Pro adds additional support for XSLT and XML Schema, and at $35 its cost is very reasonable for those who work a lot with these XML features. It is certainly an alternative to the much more expensive &lt;a href=&quot;http://www.altova.com/products_ide.html&quot;&gt;XML Spy&lt;/a&gt;, although Altova now offers a fairly decent free version of its product as well.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>EclipseME</title><link>https://www.digitalhobbit.com/legacy/2004/08/11/eclipseme/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/11/eclipseme/</guid><description>EclipseME is an Eclipse plugin for J2ME development. I have not installed it yet, but it sounds well worth checking out.</description><pubDate>Wed, 11 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://eclipseme.sourceforge.net/&quot;&gt;EclipseME&lt;/a&gt; is an Eclipse plugin for J2ME development. I have not installed it yet, but it sounds well worth checking out. Here are some of its features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multiple wireless toolkit support&lt;/li&gt;
&lt;li&gt;Wireless toolkit preferences&lt;/li&gt;
&lt;li&gt;Platform component and definition support&lt;/li&gt;
&lt;li&gt;Create new J2ME Midlet Suite Project&lt;/li&gt;
&lt;li&gt;Create new Midlet&lt;/li&gt;
&lt;li&gt;Java Application Descriptor (JAD) editor&lt;/li&gt;
&lt;li&gt;Automatic incremental preverification&lt;/li&gt;
&lt;li&gt;Eclipse launch support for Emulator&lt;/li&gt;
&lt;li&gt;Midlet debugging support&lt;/li&gt;
&lt;li&gt;JAR and obfuscated JAR packaging&lt;/li&gt;
&lt;li&gt;Over the air deployment testing server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In my initial J2ME experiments about half a year ago, I was quite happy with the combination of &lt;a href=&quot;http://www.jetbrains.com/idea/index.html&quot;&gt;IntelliJ IDEA&lt;/a&gt; and the &lt;a href=&quot;http://antenna.sourceforge.net/&quot;&gt;Antenna&lt;/a&gt; Ant task for J2ME. While it would be nice to be able to do certain J2ME specific tasks directly within the IDE, being able to build the application from Ant is indispensable, in my opinion.&lt;/p&gt;
&lt;p&gt;Nevertheless, I&apos;ll give EclipseME a try when I get a chance, as it may speed up the somewhat cumbersome J2ME development process.&lt;/p&gt;
&lt;p&gt;(via &lt;a href=&quot;http://wirelessdev.weblogsinc.com/&quot;&gt;The Wireless Development Weblog&lt;/a&gt;)&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>JDocs</title><link>https://www.digitalhobbit.com/legacy/2004/08/11/jdocs/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/11/jdocs/</guid><description>Javalobby has launched a very useful new site: JDocs.com. JDocs offers easy access to Javadocs for many widely used APIs, including the JDK, XML APIs such as Xalan, Xerces, JDom, Castor, and JiBX, frameworks such as Struts, utility APIs such as the Apache Commons APIs, and many others. Currently, about 50 APIs are covered on JDocs, but there are plans of extending this number to 100 or even 150 soon.</description><pubDate>Wed, 11 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.javalobby.com&quot;&gt;Javalobby&lt;/a&gt; has launched a very useful new site: &lt;a href=&quot;http://www.jdocs.com/&quot;&gt;JDocs.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;JDocs offers easy access to Javadocs for many widely used APIs, including the JDK, XML APIs such as Xalan, Xerces, JDom, Castor, and JiBX, frameworks such as Struts, utility APIs such as the Apache Commons APIs, and many others. Currently, about 50 APIs are covered on JDocs, but there are plans of extending this number to 100 or even 150 soon.&lt;/p&gt;
&lt;p&gt;Best of all, JDocs does not only include the Javadocs themselves. It also offers a way for users to comment on individual classes. Assuming that people actually start to contribute, this feature could prove to be very useful, similar to the &lt;a href=&quot;http://www.php.net/manual/en/&quot;&gt;PHP documentation&lt;/a&gt;, which already follows this model.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>LipoBattery</title><link>https://www.digitalhobbit.com/legacy/2004/08/11/lipobattery/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/11/lipobattery/</guid><description>Dave Thomas has an interesting proposal on turning excess body fat into laptop energy. He calls this the LipoBattery. It would solve both the problem of overweight programmers, as well as the lack of battery power in laptops. As soon as they actually invent this thing, please sign me up for the beta test! :)</description><pubDate>Wed, 11 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dave Thomas has an interesting proposal on &lt;a href=&quot;http://pragprog.com/pragdave/Random/LipoBatt.rdoc&quot;&gt;turning excess body fat into laptop energy&lt;/a&gt;. He calls this the LipoBattery. It would solve both the problem of overweight programmers, as well as the lack of battery power in laptops.&lt;/p&gt;
&lt;p&gt;As soon as they actually invent this thing, please sign me up for the beta test! :)&lt;/p&gt;</content:encoded><category>fun</category></item><item><title>Paranoia XP</title><link>https://www.digitalhobbit.com/legacy/2004/08/11/paranoia-xp/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/11/paranoia-xp/</guid><description>I just came across this article on Boing Boing about the new Paranoia XP pen &amp; paper RPG, which was publicly developed using open source methodologies, including a Wiki and blogs. This mostly caught my eye because I actually used to play this RPG about 15 years ago as a teenager...</description><pubDate>Wed, 11 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just came across &lt;a href=&quot;http://www.boingboing.net/2004/08/06/paranoia_game_redesi.html&quot;&gt;this article on Boing Boing&lt;/a&gt; about the new Paranoia XP pen &amp;#x26; paper RPG, which was publicly developed using open source methodologies, including a Wiki and blogs. This mostly caught my eye because I actually used to play this RPG about 15 years ago as a teenager... ;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.costik.com/weblog/2004_08_01_blogchive.html#109173202462615135&quot;&gt;Games * Design * Art * Culture&lt;/a&gt; has a more detailed blog entry about Paranoia XP, including the history of the game as well as other interesting links.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.paranoia-live.net/news.php&quot;&gt;This Paranoia fansite&lt;/a&gt; also looks interesting and fun. It seems like there&apos;s even a downloadable computer game.&lt;/p&gt;
&lt;p&gt;Ah, memories...&lt;/p&gt;
&lt;p&gt;And always remember: &lt;strong&gt;The computer is your friend.&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>games</category></item><item><title>Anonymous Browsing</title><link>https://www.digitalhobbit.com/legacy/2004/08/08/anonymous-browsing/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/08/anonymous-browsing/</guid><description>I found this nice website on anonymous web browsing. It covers official anonymizers as well as other services that can be used for this purpose, such as Altavista&apos;s Babelfish. Interesting...</description><pubDate>Sun, 08 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I found this &lt;a href=&quot;http://www.searchlores.org/anonyweb.htm&quot;&gt;nice website&lt;/a&gt; on anonymous web browsing. It covers official anonymizers as well as other services that can be used for this purpose, such as &lt;a href=&quot;http://world.altavista.com/&quot;&gt;Altavista&apos;s Babelfish&lt;/a&gt;. Interesting...&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Feeling Groovy</title><link>https://www.digitalhobbit.com/legacy/2004/08/05/feeling-groovy/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/05/feeling-groovy/</guid><description>An introductory article on the Groovy language has been posted at IBM&apos;s developerWorks website. I have only skimmed it briefly so far, but I definitely need to take a closer look at this article as well as at Groovy in general. Groovy is a dynamic language that runs on the JVM.</description><pubDate>Thu, 05 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An &lt;a href=&quot;http://www-106.ibm.com/developerworks/java/library/j-alj08034.html&quot;&gt;introductory article&lt;/a&gt; on the Groovy language has been posted at IBM&apos;s developerWorks website.  I have only skimmed it briefly so far, but I definitely need to take a closer look at this article as well as at &lt;a href=&quot;http://groovy.codehaus.org/&quot;&gt;Groovy&lt;/a&gt; in general.&lt;/p&gt;
&lt;p&gt;Groovy is a dynamic language that runs on the JVM. It looks similar to Java but without many of its restrictions, and thus closely resembles scripting languages such as Ruby.&lt;/p&gt;
&lt;p&gt;While I generally like Java&apos;s strictness and its strong typing, some projects call for a less restrictive approach, and Groovy might be just the right solution. In addition to being able to run standalone, Groovy also offers several simple mechanisms for embedding it into Java applications. That would make it a great embedded scripting language for games, for example.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>First &quot;Hitchhiker&apos;s Guide to the Galaxy&quot; movie teaser</title><link>https://www.digitalhobbit.com/legacy/2004/08/04/first-hitchhikers-guide-to-the-galaxy-movie-teaser/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/04/first-hitchhikers-guide-to-the-galaxy-movie-teaser/</guid><description>The first teaser for the upcoming &quot;Hitchhiker&apos;s Guide to the Galaxy&quot; movie has been released. Frankly, there&apos;s not much to see, as it does not contain any actual footage from the movie. Regardless, at least it is another sign that the work is proceeding. There is also a nice history of the movie. I still find it hard to believe that it is actually happening...</description><pubDate>Wed, 04 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://hitchhikermovie.free.fr/pages/trailerdownload.html&quot;&gt;The first teaser&lt;/a&gt; for the upcoming &quot;Hitchhiker&apos;s Guide to the Galaxy&quot; movie has been released. Frankly, there&apos;s not much to see, as it does not contain any actual footage from the movie. Regardless, at least it is another sign that the work is proceeding. There is also a nice &lt;a href=&quot;http://hitchhikermovie.free.fr/pages/history.html&quot;&gt;history of the movie&lt;/a&gt;. I still find it hard to believe that it is actually happening...&lt;/p&gt;</content:encoded><category>entertainment</category><category>movies</category></item><item><title>Eclipse 3.0: initial impression</title><link>https://www.digitalhobbit.com/legacy/2004/08/02/eclipse-30-initial-impression/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/08/02/eclipse-30-initial-impression/</guid><description>I took a look at Eclipse 3.0 over the weekend, and I have to say that I&apos;m pretty impressed. I have been using IntelliJ IDEA for several years now, and I am a big fan of this IDE. At the same time, I love open source tools and am always happy to try something new.</description><pubDate>Mon, 02 Aug 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I took a look at &lt;a href=&quot;http://www.eclipse.org&quot;&gt;Eclipse 3.0&lt;/a&gt; over the weekend, and I have to say that I&apos;m pretty impressed. I have been using &lt;a href=&quot;http://www.jetbrains.com/idea/index.html&quot;&gt;IntelliJ IDEA&lt;/a&gt; for several years now, and I am a big fan of this IDE. At the same time, I love open source tools and am always happy to try something new. Eclipse has definitely come a long way since its first release - far enough that I have installed it at work today in order to try it on a real project and see how it measures up with IDEA. Note that my IDEA comments are specific to version 3.0.5, as I unfortunately don&apos;t own a license for the newer 4.5 version yet. In fact, the outcome of this Eclipse test drive will influcence how hard I am going to push for new IDEA licenses, although I strongly believe that a few hundred dollars are always money well spent if there is even the slightest productivity gain. But I digress...&lt;/p&gt;
&lt;p&gt;Below are some of my initial impressions. I will follow up in a week or two when I&apos;ve had enough of a chance to really test this application.&lt;/p&gt;
&lt;p&gt;Eclipse has a very polished look and includes most of the features that I like in IDEA, including very nice code completion and error highlighting, support for a large number of refactorings, Ant and CVS integration, and more. It includes very thorough online help and tutorials, as well as (optionally downloadable) samples. It has simple Wizards for creating new projects, including the ability to analyze an existing file structure and to determine which folders to use for sources, compiled classes, etc. Otherwise, the UI is pleasingly Wizard-free, just like IDEA.&lt;/p&gt;
&lt;p&gt;I particularly like Eclipse&apos;s support for perspectives. A perspective consists of a set of views using a certain layout, and each perspective is geared towards a particular task, such as Java development, code browsing, debugging, CVS repository management, etc.  Switching from one perspective to another just takes a click and happens immediately.&lt;/p&gt;
&lt;p&gt;The area where I have hit a few snags is compilation and CVS support. CVS support uses a built-in CVS client, but this requires a CVS server with a version number greater than 1.1.10. Our CVS server at work is older than that, and because of that certain CVS commands such as diff (a fairly crucial command for me, because I like to use my IDE to visualize differences between particular file revisions or between my local version and the version in CVS) don&apos;t function. IDEA is more flexible, as it allows (or in fact requires) an external CVS tool to be specified. I read somewhere that Eclipse&apos;s CVS support is somewhat flakey. Ultimately, this won&apos;t be a showstopper for me, as we are going to move to &lt;a href=&quot;http://www.perforce.com&quot;&gt;Perforce&lt;/a&gt; anyway, and there is a plugin that enables support for this configuration management tool (just like for pretty much any SCM tool out there, by the way). For my personal projects, I have been contemplating switching to &lt;a href=&quot;http://subversion.tigris.org/&quot;&gt;Subversion&lt;/a&gt;, which I have heard good things aboout. But I digress again...&lt;/p&gt;
&lt;p&gt;Compilation is also a little bit odd. By default, Eclipse&apos;s automatic compilation feature is enabled, which automatically compiles modified files when they are saved. For some reason, I was not able to get manual compilation working in my project. This was no major deal in this case, as my project has an Ant task anyway that it depends on (since it uses the &lt;a href=&quot;http://jibx.sourceforge.net&quot;&gt;JiBX&lt;/a&gt; XML object mapping toolkit, which relies on bytecode manipulation). The Ant integration is very nice, and very similar to IDEA.&lt;/p&gt;
&lt;p&gt;Eclipse includes a very nice JUnit integration, with its own test runner that is tightly integrated into the IDE. It also has a powerful debugger.&lt;/p&gt;
&lt;p&gt;One of Eclipse&apos;s main advantages is its openness and its pluggability. There are literally hundreds of plugins out there for everything from language support to code metrics, design tools, source configuration management systems, and much more. Take a look at &lt;a href=&quot;http://www.eclipse-plugins.info&quot;&gt;http://www.eclipse-plugins.info&lt;/a&gt; for example. I mostly program in Java, but every once in a while I work on PHP, and I am trying to learn Ruby. Plugins exist for both PHP and Ruby, as well as for pretty much any language, including scripting languages, functional languages, C/C++, you name it. This is a big plus, as it enables me to learn one IDE well, rather than having to use a different, specialized IDE for each language. Of course, the quality and functionalit of the individual plugins varies, and so far I have not had much of a chance to evaluate these. Still, this is a very promising area of the product.&lt;/p&gt;
&lt;p&gt;Of course, all this functionality and openness comes at a price. Eclipse is considerably harder to configure than IDEA. And while it includes many of the same simple little convenience features, they are sometimes harder to learn and use than in IDEA because they either don&apos;t have keyboard shortcuts or the keyboard shortcuts are not listed in the menu and have to be looked up in the online help instead. Once the IDE is properly configured, this should not be an issue any more, but it will likely take a little longer to get to this stage.&lt;/p&gt;
&lt;p&gt;That&apos;s it for now. Stay tuned for more updates about the Eclipse / IDEA battle. :)&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Weblog submission sites</title><link>https://www.digitalhobbit.com/legacy/2004/07/30/weblog-submission-sites/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/07/30/weblog-submission-sites/</guid><description>Here is a very nice collection of weblog and RSS submission sites.</description><pubDate>Fri, 30 Jul 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.masternewmedia.org/2004/02/05/rsstop55_best_blog_directory.htm&quot;&gt;Here&lt;/a&gt; is a very nice collection of weblog and RSS submission sites.&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>IntelliJ IDEA 4.5</title><link>https://www.digitalhobbit.com/legacy/2004/07/29/intellij-idea-45/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/07/29/intellij-idea-45/</guid><description>IntelliJ IDEA 4.5 was released a few days ago. For those of you that haven&apos;t used it: IDEA is a truly awesome IDE - lightweight and quick, extremely intuitive and smart, and with great refactoring features, as well as solid integration with external tools such as Ant, JUnit, and various source control systems.</description><pubDate>Thu, 29 Jul 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.jetbrains.com/idea/index.html&quot;&gt;IntelliJ IDEA 4.5&lt;/a&gt; was released a few days ago. For those of you that haven&apos;t used it: IDEA is a truly awesome IDE - lightweight and quick, extremely intuitive and smart, and with great refactoring features, as well as solid integration with external tools such as Ant, JUnit, and various source control systems. It is an IDE for programmers that actually want to work with code, without wizards and other bloat.&lt;/p&gt;
&lt;p&gt;Too bad I am stuck with IDEA 3.0.5 (although this is still a great IDE). I hope that I can pursuade my company to purchase upgrades for us...&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>All Consuming</title><link>https://www.digitalhobbit.com/legacy/2004/07/27/all-consuming/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/07/27/all-consuming/</guid><description>Out of curiosity I just did a Google search for &quot;digitalhobbit&quot; to find any references to my site (not that I really expected any...). One of the links that was returned among the top search results was this one.</description><pubDate>Tue, 27 Jul 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Out of curiosity I just did a &lt;a href=&quot;http://www.google.com/search?q=digitalhobbi&quot;&gt;Google search for &quot;digitalhobbit&quot;&lt;/a&gt; to find any references to my site (not that I really expected any...). One of the links that was returned among the top search results was &lt;a href=&quot;http://allconsuming.net/at-this-time.cgi?year=2004&amp;#x26;month=7&amp;#x26;day=20&amp;#x26;hour=23&quot;&gt;this one&lt;/a&gt;. It points to a site called &lt;a href=&quot;http://allconsuming.net/&quot;&gt;All Consuming&lt;/a&gt;, which apparently monitors blogs for Amazon book links and uses this information to generate a page of the most discussed books, along with links to Amazon, to blogs discussing the books, etc. Of course, it uses its own Amazon Associates ID in the links in order to generate revenue.&lt;/p&gt;
&lt;p&gt;After digging a little further into the site, I have to admit that it actually offers some interesting features. For example, it allows blog admins to create a reading list and automatically include it into their blog using Javascript. I might actually try this feature out, as I am still looking for a nice way to implement a list of book recommendations or books that I&apos;m currently reading on my blog.&lt;/p&gt;</content:encoded><category>blogging</category><category>books</category></item><item><title>XML Object Mapping</title><link>https://www.digitalhobbit.com/legacy/2004/07/26/xml-object-mapping/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/07/26/xml-object-mapping/</guid><description>I have recently had a chance to look into several XML object binding frameworks, including JAXB, Castor, and JiBX. As usual, each framework has its strengths and its weaknesses.</description><pubDate>Mon, 26 Jul 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have recently had a chance to look into several XML object binding frameworks, including &lt;a href=&quot;http://java.sun.com/xml/jaxb/&quot;&gt;JAXB&lt;/a&gt;, &lt;a href=&quot;http://www.castor.org/&quot;&gt;Castor&lt;/a&gt;, and &lt;a href=&quot;http://www.jibx.org/&quot;&gt;JiBX&lt;/a&gt;. As usual, each framework has its strengths and its weaknesses.  I should add that our requirements are pretty special, as the classes that are bound to XML will form part of an SDK and therefore need to be clean, follow Java conventions, and contain good Javadocs that describe the XML properties that they are mapped to.&lt;/p&gt;
&lt;p&gt;One of the main differences between these tools as well as some of the other tools I have investigated is whether they use a mapped approach or rely on code generation. Initially, code generation seemed like the way to go for us, because we don&apos;t have an existing Java class hierarchy to map to and it would eliminate a lot of the tedious work. JAXB and Castor are both good code generation frameworks. For most purposes, JAXB seems like an ideal tool. First of all, it is an official Java standard. Second, it generates very clean code and interfaces, with appropriate Java naming conventions, Java 2 collection classes, etc. It is also fairly configurable, either by using a binding file or by using XML annotations inside the XML Schema document that is used as the basis for the code generation. Unfortunately, it has a few limitations that make it less ideal for our purpose, i.e. to generate classes for an SDK:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Its support for XML lists is thoroughly lacking. For example, let&apos;s assume the following XML structure:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;application&gt;
  &amp;#x3C;user_list&gt;
    &amp;#x3C;user&gt;
      &amp;#x3C;name&gt;John Doe&amp;#x3C;/name&gt;
      &amp;#x3C;email&gt;john@doe.com&amp;#x3C;/email&gt;
      &amp;#x3C;phone&gt;123-456-7890&amp;#x3C;/phone&gt;
    &amp;#x3C;/user&gt;
    &amp;#x3C;user&gt;
      &amp;#x3C;name&gt;Robert Smith&amp;#x3C;/name&gt;
      &amp;#x3C;email&gt;robert@smith.com&amp;#x3C;/email&gt;
      &amp;#x3C;phone&gt;742-124-7364&amp;#x3C;/phone&gt;
    &amp;#x3C;/user&gt;
  &amp;#x3C;/user_list&gt;
&amp;#x3C;/application&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I would like the application element to map to a class called Application, which contains a getUserList() method that simply returns a list of User objects. However, JAXB insists on creating another class called UserList, which only contains a method called (by default) getUser() that returns the actual list of User objects. This would be fine in most cases, but it definitely would be weird in case of an SDK that is published to customers.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;The other problem is regarding Javadocs. While JAXB is smart enough to turn XML annotations into Javadocs, it also stores a lot of other junk inside the Javadocs, including the corresponding excerpt from the XML Schema. Again, normally not a problem but not ideal in our case.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Castor solves some of these problems but has its own quirks. It does not always follow Java conventions. For example, an XML element called user_list gets mapped to a Java class called User_list, rather than the desired and expected UserList. This behavior is configurable in JAXB but not in Castor. Its list support is slightly better in some ways, as the generated classes actually contain some useful methods for dealing with the list elements, but it uses old-style collection classes and Enumerators rather than Iterators.&lt;/p&gt;
&lt;p&gt;JiBX was a very nice surprise. It follows a mapped approach (which Castor alternatively also supports) and thus requires Java classes to exist. But it is extremely flexible in how XML elements get mapped to Java properties and vice-versa. It is highly configurable, flexible, and fast. Its support for collections is by far the best I have seen in any XML object mapping framework. Using JiBX means that we will need to write Java classes after all, but they will be very lightweight JavaBeans that don&apos;t really require any code. On the plus side, we will of course get full control over Javadocs. Also, if our XML format ever changes, we will be able to deal with most changes simply by midifying the mapping file, without having to change any code - another big plus for us, as it will allow us to more easily support a backwards-compatible SDK.&lt;/p&gt;
&lt;p&gt;For quick and dirty (actually not all that dirty) internal XML mapping jobs, JAXB seems like the best choice. When tighter control over the mapped code is required, I strongly advise you to look into JiBX.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Amazon Plog II</title><link>https://www.digitalhobbit.com/legacy/2004/07/20/amazon-plog-ii/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/07/20/amazon-plog-ii/</guid><description>Even though the Amazon Plog initially did not show up for me when this feature was first launched, it started to show up a few days ago. The name definitely seems like a poor marketing idea, since this feature has absolutely nothing to do with a blog, other than its blog-like layout and the reverse-chronological order.</description><pubDate>Tue, 20 Jul 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Even though the &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?tag=digitalhobbit-20&amp;#x26;path=http%3A//www.amazon.com/gp/community/plog/about.html/ref%3Dcm%5Fplog%5Flearn%3F%255Fencoding%3DUTF8%26uri%3D%252Fexec%252Fobidos%252Fsubst%252Fhome%252Fhome.html%26qv%3D%26qk%3D&quot;&gt;Amazon Plog&lt;/a&gt; initially &lt;a href=&quot;/legacy/2004/06/03/amazon-plog/&quot;&gt;did not show up for me&lt;/a&gt; when this feature was first launched, it started to show up a few days ago. The name definitely seems like a poor marketing idea, since this feature has absolutely nothing to do with a blog, other than its blog-like layout and the reverse-chronological order. The entries (at least the ones in my plog) consist of the usual Amazon recommendations as well as quick summaries of recently placed orders. Getting this order summary on the front page is actually a neat feature for Amazon addicts such as myself and my wife. Still, disguising this as a blog seems like a weird idea...&lt;/p&gt;</content:encoded><category>commerce</category></item><item><title>Pragmatic Project Automation</title><link>https://www.digitalhobbit.com/legacy/2004/07/20/pragmatic-project-automation/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/07/20/pragmatic-project-automation/</guid><description>The third book in the Pragmatic Starter Kit series, &quot;Pragmatic Project Automation&quot;, is now available, either from Amazon or from the Pragmatic Programmer website. I have read and can thoroughly recommend the other two books in the series, &quot;Pragmatic Version Control&quot; (Amazon link) and &quot;Pragmatic Unit Testing&quot; (Amazon link).</description><pubDate>Tue, 20 Jul 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The third book in the &lt;a href=&quot;http://pragmaticprogrammer.com/starter_kit/index.html&quot;&gt;Pragmatic Starter Kit&lt;/a&gt; series, &quot;Pragmatic Project Automation&quot;, is now available, either from &lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0974514039/digitalhobbit-20?creative=125581&amp;#x26;camp=2321&amp;#x26;link_code=as1&quot;&gt;Amazon&lt;/a&gt; or from the &lt;a href=&quot;http://pragmaticprogrammer.com/starter_kit/au/index.html&quot;&gt;Pragmatic Programmer&lt;/a&gt; website. I have read and can thoroughly recommend the other two books in the series, &lt;a href=&quot;http://pragmaticprogrammer.com/starter_kit/vc/index.html&quot;&gt;&quot;Pragmatic Version Control&quot;&lt;/a&gt; (&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0974514004/digitalhobbit-20?creative=125581&amp;#x26;camp=2321&amp;#x26;link_code=as1&quot;&gt;Amazon link&lt;/a&gt;) and &lt;a href=&quot;http://pragmaticprogrammer.com/starter_kit/ut/index.html&quot;&gt;&quot;Pragmatic Unit Testing&quot;&lt;/a&gt; (&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0974514012/digitalhobbit-20?creative=125581&amp;#x26;camp=2321&amp;#x26;link_code=as1&quot;&gt;Amazon link&lt;/a&gt;). All books in the series are refreshingly short, to the point, and full of pragmatic advice, without the excessive bloat found in so many other programming books.&lt;/p&gt;</content:encoded><category>books</category></item><item><title>Bitoogle</title><link>https://www.digitalhobbit.com/legacy/2004/07/19/bitoogle/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/07/19/bitoogle/</guid><description>Here&apos;s an interesting site: Bitoogle, a BitTorrent search engine (via Boing Boing). It&apos;s funny how BitTorrent, which was really just implemented to speed up downloads of large files and not for filesharing, turned into a popular and efficient filesharing application...</description><pubDate>Mon, 19 Jul 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here&apos;s an interesting site: &lt;a href=&quot;http://www.bitoogle.com/&quot;&gt;Bitoogle&lt;/a&gt;, a &lt;a href=&quot;http://bitconjurer.org/BitTorrent/&quot;&gt;BitTorrent&lt;/a&gt; search engine (via &lt;a href=&quot;http://www.boingboing.net/2004/07/16/bittorrent_search_en.html&quot;&gt;Boing Boing&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;It&apos;s funny how BitTorrent, which was really just implemented to speed up downloads of large files and not for filesharing, turned into a popular and efficient filesharing application...&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>survived the move</title><link>https://www.digitalhobbit.com/legacy/2004/07/07/survived-the-move/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/07/07/survived-the-move/</guid><description>I would apologize for the recent lack of updates if anybody besides myself was actually reading my blog... ;) Anyway, we moved to our new house in San Francisco last weekend, and overall everything was pretty smooth. Of course, with two little kids it takes a lot longer to unpack everything and settle in, so the garage is still full of boxes and I haven&apos;t even started with my office.</description><pubDate>Wed, 07 Jul 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I would apologize for the recent lack of updates if anybody besides myself was actually reading my blog... ;)&lt;/p&gt;
&lt;p&gt;Anyway, we moved to our new house in San Francisco last weekend, and overall everything was pretty smooth. Of course, with two little kids it takes a lot longer to unpack everything and settle in, so the garage is still full of boxes and I haven&apos;t even started with my office. But the actual living area is mostly complete already.&lt;/p&gt;
&lt;p&gt;It&apos;s definitely great to be back in San Francisco, and I&apos;m looking forward to exploring the neighborhood, trying out all the restaurants, etc.&lt;/p&gt;</content:encoded><category>sfbayarea</category></item><item><title>WordPress Wiki</title><link>https://www.digitalhobbit.com/legacy/2004/07/07/wordpress-wiki/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/07/07/wordpress-wiki/</guid><description>Mark just published a Wiki plugin for WordPress on his Weblog Tools Collection. This is great news, and I can&apos;t wait to install it on my blog.</description><pubDate>Wed, 07 Jul 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Mark just published a &lt;a href=&quot;http://weblogtoolscollection.com/archives/2004/07/05/wordpress-12-wiki-integration/&quot;&gt;Wiki plugin for WordPress&lt;/a&gt; on his &lt;a href=&quot;http://weblogtoolscollection.com/&quot;&gt;Weblog Tools Collection&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is great news, and I can&apos;t wait to install it on my blog. I am a big fan of Wiki servers as collaboration tools and for simple knowledge management tasks, and even though the collaboration aspect would not really apply in case of my own Wiki as I would probably be the only one posting to it, it should be a convenient mechanism for me to publish non-blog content.&lt;/p&gt;
&lt;p&gt;Nice job!&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>5 days without high-speed Internet</title><link>https://www.digitalhobbit.com/legacy/2004/06/30/5-days-without-high-speed-internet/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/30/5-days-without-high-speed-internet/</guid><description>We are very excited about moving into our new house this Friday. All of the basic utilities are taken care of, we have phone service and cable TV, etc. Unfortunately, DSL won&apos;t be active until Wednesday, so we&apos;ll be without high-speed Internet access for around 5 days!</description><pubDate>Wed, 30 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We are very excited about moving into our new house this Friday. All of the basic utilities are taken care of, we have phone service and cable TV, etc. Unfortunately, DSL won&apos;t be active until Wednesday, so we&apos;ll be without high-speed Internet access for around 5 days! I guess we&apos;ll be busy unpacking and therefore hopefully won&apos;t miss it too much, but after having cable Internet service for a good 3 years and DSL for two years before, it&apos;ll still be awkward. At least SBC / Yahoo DSL comes with free dial-up Internet access that we can use in the interim, so that we are not totally disconnected from the rest of the world...&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Eclipse 3.0 released</title><link>https://www.digitalhobbit.com/legacy/2004/06/29/eclipse-30-released/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/29/eclipse-30-released/</guid><description>The Eclipse Project has released the final version 3.0 of the popular Eclipse IDE. I am currently IntelliJ IDEA and I still very much love this IDE (even though I&apos;m still stuck with version 3.0.5), but Eclipse 2.1 looked very promising when I played with it briefly a while ago, and I am sure that Eclipse 3.0 will be even better.</description><pubDate>Tue, 29 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.eclipse.org&quot;&gt;The Eclipse Project&lt;/a&gt; has released the final version 3.0 of the popular Eclipse IDE. I am currently &lt;a href=&quot;http://www.jetbrains.com&quot;&gt;IntelliJ IDEA&lt;/a&gt; and I still very much love this IDE (even though I&apos;m still stuck with version 3.0.5), but Eclipse 2.1 looked very promising when I played with it briefly a while ago, and I am sure that Eclipse 3.0 will be even better.&lt;/p&gt;
&lt;p&gt;With a great open source IDE like Eclipse and the excellent (and unfortunately not free but at least reasonably-priced) IntelliJ IDEA, the big, bloated, and expensive IDEs such as JBuilder should be in a lot of trouble...&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Sun renames J2SE 1.5 to J2SE 5.0</title><link>https://www.digitalhobbit.com/legacy/2004/06/29/sun-renames-j2se-15-to-j2se-50/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/29/sun-renames-j2se-15-to-j2se-50/</guid><description>Sun has decided to rename J2SE 1.5 to J2SE 5.0, as this is a very significant relase with important changes to the Java platform. According to this The Server Side posting, Sun also considered getting rid of the &quot;2&quot; and going with J5SE instead, but this was not a good choice because of the J2EE brand.</description><pubDate>Tue, 29 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.sun.com/smi/Press/sunflash/2004-06/sunflash.20040628.3.html&quot;&gt;Sun has decided&lt;/a&gt; to rename J2SE 1.5 to J2SE 5.0, as this is a very significant relase with important changes to the Java platform. According to &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=26955&quot;&gt;this The Server Side&lt;/a&gt; posting, Sun also considered getting rid of the &quot;2&quot; and going with J5SE instead, but this was not a good choice because of the J2EE brand.&lt;/p&gt;
&lt;p&gt;I think Sun made a bad decision when they released J2SE 1.2, the first Java 2 release. They should have called it Java 2.0 back then, without the confusing dual versioning.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>New &quot;Hitchhiker&apos;s Guide to the Galaxy&quot; radio adaptations</title><link>https://www.digitalhobbit.com/legacy/2004/06/21/new-hitchhikers-guide-to-the-galaxy-radio-adaptations/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/21/new-hitchhikers-guide-to-the-galaxy-radio-adaptations/</guid><description>According to this Slashdot posting, the BBC has announced that it will be releasing new radio adaptations of Douglas Adams last three Hitchhiker&apos;s Guide to the Galaxy books. The clou is that Douglas Adams himself will provide the voice for Agrajag, a character whose reincarnations keep getting killed by Arthur Dent. Apparently, Douglas Adams always wanted to play this part and he therefore recorded it some time before his death.</description><pubDate>Mon, 21 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;According to &lt;a href=&quot;http://slashdot.org/article.pl?sid=04/06/21/1918208&quot;&gt;this Slashdot posting&lt;/a&gt;, the BBC &lt;a href=&quot;http://news.bbc.co.uk/2/hi/entertainment/3827181.stm&quot;&gt;has announced&lt;/a&gt; that it will be releasing new radio adaptations of Douglas Adams last three Hitchhiker&apos;s Guide to the Galaxy books. The clou is that Douglas Adams himself will provide the voice for Agrajag, a character whose reincarnations keep getting killed by Arthur Dent. Apparently, Douglas Adams always wanted to play this part and he therefore recorded it some time before his death.&lt;/p&gt;
&lt;p&gt;Can&apos;t wait to hear this!&lt;/p&gt;</content:encoded></item><item><title>No more instant messaging?</title><link>https://www.digitalhobbit.com/legacy/2004/06/21/no-more-instant-messaging/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/21/no-more-instant-messaging/</guid><description>My company just instigated a complete ban on instant messaging clients, supposedly for security reasons.</description><pubDate>Mon, 21 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My company just instigated a complete ban on instant messaging clients, supposedly for security reasons. While I agree that instant messaging applications may not be the most secure and probably should not be used internally for sensitive information (for which an internal instant messaging deployment of some sort would be preferable), I feel that instant messaging has become such a commodity for personal communications that removing this privilege is a highly significant and intolerable restriction. Ultimately, this can&apos;t be in the company&apos;s interest either, since a couple of unobstrusive instant messages (for example to keep in touch with the spouse) are now replaced by several phone calls with a lot more overhead.&lt;/p&gt;
&lt;p&gt;Time to start looking into web based instant messaging applications, such as &lt;a href=&quot;http://webmessenger.blitzaffe.com/&quot;&gt;WebMessenger&lt;/a&gt;...&lt;/p&gt;</content:encoded><category>technology</category><category>work</category></item><item><title>History of programming languages</title><link>https://www.digitalhobbit.com/legacy/2004/06/19/history-of-programming-languages/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/19/history-of-programming-languages/</guid><description>O&apos;Reilly has produced an interesting poster about the History of Programming Languages. But beware: the PDF file is 39&quot; wide, probably because it covers every minor version of every programming languages, rather than just important milestones. Apparently you can also get a printed version of the poster for free when you order two books from O&apos;Reilly. There&apos;s also a corresponding Wiki, and of course a lively Slashdot discussion.</description><pubDate>Sat, 19 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.oreilly.com&quot;&gt;O&apos;Reilly&lt;/a&gt; has produced an interesting poster about the &lt;a href=&quot;http://www.oreilly.com/pub/a/oreilly/news/languageposter_0504.html&quot;&gt;History of Programming Languages&lt;/a&gt;. But beware: the &lt;a href=&quot;http://www.oreilly.com/news/graphics/prog_lang_poster.pdf&quot;&gt;PDF file&lt;/a&gt; is 39&quot; wide, probably because it covers every minor version of every programming languages, rather than just important milestones. Apparently you can also get a printed version of the poster for free when you order two books from &lt;a href=&quot;http://www.oreilly.com&quot;&gt;O&apos;Reilly&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There&apos;s also a corresponding &lt;a href=&quot;http://wiki.oreillynet.com/languageposter/index.cgi&quot;&gt;Wiki&lt;/a&gt;, and of course a lively &lt;a href=&quot;http://slashdot.org/article.pl?sid=04/06/17/1529256&quot;&gt;Slashdot discussion&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Would you have thought that there are over 2500 documented programming languages? That definitely lets the relatively few languages that I know (or have known at some point) look pretty measly... ;)&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Some Firefox notes</title><link>https://www.digitalhobbit.com/legacy/2004/06/18/some-firefox-notes/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/18/some-firefox-notes/</guid><description>Firefox 0.9 has been released a few days ago, and it certainly looks worthy of upgrading to (or installing, if you&apos;re not using it yet). Joel Spolsky lists three reasons to switch web browsers today. Of particular interest is the following one: You&apos;ll help break the Microsoft Monopoly on web browsers.</description><pubDate>Fri, 18 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.mozilla.org/products/firefox/&quot;&gt;Firefox 0.9&lt;/a&gt; has been released a few days ago, and it certainly looks worthy of upgrading to (or installing, if you&apos;re not using it yet).&lt;/p&gt;
&lt;p&gt;Joel Spolsky lists &lt;a href=&quot;http://www.joelonsoftware.com/items/2004/06/15.html&quot;&gt;three reasons to switch web browsers today&lt;/a&gt;.  Of particular interest is the following one:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You&apos;ll help break the Microsoft Monopoly on web browsers. Microsoft took over the browser market fair and square by making a better product, but they were so afraid that Web-based applications would eliminate the need for Windows that they locked the IE team in a dark dungeon and they haven&apos;t allowed improvements to IE for several years now. Now Firefox is the better product and there&apos;s a glimmer of hope that one day DHTML will actually improve to the point where web-based applications are just as good as Windows-based applications.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As an ex-Microsoft employee, he probably knows what he&apos;s talking about... In fact, I have often wondered why IE hasn&apos;t embraced popular new features like tabbed browsing, but I assumed that this was mostly because it didn&apos;t fit into Microsoft&apos;s user interface conventions. But I suppose it is quite possible that they deliberately kept IE simple to prevent web applications from competing with Windows-based applications.&lt;/p&gt;
&lt;p&gt;One thing to keep in mind when upgrading from an earlier Firefox version (such as 0.8) to 0.9 is that several people have reported problems with the upgrade. A clean install might be a safer option.&lt;/p&gt;
&lt;p&gt;I am still looking for a good solution of sharing bookmarks between IE and Firefox (see &lt;a href=&quot;/legacy/2004/05/23/sharing-bookmarks-between-mozilla-and-ie/&quot;&gt;my original posting&lt;/a&gt;). This situation will be further complicated by the fact that I have just ordered a laptop, which I want to keep synchronized with my desktop as well. &lt;a href=&quot;http://update.mozilla.org/extensions/moreinfo.php?id=14&amp;#x26;vid=15&amp;#x26;category=&quot;&gt;Bookmarks Synchronizer&lt;/a&gt;, a Firefox Extension that stores bookmarks on a user-configurable FTP server, looks like a very nice solution to this problem. It does not solve the IE / Firefox synchronization, but since I find myself using Firefox almost exclusively these days, I might be able to live with using Firefox as my main Bookmark manager and occasionally performing a manual export to IE.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>SQLCreator</title><link>https://www.digitalhobbit.com/legacy/2004/06/18/sqlcreator/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/18/sqlcreator/</guid><description>I just discovered SQLCreator, an interesting looking Java-based SQL client. Apparently, the goal of this application is to aid developers, and it includes many features that allow developers to search for tables by column name, etc. It is free for personal and commercial use, but there is a small advertising message area at the bottom - sounds fair enough to me.</description><pubDate>Fri, 18 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just discovered &lt;a href=&quot;http://www.snefru.com/paragraphs.jsp?document=1&quot;&gt;SQLCreator&lt;/a&gt;, an interesting looking Java-based SQL client. Apparently, the goal of this application is to aid developers, and it includes many features that allow developers to search for tables by column name, etc. It is free for personal and commercial use, but there is a small advertising message area at the bottom - sounds fair enough to me. I&apos;ll definitely check it out, although I&apos;m currently happy enough with the free version of &lt;a href=&quot;http://www.minq.se/products/dbvis/&quot;&gt;DbVisualizer&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>development</category></item><item><title>MSDN Resources for Java Developers</title><link>https://www.digitalhobbit.com/legacy/2004/06/16/msdn-resources-for-java-developers/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/16/msdn-resources-for-java-developers/</guid><description>Microsoft has launched their Resources for Java Developers website. In addition to some interoperability guides for Java and .NET, it mainly includes a long article titled The C# Programming Language for Java Developers. I have only briefly skimmed it so far, but it looks like it provides a nice introduction into C# for Java developers.</description><pubDate>Wed, 16 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Microsoft has launched their &lt;a href=&quot;http://msdn.microsoft.com/vstudio/java/&quot;&gt;Resources for Java Developers&lt;/a&gt; website. In addition to some interoperability guides for Java and .NET, it mainly includes a long article titled &lt;a href=&quot;http://msdn.microsoft.com/vstudio/java/gettingstarted/csharpforjava/&quot;&gt;The C# Programming Language for Java Developers&lt;/a&gt;. I have only briefly skimmed it so far, but it looks like it provides a nice introduction into C# for Java developers. Of course, one should expect this article to be somewhat biased, but it does not appear to be too bad.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Yahoo Mail increases storage size to 100MB</title><link>https://www.digitalhobbit.com/legacy/2004/06/16/yahoo-mail/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/16/yahoo-mail/</guid><description>I just logged into my Yahoo Mail account for the first time in a few days and was alerted to the fact that my storage size has been increased from 6MB to 100MB! For more information, see this article at Wired News. This is a very smart move on Yahoo&apos;s side that is bound to take a lot of the steam out of Google&apos;s Gmail.</description><pubDate>Wed, 16 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just logged into my Yahoo Mail account for the first time in a few days and was alerted to the fact that my storage size has been increased from 6MB to 100MB! For more information, see this article at &lt;a href=&quot;http://www.wired.com/news/business/0,1367,63855,00.html&quot;&gt;Wired News&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is a very smart move on Yahoo&apos;s side that is bound to take a lot of the steam out of Google&apos;s &lt;a href=&quot;http://gmail.google.com&quot;&gt;Gmail&lt;/a&gt;. Sure, 100MB is only one tenth of Gmail&apos;s 1GB, but it should be more than enough for most purposes. I haven&apos;t seen Gmail and can&apos;t comment on its other unique features, such as the supposedly powerful email search functionality. But with Yahoo&apos;s email service, there are less privacy concerns (although I don&apos;t care too much about &lt;a href=&quot;/legacy/2004/05/29/gmail-whats-the-big-deal/&quot;&gt;this issue&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Anyway: thanks for the upgrade, Yahoo!&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Keeping multiple computers in sync</title><link>https://www.digitalhobbit.com/legacy/2004/06/14/multiple-desktops/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/14/multiple-desktops/</guid><description>Martin Fowler shares some of his experiences of synchronizing several computers. Interesting timing, as I have just ordered a new laptop myself (although I admittedly don&apos;t program a whole lot in my virtually non-existent spare time these days, thanks to my two daughters who tend to keep my busy... ;) ).</description><pubDate>Mon, 14 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Martin Fowler &lt;a href=&quot;http://martinfowler.com/bliki/MultipleDesktops.html&quot;&gt;shares some of his experiences of synchronizing several computers&lt;/a&gt;. Interesting timing, as I have just ordered a new laptop myself (although I admittedly don&apos;t program a whole lot in my virtually non-existent spare time these days, thanks to my two daughters who tend to keep my busy... ;) ). On the PC side, things are pretty manageable with source control and IMAP, but on the PDA side things are still way too complicated My PocketPC, which I really like otherwise, even gets confused when syncing with just two machines (home and work)...
Martin also mentions that News Aggregators have problems keeping track of which articles have already been read. The answer to this, at least for me,  are web-based aggregators like &lt;a href=&quot;http://www.bloglines.com&quot;&gt;BlogLines&lt;/a&gt;, which do an excellent job for this purpose.&lt;/p&gt;</content:encoded></item><item><title>iRiver announces PMP-120 audio / video player</title><link>https://www.digitalhobbit.com/legacy/2004/06/13/iriver-announces-pmp-120-audio-video-player/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/13/iriver-announces-pmp-120-audio-video-player/</guid><description>iRiver recently announced the impressive PMP-120 audio / video player, which looks very exciting and has a long list of features. It plays all the relevant audio formats (including MP3, Ogg Vorbis, and WMA), as well as video formats (including Mpeg, DivX, and XviD). It has a built-in speaker as well as a 3.5&quot; TFT screen, but you can hook it up to a TV as well.</description><pubDate>Sun, 13 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.iriveramerica.com&quot;&gt;iRiver&lt;/a&gt; recently announced the impressive &lt;a href=&quot;http://www.iriveramerica.com/products/pmp-120.aspx&quot;&gt;PMP-120&lt;/a&gt; audio / video player, which looks very exciting and has a long list of features. It plays all the relevant audio formats (including MP3, Ogg Vorbis, and WMA), as well as video formats (including Mpeg, DivX, and XviD). It has a built-in speaker as well as a 3.5&quot; TFT screen, but you can hook it up to a TV as well. Apparently it will initially ship with a 20GB hard drive, but a 40GB version is planned as well. The advertised battery life is pretty impressive, with 16 hours of music or 5 hours of video. Unfortunately, there&apos;s no pricing information just yet. At a reasonably low price (maybe $400 - $500), this could be a real iPod killer. We&apos;ll see... I certainly would not say no to this gadget, at least if it&apos;s as good as it sounds.&lt;/p&gt;
&lt;p&gt;There&apos;s some more information &lt;a href=&quot;http://www.infosyncworld.com/news/n/5019.html&quot;&gt;in this article&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>Tivo Home Media Option now free</title><link>https://www.digitalhobbit.com/legacy/2004/06/10/tivo-home-media-option-now-free/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/10/tivo-home-media-option-now-free/</guid><description>Cudos to TiVo Inc., who decided to get rid of the premium Home Media Option and instead made these additional services (online scheduling, digital music, digital photos and multi-room viewing) freely available as part of the standard subscription. For an additional monthly fee, I would not have considered subscribing to these features, but for free I think they represent an awesome enhancement of the already great TiVo service.</description><pubDate>Thu, 10 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Cudos to &lt;a href=&quot;http://www.tivo.com&quot;&gt;TiVo Inc.&lt;/a&gt;, who decided to get rid of the premium Home Media Option and instead made these additional services (online scheduling, digital music, digital photos and multi-room viewing) freely available as part of the standard subscription. For an additional monthly fee, I would not have considered subscribing to these features, but for free I think they represent an awesome enhancement of the already great TiVo service.&lt;/p&gt;
&lt;p&gt;They have also introduced a significant discount for additional TiVo subscriptions, which now go for $6.95 instead of the full $12.95. Last not least, the entry-level 40-hour TiVo model (and why would you need anything else since you can easily hack it to increase the storage capacity) is currently on sale for $129 (after $50 mail-in rebate). In conjunction with the new multi-room viewing feature, this opens a lot of opportunities. I am seriously considering buying a second TiVo for the bedroom...&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>Combover: The Movie</title><link>https://www.digitalhobbit.com/legacy/2004/06/07/combover-the-movie/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/07/combover-the-movie/</guid><description>Thanks to Boing Boing for alerting me to the upcoming Combover: The Movie. This looks hilarious! :)</description><pubDate>Mon, 07 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Thanks to &lt;a href=&quot;http://www.boingboing.net/2004/06/06/combover_the_movie.html&quot;&gt;Boing Boing&lt;/a&gt; for alerting me to the upcoming &lt;a href=&quot;http://www.comboverthemovie.com/&quot;&gt;Combover: The Movie&lt;/a&gt;. This looks hilarious! :)&lt;/p&gt;</content:encoded><category>entertainment</category><category>movies</category></item><item><title>sell your old cell phones</title><link>https://www.digitalhobbit.com/legacy/2004/06/07/sell-your-old-cell-phones/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/07/sell-your-old-cell-phones/</guid><description>I came across an interesting link on the wireless weblog: CellForCash. They make it easy for you to sell your old cell phones by sending you a postage-paid box.</description><pubDate>Mon, 07 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I came across an interesting link on &lt;a href=&quot;http://wireless.weblogsinc.com/entry/0916813135745557/&quot;&gt;the wireless weblog&lt;/a&gt;: &lt;a href=&quot;http://www.cellforcash.com/&quot;&gt;CellForCash&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;They make it easy for you to sell your old cell phones by sending you a postage-paid box. The few phones that I have checked only sold for slightly above $10, but since they make it so easy, I may very well take advantage of this service to get rid of my old cell phones that are gathering dust in various corners and drawers...&lt;/p&gt;</content:encoded><category>commerce</category><category>mobile</category></item><item><title>RSS Readers</title><link>https://www.digitalhobbit.com/legacy/2004/06/06/rss-readers/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/06/rss-readers/</guid><description>I came across a very nice page on RSS Readers. This looks like a very complete listing of RSS Readers, including client-side applications for various operating systems as well as web-based aggregators. Before I got into blogging (writing but even more importantly reading blogs), I never quite understood the big deal about RSS.</description><pubDate>Sun, 06 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I came across a very nice page on &lt;a href=&quot;http://www.ourpla.net/cgi-bin/pikie.cgi?RssReaders&quot;&gt;RSS Readers&lt;/a&gt;. This looks like a very complete listing of RSS Readers, including client-side applications for various operating systems as well as web-based aggregators.&lt;/p&gt;
&lt;p&gt;Before I got into blogging (writing but even more importantly reading blogs), I never quite understood the big deal about RSS. Sure, there were some decent news sites out there (both commercial and fee-based as well as free) that offered RSS feeds, but it appeared to be over-hyped. But the killer application for RSS is really the blog, as there&apos;s no way I would be able to keep up with the blogs that I&apos;m reading without using an RSS aggregator such as &lt;a href=&quot;http://www.bloglines.com&quot;&gt;Bloglines&lt;/a&gt;. Back in the Nineties, I used to read a lot of usenet newsgroups. In many ways, RSS feeds for blogs have replaced newsgroups for most of my purposes.&lt;/p&gt;</content:encoded><category>blogging</category><category>software</category></item><item><title>Bruce Tate on mountain biking and J2EE</title><link>https://www.digitalhobbit.com/legacy/2004/06/04/bruce-tate-on-mountain-biking-and-j2ee/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/04/bruce-tate-on-mountain-biking-and-j2ee/</guid><description>Bruce Tate, the author of Bitter Java and the upcoming Better, Faster, Lighter Java, published an interesting blog entry on mountain biking and J2EE. He definitely has some very good points, as J2EE has been getting more and more complex since its inception. Lightening up by using some of the simpler, often open source solutions, sounds like a very good idea to me...</description><pubDate>Fri, 04 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bruce Tate, the author of &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?tag=digitalhobbit-20&amp;#x26;path=tg/detail/-/193011043X/qid%3D1086367364/sr%3D1-3&quot;&gt;Bitter Java&lt;/a&gt; and the upcoming &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?tag=digitalhobbit-20&amp;#x26;path=tg/detail/-/0596006764/qid%3D1086367273/sr%3D8-2&quot;&gt;Better, Faster, Lighter Java&lt;/a&gt;, published an interesting blog entry on &lt;a href=&quot;http://weblogs.java.net/pub/wlg/1389&quot;&gt;mountain biking and J2EE&lt;/a&gt;. He definitely has some very good points, as J2EE has been getting more and more complex since its inception. Lightening up by using some of the simpler, often open source solutions, sounds like a very good idea to me...&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Amazon Plog</title><link>https://www.digitalhobbit.com/legacy/2004/06/03/amazon-plog/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/03/amazon-plog/</guid><description>Several blogs have reported that Amazon apparently added a new beta feature called Plog, which they define as a personal blog on their website. It sounds like a plog is mostly a different and slightly more up-to-date way of presenting recommendations to the user.</description><pubDate>Thu, 03 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Several blogs have reported that &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?tag=digitalhobbit-20&amp;#x26;path=subst/home/home.html&quot;&gt;Amazon&lt;/a&gt; apparently added a new beta feature called &lt;strong&gt;Plog&lt;/strong&gt;, which they &lt;a href=&quot;http://www.amazon.com/gp/community/plog/about.html/&quot;&gt;define&lt;/a&gt; as a &lt;em&gt;personal blog&lt;/em&gt; on their website. It sounds like a plog is mostly a different and slightly more up-to-date way of presenting recommendations to the user. On their website they list a few of the more popular blogs as examples, but to be honest I don&apos;t see what their plog feature has to do with blogs. It seems to me like they are just trying to capitalize on the popularity of the blog scene.&lt;/p&gt;
&lt;p&gt;Unfortunately, I didn&apos;t get the blog link on my Amazon front page. It seems like this is only displayed to a limited set of users. Too bad since I would have been curious about this, but then again it doesn&apos;t sound like I&apos;m missing too much.&lt;/p&gt;
&lt;p&gt;As seen &lt;a href=&quot;http://www.boingboing.net/2004/06/02/amazon_says_get_your.html&quot;&gt;here&lt;/a&gt;, &lt;a href=&quot;http://www.johnsjottings.com/archives/2004/06/02/amazon_plog.html&quot;&gt;here&lt;/a&gt;, and &lt;a href=&quot;http://www.kottke.org/04/06/amazon-is-blogging&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>Java-Source.Net</title><link>https://www.digitalhobbit.com/legacy/2004/06/03/java-sourcenet/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/03/java-sourcenet/</guid><description>Another useful link: Java-Source.Net is a nice collection of open source Java software. It appears to be very complete.</description><pubDate>Thu, 03 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Another useful link: &lt;a href=&quot;http://java-source.net/&quot;&gt;Java-Source.Net&lt;/a&gt; is a nice collection of open source Java software. It appears to be very complete.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>Napkin Look and Feel</title><link>https://www.digitalhobbit.com/legacy/2004/06/03/napkin-look-and-feel/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/03/napkin-look-and-feel/</guid><description>A blurb in the Javalobby newsletter mentioned the Napkin Look and Feel. The purpose behind this is to visually indicate that an application is just a prototype and nothing more, in order to prevent managers from assuming that an application is almost complete when they see a nice-looking prototype. I have to say this is rather ingenious, and I am sure many developers have been in this situation before.</description><pubDate>Thu, 03 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A blurb in the &lt;a href=&quot;http://www.javalobby.com&quot;&gt;Javalobby&lt;/a&gt; newsletter mentioned the &lt;a href=&quot;http://napkinlaf.sourceforge.net/&quot;&gt;Napkin Look and Feel&lt;/a&gt;. The purpose behind this is to visually indicate that an application is just a prototype and nothing more, in order to prevent managers from assuming that an application is almost complete when they see a nice-looking prototype. I have to say this is rather ingenious, and I am sure many developers have been in this situation before.&lt;/p&gt;
&lt;p&gt;Too bad I don&apos;t usually do any client side development. Maybe a similar effect could be achieved on the server side using CSS.&lt;/p&gt;</content:encoded><category>java</category><category>development</category></item><item><title>&quot;Engrish&quot;</title><link>https://www.digitalhobbit.com/legacy/2004/06/01/engrish/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/01/engrish/</guid><description>I came across a funny website: http://www.engrish.com. Since English isn&apos;t my native language either, I feel that it should be OK for me to laugh about this. ;)</description><pubDate>Tue, 01 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I came across a funny website: &lt;a href=&quot;http://www.engrish.com/&quot;&gt;http://www.engrish.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since English isn&apos;t my native language either, I feel that it should be OK for me to laugh about this. ;)&lt;/p&gt;</content:encoded><category>websites</category></item><item><title>Nokia ships impressive Nokia 7610 camera phone</title><link>https://www.digitalhobbit.com/legacy/2004/06/01/nokia-ships-impressive-nokia-7510-camera-phone/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/06/01/nokia-ships-impressive-nokia-7510-camera-phone/</guid><description>Nokia just announced that they have started shipping the impressive Nokia 7610 Series 60 camera phone. The price tag of somewhere over $600 seems a little hefty, but with service provider discounts this will probably be available for a lot less. The feature list certainly sounds awesome: 1 Megapixel camera, MIDP 2.0, 8MB internal memory plus 64MB MMC, tri-band, bluetooth, infrared, and USB connectivity, etc.</description><pubDate>Tue, 01 Jun 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Nokia just &lt;a href=&quot;http://press.nokia.com/PR/200406/947561_5.html&quot;&gt;announced&lt;/a&gt; that they have started shipping the &lt;a href=&quot;http://www.nokia.com/nokia/0,,54676,00.html&quot;&gt;impressive Nokia 7610 Series 60 camera phone&lt;/a&gt;. The price tag of somewhere over $600 seems a little hefty, but with service provider discounts this will probably be available for a lot less. The feature list certainly sounds awesome: 1 Megapixel camera, MIDP 2.0, 8MB internal memory plus 64MB MMC, tri-band, bluetooth, infrared, and USB connectivity, etc.&lt;/p&gt;
&lt;p&gt;I would certainly love to have one of these to play with MIDP programming, although I&apos;ve been pretty happy with my Nokia 3650 for this purpose. MIDP 2.0 would be nice, though.&lt;/p&gt;</content:encoded><category>mobile</category></item><item><title>Bloglines temporarily down</title><link>https://www.digitalhobbit.com/legacy/2004/05/31/bloglines-temporarily-down/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/31/bloglines-temporarily-down/</guid><description>Argh... After getting back from a late night shopping trip to IKEA, I tried to hit Bloglines as usual in order to catch up on the blogs that I&apos;m reading, only to find that the site is down for a few hours (undergoing plumbing, as they put it).</description><pubDate>Mon, 31 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Argh... After getting back from a late night shopping trip to IKEA, I tried to hit &lt;a href=&quot;http://www.bloglines.com&quot;&gt;Bloglines&lt;/a&gt; as usual in order to catch up on the blogs that I&apos;m reading, only to find that the site is down for a few hours (undergoing plumbing, as they put it). This made me realize how much I already depend on this site (or at least got used to it), after only having used it for about 1-2 weeks.&lt;/p&gt;
&lt;p&gt;I have to say that Bloglines really provides a great service. By using a server-side aggregator rather than a client-side one (such as one of the Mozilla plugins for this purpose), I can read my blogs both at home and at work without getting out of sync. Bloglines allows blogs to be categorized, which is another nice feature.&lt;/p&gt;
&lt;p&gt;In theory, it can also be used to manage blogrolls, although I found this feature somewhat lacking. For example, there are a fair amount of blogs that I&apos;m reading, but I don&apos;t necessarily want to list all of these on my blog website. While it is possible to mark a blog as private, which prevents it from being shared through Bloglines own interface (assuming sharing is enabled for your account), it will still get exported to OPML, which means that you need to manually edit the OPML data before importing it into your blog. Also, there does not appear to be a way to dynamically retrieve the OPML data for your blogroll using a URL, so after updating your blog links in Blogroll you need to manually export these to OPML and import them into your blog software.&lt;/p&gt;
&lt;p&gt;I&apos;ll probably end up looking at some other services that I haven&apos;t tried yet (such as &lt;a href=&quot;http://www.blogrolling.com/&quot;&gt;Blogrolling.com&lt;/a&gt;) for this purpose, but I&apos;m pretty sure that I&apos;ll stick with Bloglines for reading blogs, since it really dows an awesome job at this.&lt;/p&gt;</content:encoded><category>blogging</category></item><item><title>Thief: Deadly Shadows released</title><link>https://www.digitalhobbit.com/legacy/2004/05/31/thief-deadly-shadows-released/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/31/thief-deadly-shadows-released/</guid><description>I just noticed that Thief: Deadly Shadows, the third installment in the awesome Thief &quot;first person sneaker&quot; computer game series has been released a few days ago. I have been looking forward to this game for a while, so I&apos;ll probably order it tomorrow or pick it up at a local store.</description><pubDate>Mon, 31 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just noticed that Thief: Deadly Shadows, the third installment in the awesome Thief &quot;first person sneaker&quot; computer game series has been released a few days ago. I have been looking forward to this game for a while, so I&apos;ll probably order it tomorrow or pick it up at a local store. Not that I actually have any time to play it right now, since we are in the middle of buying a house and I haven&apos;t even had much of a chance to play the last few games that I bought (Far Cry, Battlefield Vietnam, and Unreal Tournament 2004), but there&apos;s no way around it. Things should get a little quieter soon, and then I&apos;ll be glad for a little stealth action.&lt;/p&gt;</content:encoded><category>games</category></item><item><title>Don&apos;t panic</title><link>https://www.digitalhobbit.com/legacy/2004/05/29/dont-panic/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/29/dont-panic/</guid><description>I did a little more research on the upcoming Hitchhiker&apos;s Guide to the Galaxy movie. Apparently, they have started shooting last month, things are going well so far, and the movie is scheduled to be released mid-2005. The cast looks interesting as well. Martin Freeman, who is known from his role as Tim in The Office, plays the part of Arthur Dent, which I think is a brilliant casting.</description><pubDate>Sat, 29 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I did a little more research on &lt;a href=&quot;http://www.imdb.com/title/tt0371724/&quot;&gt;the upcoming Hitchhiker&apos;s Guide to the Galaxy movie.&lt;/a&gt; Apparently, they have started shooting last month, things are going well so far, and the movie is scheduled to be released mid-2005. The cast looks interesting as well. Martin Freeman, who is known from his role as Tim in The Office, plays the part of Arthur Dent, which I think is a brilliant casting. Sam Rockwell as Zaphod should be good as well. I am somewhat unsure about Mos Def as Ford Prefect, mostly because I, probably like many other fans of HHGG, have certain preconceived notions about how Ford Prefect should look, based on the books as well as the BBC series. But while a black Ford Prefect may initially seem odd, Mos Def may very well pull it off. Another nice touch is that apparently Marvin&apos;s voice will come from Stephen Moore, who already lent Marvin his voice in the original BBC series.&lt;/p&gt;
&lt;p&gt;On a related note, a few days ago was &lt;a href=&quot;http://www.towelday.org/&quot;&gt;Towel Day&lt;/a&gt;. Maybe I&apos;ll remember it next year...&lt;/p&gt;
&lt;p&gt;Last not least, always remember:&lt;/p&gt;
&lt;img src=&quot;/legacy/img/wp-content/images/dontpanic.jpg&quot; alt=&quot;don&amp;#x27;t panic&quot;&gt;</content:encoded><category>entertainment</category><category>movies</category></item><item><title>Gmail - What&apos;s the big deal?</title><link>https://www.digitalhobbit.com/legacy/2004/05/29/gmail-whats-the-big-deal/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/29/gmail-whats-the-big-deal/</guid><description>Everybody appears to be very upset about Google&apos;s new Gmail service because it analyzes the user&apos;s emails in order to deliver targeted ads. Yesterday, California&apos;s Senate passed a bill that restricts Gmail by requiring it to perform all analysis in real time, i.e. without storing any information, among other things. Personally, I don&apos;t see what the big deal is.</description><pubDate>Sat, 29 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Everybody appears to be very upset about Google&apos;s new &lt;a href=&quot;https://gmail.google.com/&quot;&gt;Gmail&lt;/a&gt; service because it analyzes the user&apos;s emails in order to deliver targeted ads. Yesterday, California&apos;s Senate passed a bill that restricts Gmail by requiring it to perform all analysis in real time, i.e. without storing any information, among other things.&lt;/p&gt;
&lt;p&gt;Personally, I don&apos;t see what the big deal is. Last I heard, this was a free country, and nobody is forced to use Google&apos;s Gmail service. As long as the terms and conditions are clear from the beginning and people are aware that their emails are being analyzed, I don&apos;t see any problems. And it is not like the emails will be read by people - they will simply be automatically analyzed in order to deliver targeted ads. In fact, if I have to live with ads (and all the other email services such as Yahoo or Hotmail show these as well), I would much rather see relevant ads (particularly Google&apos;s comparatively nice, unobstrusive text ads) than flashy, irrelevant (and often embarassing) ads.&lt;/p&gt;
&lt;p&gt;Just my 2 cents... See here for &lt;a href=&quot;http://slashdot.org/article.pl?sid=04/05/28/1826228&quot;&gt;the Slashdot discussion&lt;/a&gt; about the newly passed bill.&lt;/p&gt;</content:encoded><category>technology</category></item><item><title>Hitchhiker&apos;s Guide to the Galaxy Movie</title><link>https://www.digitalhobbit.com/legacy/2004/05/29/hitchhikers-guide-to-the-galaxy-movie/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/29/hitchhikers-guide-to-the-galaxy-movie/</guid><description>When Douglas Adams was still alive, he made several attempts to turn the Hitchhiker&apos;s Guide to the Galaxy series into a movie, and he had a hard time doing this. Mostly, this is because the series just doesn&apos;t resemble the structure that movies require, such as a distinguished beginning, middle, and end. Therefore, any such attempt would probably require fairly significant changes to the story.</description><pubDate>Sat, 29 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When Douglas Adams was still alive, he made several attempts to turn the Hitchhiker&apos;s Guide to the Galaxy series into a movie, and he had a hard time doing this. Mostly, this is because the series just doesn&apos;t resemble the structure that movies require, such as a distinguished beginning, middle, and end. Therefore, any such attempt would probably require fairly significant changes to the story. While I obviously trusted Douglas to get this right, I was initially very concerned when I heard that they were going to proceed with the movie after his passing away.&lt;/p&gt;
&lt;p&gt;The official movie website just posted a &lt;a href=&quot;http://hitchhikers.movies.go.com/hitchblog/interview.htm&quot;&gt;self-interview of the screenwriter, Karey Kirkpatrick&lt;/a&gt;. After reading this, I am pretty optimistic about the outcome of the movie again. Karey worked on Chicken Run before, although I am not sure if this qualifies him for writing the screenplay for HHGG. He was however a big Monty Python fan growing up, and one of his quotes about Life of Brian (my favorite movie!!!) is pretty much exactly what I always say about it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;So it was important to me that that intelligence remains at the epicenter of the piece. It&apos;s what I love about Python&apos;s &quot;Life of Brian.&quot; That movie is just a hair&apos;s breadth away from being viable theology.&apos;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&apos;m a little more concerned about the directors, Hammer and Tong. While they sound like they are on the same page and overall a good fit, they appear to have only directed commercials and music videos so far, and this will be their first feature film.&lt;/p&gt;
&lt;p&gt;And of course, here&apos;s the obligatory &lt;a href=&quot;http://slashdot.org/article.pl?sid=04/05/28/2112201&quot;&gt;Slashdot discussion&lt;/a&gt; about this topic.&lt;/p&gt;
&lt;p&gt;Whatever the outcome, I can&apos;t wait to see this film!&lt;/p&gt;</content:encoded><category>entertainment</category><category>movies</category></item><item><title>Our new house</title><link>https://www.digitalhobbit.com/legacy/2004/05/29/our-new-house/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/29/our-new-house/</guid><description>We had a home inspection for our new house today, and we still love it. We need to do some fairly minor electrical upgrades and fix a few other things, but overall everything is in great shape. We also took the opportunity to drive around a little in our neighborhood as well as adjacent neighborhoods.</description><pubDate>Sat, 29 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We had a home inspection for our new house today, and we still love it. We need to do some fairly minor electrical upgrades and fix a few other things, but overall everything is in great shape.&lt;/p&gt;
&lt;p&gt;We also took the opportunity to drive around a little in our neighborhood as well as adjacent neighborhoods. The house itself is in Merced Heights, a pretty decent and family friendly, but otherwise somewhat boring area. After trying to figure out the closest areas with shopping and restaurants, we ended up in West Portal, which is only about 5 minutes by car from our house. I have to say it looks like a very nice little neighborhood, with a ton of nice-looking restaurants that seem to cover pretty much all cuisines, as well as cafes, several bookstores, and other shops.&lt;/p&gt;
&lt;p&gt;Before we had kids and moved to Concord about 3 years ago, we lived in San Francisco for 2 1/2 years. Therefore, we were quite surprised that we had never come across West Portal before. I think we just rarely ventured this far south and stayed north of Golden Gate Park most of the time. It looks like there is certainly a lot to explore in the southern regions of San Francisco, and of course now that we have children (which we did not have when we last lived in the city), we see everything with different eyes anyway.&lt;/p&gt;
&lt;p&gt;The many different little areas are one of the things we like most about San Francisco. Even though the city is not all that big, it offers so many completely different places: Downtown, Northbeach, Chinatown, Richmond, the Castro, Mission, Haight Ashbury, West Portal, and many more. We can&apos;t wait to move back to San Francisco, although it looks like we won&apos;t be able to move before July 20.&lt;/p&gt;</content:encoded><category>sfbayarea</category></item><item><title>Test Driven vs. Test First development</title><link>https://www.digitalhobbit.com/legacy/2004/05/28/test-driven-vs-test-first-development/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/28/test-driven-vs-test-first-development/</guid><description>Dave Thomas of The Pragmatic Programmers posted an interesting blurb on the differences between test-driven and test-first development. In Agile / XP circles, these two practices are usually lumped into one, but Dave points out some good arguments for distinguishing between them.</description><pubDate>Fri, 28 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dave Thomas of &lt;a href=&quot;http://www.pragmaticprogrammer.com/&quot;&gt;The Pragmatic Programmers&lt;/a&gt; posted &lt;a href=&quot;http://pragprog.com/pragdave/Practices/TestDrivenOrTestFirst.rdoc&quot;&gt;an interesting blurb&lt;/a&gt; on the differences between test-driven and test-first development. In Agile / XP circles, these two practices are usually lumped into one, but Dave points out some good arguments for distinguishing between them. Test-driven development simply means that the design is influenced by the unit tests, for example by refactoring the code to make it more easily testable, since code that is difficult to test is often an indication of bad design. However, this does not necessarily imply that test cases are written before the actual code, as in test-first development, which takes this concept to an even stricter level. Dave describes this as &quot;unnecessarily high-church&quot;, and I would tend to agree with this statement. I definitely know that I could benefit from at least following test-driven development a little more closely than I may have in the past...&lt;/p&gt;</content:encoded><category>development</category></item><item><title>Got the house!</title><link>https://www.digitalhobbit.com/legacy/2004/05/27/got-the-house/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/27/got-the-house/</guid><description>We got it! Unfortunately (well, I guess fortunately, since we would not have gotten it otherwise) our initial offer was countered and we had to increase the offer amount (which was already beyond our original limit) quite a bit. Oh well... I&apos;m trying not to think about the amount and instead be happy that we got the place we wanted.</description><pubDate>Thu, 27 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We got it! Unfortunately (well, I guess fortunately, since we would not have gotten it otherwise) our initial offer was countered and we had to increase the offer amount (which was already beyond our original limit) quite a bit. Oh well... I&apos;m trying not to think about the amount and instead be happy that we got the place we wanted.&lt;/p&gt;</content:encoded><category>sfbayarea</category></item><item><title>Why I like my TiVo</title><link>https://www.digitalhobbit.com/legacy/2004/05/27/why-i-like-my-tivo/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/27/why-i-like-my-tivo/</guid><description>Last christmas we finally gave in and bought a TiVo, and even though I had my doubts at first, not being a big fan of TV in general, I have to admit that I like this device a lot more than I would have thought. Previously, I was fed up with cable TV to a point where I would watch almost no TV at all, other than maybe the occasional Startrek episode. First of all, being tied to the particular time that shows aired was getting increasingly difficult with two kids. Second, most TV shows simply aren&apos;t good enough to compensate for having to sit through endless commercial breaks, and third, it seems like all the interesting shows are always on when I don&apos;t have time to watch TV or simply don&apos;t feel like it. VHS is simply too much of a hassle to be a real alternative. And for movies, we pretty much gave up with TV and switched to Netflix 3 years ago. This is the main reason that we have not bought a TiVo before, since we were (and still are) happy with Netflix, which meant that we always had some new movies at home. After about 5 months with a TiVo, I find it hard to imagine not having one any more. Even though I still watch very little TV, the added convenience is simply great. Whenever I have a few minutes and feel like watching TV (for example when bottle-feeding our baby), I simply switch to an episode of The Office, Southpark, Chapelle&apos;s Show, or whatever else I might have recorded. I can easily stop in the middle of a show and continue to watch it some other time, and even if my wife wants to watch something else in the mean time this is no problem, since the TiVo remembers where I left off.</description><pubDate>Thu, 27 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last christmas we finally gave in and bought a &lt;a href=&quot;http://www.tivo.com&quot;&gt;TiVo&lt;/a&gt;, and even though I had my doubts at first, not being a big fan of TV in general, I have to admit that I like this device a lot more than I would have thought.&lt;/p&gt;
&lt;p&gt;Previously, I was fed up with cable TV to a point where I would watch almost no TV at all, other than maybe the occasional Startrek episode. First of all, being tied to the particular time that shows aired was getting increasingly difficult with two kids. Second, most TV shows simply aren&apos;t good enough to compensate for having to sit through endless commercial breaks, and third, it seems like all the interesting shows are always on when I don&apos;t have time to watch TV or simply don&apos;t feel like it. VHS is simply too much of a hassle to be a real alternative. And for movies, we pretty much gave up with TV and switched to Netflix 3 years ago. This is the main reason that we have not bought a TiVo before, since we were (and still are) happy with Netflix, which meant that we always had some new movies at home.&lt;/p&gt;
&lt;p&gt;After about 5 months with a TiVo, I find it hard to imagine not having one any more. Even though I still watch very little TV, the added convenience is simply great. Whenever I have a few minutes and feel like watching TV (for example when bottle-feeding our baby), I simply switch to an episode of The Office, Southpark, Chapelle&apos;s Show, or whatever else I might have recorded. I can easily stop in the middle of a show and continue to watch it some other time, and even if my wife wants to watch something else in the mean time this is no problem, since the TiVo remembers where I left off.&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;The major downside is the fact that the entry level (&quot;40 hour&quot;) TiVo models only store a small amount of recordings. While they can store up to 40 hours, this is only the case at the lowest quality setting, which causes noticeable image degradation. I usually record at high (not best) setting, which is good enough for me and yields around 20 hours.&lt;/p&gt;
&lt;p&gt;Of course, all of this can be changed fairly easily by &quot;hacking&quot; the TiVo, and this is a major aspect of the TiVo&apos;s fascination for me as a geek. Internally, the TiVo is a real computer that runs the Linux operating system and stores its recordings on a regular IDE hard drive. One of the simpler and well-documented upgrades consists of upgrading the hard drive. Older (Series 1) TiVo&apos;s generally have room for two hard drives, which makes it easy to add a second hard drive. Most newer (Series 2) TiVo&apos;s only have room for a single hard drive out of the box, but people have come up with various ways of adding a second drive using custom mounting brackets. Of course, with hard drive prices being as cheap as they are these days, a simple option is to replace the existing hard drive. One hour (at least the way TiVo counts this at the low quality setting) equals approximately 1GB, so the entry level 40 hour model comes with a 40GB hard drive. Replacing this with a 120GB drive is definitely enough of an initial boost, and it is always possible to add a second drive later if this still is not enough space.&lt;/p&gt;
&lt;p&gt;The canonical guide for all types of TiVo hard drive upgrades is the excellent &lt;a href=&quot;http://www.newreleasesvideo.com/hinsdale-how-to/index9.html&quot;&gt;Hinsdale How-to&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Upgrading the hard drive capacity is only the first step, though, since a lot more things can be hacked. Other hacks allow users to gain network access to their TiVo, which in turn makes it easy to install and use additional hacks, such as the various options for extracting recordings from the TiVo, for example in order to archive them on DVD-R. This is a somewhat controversial topic and is not discussed on some of the TiVo-sanctioned websites, but I believe that it falls well into the fair use of the device, as long as it is only done for personal use.&lt;/p&gt;
&lt;p&gt;This is my introductory posting on this topic. Future postings will cover specific hacks and other information, such as the exact process I followed to perform the hard drive upgrade and get network access to the TiVo at the same time.&lt;/p&gt;</content:encoded><category>entertainment</category></item><item><title>Buying a house</title><link>https://www.digitalhobbit.com/legacy/2004/05/25/buying-a-house/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/25/buying-a-house/</guid><description>I am feeling very jittery today because we are about to make an offer on a house in San Francisco, and while the offer price is high enough that it will likely ruin us financially, we are expecting so much fierce competition about this property that the chances of actually getting it are probably fairly slim. So please keep your fingers crossed, because we really love this place.</description><pubDate>Tue, 25 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I am feeling very jittery today because we are about to make an offer on a house in San Francisco, and while the offer price is high enough that it will likely ruin us financially, we are expecting so much fierce competition about this property that the chances of actually getting it are probably fairly slim. So please keep your fingers crossed, because we really love this place.&lt;/p&gt;</content:encoded><category>sfbayarea</category></item><item><title>Kids and jetlag</title><link>https://www.digitalhobbit.com/legacy/2004/05/23/kids-and-jetlag/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/23/kids-and-jetlag/</guid><description>My wife and kids (one almost 3, the other 11 months old) recently returned from an extended Germany vacation, after which I discovered that it is much more exhausting to have children that suffer from jetlag than to suffer from jetlag myself. For the first couple of days, 2 AM to 4 AM suddenly became play time, dinner time, potty time, etc.</description><pubDate>Sun, 23 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My wife and kids (one almost 3, the other 11 months old) recently returned from an extended Germany vacation, after which I discovered that it is much more exhausting to have children that suffer from jetlag than to suffer from jetlag myself. For the first couple of days, 2 AM to 4 AM suddenly became play time, dinner time, potty time, etc. Not much fun when you need to get up early to go to work. ;)&lt;/p&gt;
&lt;p&gt;After about a week, they appear to have finally settled back into their regular schedules. Definitely something to consider if you&apos;re planning a short trip to a place with a significant time difference (Germany / San Francisco is 9 hours), as your kids will likely spend a better part of the trip adjusting to the new schedule (along with all the crankiness that goes along with this), only to have to adjust back to the old schedule after the return. Not that you can do much about it...&lt;/p&gt;</content:encoded><category>family</category></item><item><title>Sharing bookmarks between Mozilla and IE</title><link>https://www.digitalhobbit.com/legacy/2004/05/23/sharing-bookmarks-between-mozilla-and-ie/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/23/sharing-bookmarks-between-mozilla-and-ie/</guid><description>Is it just me, or is there really no good way of sharing bookmarks between Mozilla (or Firefox) and IE? While I used to browse using IE up until recently, I find myself using Firefox most of the time these days, mostly due to its excellent support for tabbed browsing (_does anybody else find it surprising that IE still does not support this feature?_).</description><pubDate>Sun, 23 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Is it just me, or is there really no good way of sharing bookmarks between Mozilla (or Firefox) and IE?&lt;/p&gt;
&lt;p&gt;While I used to browse using IE up until recently, I find myself using Firefox most of the time these days, mostly due to its excellent support for tabbed browsing (&lt;em&gt;does anybody else find it surprising that IE still does not support this feature?&lt;/em&gt;). However, I still use IE sometimes, and I would really like to see a good way of sharing bookmarks between these two browsers. Both browsers support import / export mechanisms that allow me to manually synchronize bookmarks, but there is no way of performing this synchronization automatically whenever a bookmark is added, removed, or edited.&lt;/p&gt;
&lt;p&gt;For various reasons, I prefer IE&apos;s storage of bookmarks (aka &quot;Favorites&quot;) as files on the filesystem. I think that the hierarchical nature of bookmarks and categories maps very well to folders and files, and I find it much easier to manage bookmarks this way than to deal with the clunky HTML file that Mozilla uses for this purpose. This also allows me to easily synchronize sub-categories of bookmarks between different computers (for example at home and at work).&lt;/p&gt;
&lt;p&gt;My ideal solution would probably consist of a Mozilla option that would cause it to store its bookmarks as favorites instead and disable the &quot;bookmarks.html&quot; file alltogether. Because of Mozilla&apos;s platform independent nature, I realize that this feature is highly unlikely to ever get implemented, and I don&apos;t feel like messing with the core Mozilla source code myself. I am curious if this could be implemented as an extension, though. I should look into this when I get a chance...&lt;/p&gt;</content:encoded><category>technology</category><category>software</category></item><item><title>Almost missed the blog train</title><link>https://www.digitalhobbit.com/legacy/2004/05/22/almost-missed-the-blog-train/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/22/almost-missed-the-blog-train/</guid><description>It looks like I almost missed the blog train, but at least I was still able to jump on at the last second. It looks like pretty much everyone else already has a blog. Even Microsoft&apos;s Bill Gates recently acknowledged the importance of blogs. Oh well, once you&apos;re done reading the other thousands of blogs out there, maybe you&apos;ll get a chance to check out mine. ;)</description><pubDate>Sat, 22 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It looks like I almost missed the blog train, but at least I was still able to jump on at the last second. It looks like pretty much everyone else already has a blog. Even Microsoft&apos;s Bill Gates recently &lt;a href=&quot;http://news.bbc.co.uk/2/hi/technology/3734981.stm&quot;&gt;acknowledged the importance of blogs.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Oh well, once you&apos;re done reading the other thousands of blogs out there, maybe you&apos;ll get a chance to check out mine. ;)&lt;/p&gt;</content:encoded></item><item><title>Welcome to my blog!</title><link>https://www.digitalhobbit.com/legacy/2004/05/21/welcome-to-my-blog/</link><guid isPermaLink="true">https://www.digitalhobbit.com/legacy/2004/05/21/welcome-to-my-blog/</guid><description>Hello, and congratulations on finding my blog. It is somewhat surprising that it has taken me this long to join the blogging community, given that I have been using the Internet since the early to mid-nineties, when virtually nobody had Internet access at home and students like myself were just starting to browse the web in college.</description><pubDate>Fri, 21 May 2004 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hello, and congratulations on finding my blog. It is somewhat surprising that it has taken me this long to join the blogging community, given that I have been using the Internet since the early to mid-nineties, when virtually nobody had Internet access at home and students like myself were just starting to browse the web in college. We were using the bland Mosaic browser at the time, and I remember when the much more modern-looking Netscape browser came out. Email was usually handled using command-line tools like Elm, and people were still using Gopher. But I disgress...&lt;/p&gt;
&lt;p&gt;Anyway, a good 10 years later I finally have my own blog, and I&apos;ll (ab)use this  space to talk about topics of interest to me. On a high level, this includes software engineering and programming, computers in general, games, family and kids, media, entertainment, and San Francisco. On a low level, this fluctuates quite a lot as topics shift in and out of focus. Currently, blogging and TiVo hacking are examples for specific things that I&apos;m interested in, but expect this to change any time. ;)&lt;/p&gt;
&lt;p&gt;Please check back often, and bear with me while I&apos;m fine-tuning the site, playing with the design, updating my blogroll, and generally getting up to speed on this whole blogging thing.&lt;/p&gt;</content:encoded></item></channel></rss>