My Adventures in Blogging
 Sunday, August 12, 2007
My IronRuby "Aha" Moment

A week ago, I attended a PADNUG presentation by John Lam on the IronRuby project being done at Microsoft.  In short, IronRuby is a Ruby implementation that runs in the .NET CLR, and therefore has native access to the .NET libraries.

This both intrigued and confused me.  Last year, at Portland Code Camp 2.0, I attended a session on Iron Ruby.  That wasn’t presented by John.  I couldn’t figure out what was going on.  Well, today I found Wilco Bauwer’s blog.  Wilco’s the developer of the original IronRuby, and the presenter that I saw last year.  Apparently, the current IronRuby has no relation to Wilco’s project.  However, Microsoft did ask Wilco for permission to use the name, and he did agree.

At least, my confusion is now cleared up.


8/12/2007 10:11:15 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  development

Builds and Build Scripts

Currently, I’m using BAT files for my build automation.  Over the years, I’ve been pretty happy with BAT files for this purpose.  Microsoft has done a very good job of improving the capability of the command language over the years.  Recently, though, I’ve been bumping into the limitations of BAT files. 

My main problem is the weak support for variables.  I use Environment variables and SET for script variables.  In most use, it works great.  Since each invocation of a BAT file gets its own Environment, new variables are automatically “local” to that file; this makes structured programming easy, as long as you don’t mind each subroutine being in a separate file (I don’t).  However, global state management is extremely difficult.

So, I’ve been looking for an alternative.

One obvious choice would be vbscript or javascript, using Windows Scripting Host. After all, it was built for scripting, right?  I tried this years ago, when WSH first came out.  I learned that both vbscript and javascript are horrible programming languages (hence the move at Microsoft from ASP (vbs, js) to ASP.NET (c#, vb).  The scripts were only marginally more maintainable than Perl (my first build scripting language, 10 years ago).

My next choice was PowerShell.  I’ve been intrigued by PowerShell since I first saw it at PDC two years ago (when it was still called “Monad”).  The idea of seamlessly calling into the .NET library is compelling.  Reality turned out to be a different story.  While I’m sure that PowerShell makes doing routine WMI or ADSI automation easy (the interfaces in .NET for these are horrible), batch-style automation (where you  are automating the execution of programs themselves) is terrible.  I found myself repeatedly calling directly into .NET to do things that should have been built into the scripting language (like changing the current directory).  It was slow, slow going.  When I finally hit a wall, unable to figure out how to do what should have been a simple task, I gave up.

I decided to try Ruby.  Now, as some of you know, I looked at Ruby for scripting way back in the ‘90s when scripting (around Python back then) was just heating up.  I was looking for an alternative for Perl (sound familiar?), but didn’t like the arcane syntax of Python.  Ruby looked promising, but since there wasn’t a community of any size around it, I abandoned it as an alternative.  A decade can make a big difference.  Thanks to Ruby on Rails, its now (in my opinion) hotter than Python.  I did a quick check on capabilities, and it looked like I could easily do with Ruby what I couldn’t figure out how to do in PowerShell. I decided to give it a try.

Sure enough, in less time than I spent with PowerShell, I was able to get a couple of my BAT scripts coverted to Ruby.  As an aside, I’m using Ruby in Steel as my development environment.  It’s great: it allows me to do my work right in Visual Studio 2005, with syntax highlighting, Intellisense, and integrated debugging.

The only real problem I was running into was Ruby’s syntax.  Ruby is definitely not in the “Algol” family of languages like C, C++, Java, and C#.  I was handling the simple stuff easily, but the more complex stuff was sailing over my head.  The books I had (O’Reilly’s Learning Ruby and Ruby in a Nutshell) were very little help.  I decided to pick up a couple of other books.  Since the Ruby Cookbook was some help with my trial scripts, I picked it up as well as the “Ruby Bible”, Programming Ruby (the “pickaxe book”).  I was shocked to discover the existence of a utility called Rake!

Rake is a Ruby-based Make utility.  This intrigued me, so I did some research.  Rake is a cross between Unix Make and Java’s Ant.  With it, you can do dependency-style builds (like Make) or task-style builds (like Ant or NAnt).  The beauty of it is that the build scripts are still just Ruby!

I’m a big fan of the task-style build process used by NAnt, but I don’t like the fact that the input file is XML.  XML is just not suited for process-based programming, such as build scripts. It’se extremely difficult to read and maintain.  Rake lets me build tasks and task dependencies, just like NAnt, but each step is procedural, not just a list of XML elements.  As an added bonus, I get the full power of Ruby to accomplish what I need to do. Remember that the thing that got me down this path in the first place was the limitations of BAT files.

The outcome of all this is, first, that I’ll be giving Rake a try for build automation (and I have high hopes).  Secondly, I’m intrigued by Ruby’s capabilities for creating DSL’s (Domain Specific Languages).  DSL’s are hot right now.  .NET’s LINQ is an interesting example of a DSL.  The problem with LINQ is that it required changing the compiler to support it (due to the syntactic limitations of C#).  Ruby’s flexible syntax makes implementing a usable DSL possible without changing the interpreter.  I’m starting to think that this will be the ultimate advancement that Ruby brings to general programming.

As usual, this ability is not new. Stack based programming languages, like Forth and (yes) Postscript, have had this capability for years (or decades!), but stack-based programming languages have their own problems. Having similar capabilities in a more “traditional”, object oriented language is refreshing.

Now, I’m off to the store, to buy yet more Ruby books


8/12/2007 9:58:42 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  development

 Sunday, August 05, 2007
Big Warcraft News!
According to The Movie Blog, Blizzard has announced that the World of Warcraft movie will be released in 2009! I can’t wait
8/5/2007 7:38:12 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  TV

I finally have Orcas loaded

With the Beta 2 release of Visual Studio 2008 (Orcas), I decided that it was time to load it.  I’m really interested in Silverlight’s capabilities.  I think it may be the final answer to the problems of developing web applications in HTML and JavaScript.  Flash comes close, but ActionScript isn’t much differnt from JavaScript.  With Silverlight 1.1, I can write a web application in C#, not just an HTML/Javascript emitter (like ASP).

Great idea, but Orcas wasn’t cooperating.  I got an error -2147467259 when trying to install.  I played with the installer settings, no good.  I downloaded the Pro version instead of the Standard version, no good (and why do the installers for these two versions look so different???).  I checked the web for days, and no answers.  I even found a Microsoft feedback issue around this error. MS said that they couldn’t repeat the error and closed the issue  .

Finally, on Saturday, someone said to check if the Web tools were already installed, and if so remove them.  Well, I didn’t have Web tools installed, but I did have the CTP of Expressions Web Developer installed. So, I uninstalled that (and a bunch of foreign language dot net stuff).  Bingo, Orcas is now installed.  Now, I just have to figure out how to do anything useful .


8/5/2007 7:31:48 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  technology

 Friday, June 29, 2007
Wii Adendum
An addendum to my previous Looking For Wii entry:  I found one.  I was in Best Buy at just the right time, and was able to snag one.  I like it.  It a lot of fun playing WiiSports.  However, traditional games don’t take advantage of the Wii’s unique interface. I’m hoping that more Wii-specific games come out soon. I can only play so much baseball and tennis
6/29/2007 12:34:10 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  general

A Bittersweet night

Last night was a bittersweet night for me.  It was the season (and series) finale for Studio 60.  When this show started the season, it was the best thing on TV (no, really.  No hype.).  On the other hand, I thought its fraternal twin, 30 Rock was the worst show on TV.

In the following weeks, Tina Fey got her sitcom legs and the show began to get really funny.  It ended the season at the top of my list.  At the same time, Studio 60 was tanking.  The show meandered around, with plots that could be summed up as “who cares?”.  Ironically, it wasn’t until the end of the Fall season that the show started working its way out of the doldrums. It was too late.  NBC started sticking other shows in its time slot (none of which did any better, ratings-wise), until it became clear that Studio 60 was dead meat.  I started hearing stories that the actors were moving on, and even if NBC had a change of heart, there wasn’t a cast for another season. 

Then, after the regular season ended, NBC played the last shows.  They’ve been beautiful.  While they haven’t risent to the quality of the pilot, they’ve been top caliber TV. 

Now, it’s all over. I’m going to miss this cast; they were all stellar talent. I hope that I’m going to see them again soon.


6/29/2007 12:31:27 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  TV

 Saturday, May 12, 2007
Looking for Wii

Based on a friend’s recommendation, I decided a couple of weeks ago to get a Wii.  Since then, I haven’t seen a single unit in the stores.  Nintendo can’t be happy about this. I know my enthusiasm is waning.  I used to be a slam-dunk sale. Today, not so much.  It just goes to show how important a good supply chain is.


5/12/2007 2:38:45 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [1]  

 Thursday, May 10, 2007
Back in Business
Okay, it looks like I”m back in the Blog business. At least by still using dasBlog 1.8.  Now, I just need to find the time to write. I wonder how Jennifer does it…
5/10/2007 9:34:47 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [1]  

Another try
Trying to post from BlogJet again…. Let’s see if this works now too..
5/10/2007 9:32:34 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  general

Well, that worked

Okay, so deleting log files once again got the system to work. Maybe I need to purge old entries...


5/10/2007 9:30:06 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  

I can't seem to post

Okay, second try.  Posts don't seem to be working anymore.  Maybe its time to abandon DasBlog for a *real* blog system.


5/10/2007 9:29:13 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  

 Monday, February 19, 2007
Nice.
Hey hey hey.  Posting worked this time, and BlogJet 2 is a huge improvement over the 1.6 I was using before.
2/19/2007 4:41:41 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]  

BlogJet 2.0

I was here yesterday.  Now that posting to the blog seems to work again, time to try BlogJet 2 again…


2/19/2007 4:40:27 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]  

It seems that I filled up my blog...

I finally got back to blogging yesterday, and what did I discover? 

My blog site no longer worked!!!!  After spending yesterday and now today trying to figure out why my site would spontaneously stop working, I discovered some strangeness in my log files.

I”m still not exactly sure what happened, but at least, blogging works again!


2/19/2007 8:36:07 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]  general

Yet another test
Yet another test.  Explanation to follow…
2/19/2007 8:34:07 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]  general

Test 3

Third test.


2/19/2007 8:32:24 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]  

 Monday, December 11, 2006
Simplicity isn't so simple

Today, Joel had a post about Simplicity. To me, his point was “it’s not simplicity that sells, its complexity”.  I find this an interesting perspective coming from someone who has a product (FogBugz) that is incredibly simple and whose simplicity is one of its biggest selling points.  Now, this is not a criticism of either Joel or FogBugz.  Hey, I love FogBugz. I use it all of the time, and it rarely gets in my way. And, it allows me to do things that more “complex” systems don't.  Because of its simplicity  .

I think people (and developers, especially) get seduced by “simplicity”.  It isn’t about simplicity, its about (first) usability.  Usability is a particularly personal thing.  To extend Joel’s example, what I do with a word processor isn’t necessarily what a Marketing worker will do with a word processor.  We both want the feature sets that we “need” to do our jobs.  What we don’t want is to have the features that we don’t use get in the way of what we do use.


12/11/2006 4:24:25 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]  development