I just made a WebMatrix Extension

I’ve been noddling with node.js for a while now. Though now that’s it officially supported by Microsoft I fell it is no longer cool. After trying many editors for my node projects I finally settled on WebMatrix. Just enough IDE without the bloat of a Visual Studio

I use the Canary build of Google Chrome as my main browser so I finally got frustrated and figured out how to launch it from WebMatrix. Well, it turns out you have to write some code!

The code’s pretty simple, it took longer to make a pretty icon and upload it to the gallery than to write it.

Let’s see if anyone downloads it.

The code’s posted on github: https://github.com/petermtate/Canary-WebMatrixExtensionImage



Running Linux, Lucid Lynx Edition

So I haven’t run Linux in a few years and I’ve heard that Ubuntu was the latest in Linux hotness for the desktop so I thought I’d give it a try.  It wasn’t too hard, I went over and downloaded VirtualBox and grabbed the Lucid Lynx VirtualBox image of Ubuntu and fired it up.

It worked. The whole process took about 30 minutes.

Now what?

InfoMagic September 1996 Linux 6 CD SetI first installed Linux in the fall of 1996.  Apparently when I had a lot more time on my hands than I do now.  There was a local discount computer outlet in my ‘seen better days’ mall near the family home that had the “InfoMagic Linux Developer’s Resource 6 CD set”.I remember thinking: “Wow! are there really 6 CD’s in there?”, and only $22.  Now the internet thing was around in 1996, and I had a dial-up account through the university, but downloading a Linux distro of even moderate size on a 14.4 K Baud modem was not really going to happen (especially since our connections had a max connection time of 1 hour).

Installing Linux meant selecting a distribution, there was Red Ht 3.0.3, Slackware 3.1, and Debian 1.1.4. I chose Slackware because it used the ‘new’ 2.0 kernel.  Installing meant pouring through pages of “how To” guides on partitioning hard drives (especially enabling support for my ‘large’ 750 MB hard drive), getting a loader setup to dual-boot Windows 95, and being scared to death of screwing up and erasing Windows.   Slackware was partitioned into 1.44 MB (floppy) sized chunks labeled A, B, C.. and what seemed like thousands of options during the install process (do you want Klingon fonts with that?) and in the end I got a scary looking command line, which sent me back to the store to buy the first edition of Running Linux.  This is how I got my first exposure to Unix like systems and learned the basics of system administration.

The first edition of Running Linux It took many late nights getting X Windows setup and running.  You had to use utilities to figure out compatible dot timings for your video card and monitor and edit the XF86 config files, and hope you were lucky enough that there was a driver for your exact model of video card. It was great fun.

I’ve installed and played with Linux off and on over the years and even used it on a project at work for a year or so.  These days, I don’t really have much of a compelling reason to touch it, any UNIX utilities I want or need are either available, or can easily be compiled using Cygwin.

Now Linux just works. It’s easy. So I’m going to move on.

Checking out node.js on Windows

I first heard about about node.js after listening to  the Herding Code podcast.  Node.js is an event driven, single threaded, high performance network programming platform (is it too small to be called a platform?) whose interface is JavaScript.  Sounds like something fun to check out. Trouble is, it’s developed Linux.  While I could get a Linux VM running on my machine or compile it myself on Windows through Cygwin I felt that was far too much of a pain not on what I wanted to do: try it.   I found some great instruction on the CodeBetter site and although there are instructions to compile it, the real gem was a note in the comment that binaries were available for windows here.

But, not everything is without pain.  You need the latest 7-zip 9.16 beta to unpack them.

So far, it seems to be an easy, fast way to get a local endpoint up and running that I’m using for returning fake responses when developing with ASP.NET.

Learning ASP.NET MVC through NerdDinner.

Nerd Dinner LogoI’ve been trying to get up to speed on ASP.NET MVC.  Very cool so far.  I started with the free ASP.NET NerdDinner tutorial, and moved on from there.  I love the tutorial, it’s very detailed, and yet short.  Also, it’s been subject to intense scrutiny and review that has provided a great wealth of learning, beginning with Ayende’s review on NerdDinner.

Jimmy Bogard has some criticisms about the ‘poor man’s dependency injection’ in the application in his How not to do Dependency Injection post.

This led me to the Matt Hinze post on AutoMapper in NerdDinnner (I finally get what AutoMapper is all about).

Which of course led me to ASP.NET MVC View-Model Patterns .

Finally discovered a post titled ASP.NET MVC Best Practices.

I haven’t checked it out yet, but while I’m generally not a fan of screencasts, I plan on watching Roy Osherove’s video review of the tests in the NerdDinner source.

Speaking at the University of Calgary this Friday

I’ve been invited to present a speech at the University of Calgary as part of their Biomedical Engineering Distinguished Speakers Series. I’m going to present a speech titled “Image Metrology in Orthopedic Imaging”.   The lecture, aimed at undergraduate Biomedical Engineers, is going to touch on the issues on getting measurement from 2D x-rays, 3D planning, and surgical navigation all related to orthopedics.

The lecture starts at noon in the ICT Building.

So you think HTML is hard? Try DICOM!

I’ve recently been reading about the hard to understand HTML and the ‘fine line’ there is to producing HTML output that all (enough?) web browsers understand.  To all web developers I say quit you’re whining, try following the DICOM standard.  Although I haven’t read enough standards to say that DICOM is the worst standard ever, I can say that it can be a tad confusing at times.

Some problems:

  • The standard is long.  The PDF version of HTML4 is nice and light at a single 389 page document, the 2008 DICOM standard has 18 parts, part 3 alone is 1097 pages. ( OK, this is a bit of comparing apples to oranges since DICOM covers communication protocols in addition to the syntax…)
  • The standard is old.  The ARC/NEMA standard dates back to the mid-eighties.  There’s nothing wrong with this per say, but it does carry around a lot of baggage (like transfer protocols that so far as I can tell, no one uses anymore).  Life would be so much easier if implicit little endian would just go away *sigh*.
  • The standard is ambiguous.  There’s lots that’s unclear or unspecified.  What’s the correct window/level (brightness/contrast if you’re not familiar with DICOM). You’d better look outside the standard to figure it out.
  • The standard is confusing.  What’s the pixel spacing in an x-ray image?  Try reading figuring out what this means.
  • Major vendors don’t comply to the standard.  It’s not enough to comply with the standard, like web browsers you’ve got to be bug compatible with common vendor formats.  Unlike Web browsers, there’s not just a handful, there’s dozens of them, and you may not have their data.  This is what David Clunie calls the “we know what the standard says but we are going to ignore it and do what we have been doing for almost a decade regardless” CR vendor bug.

That said, at least there is a standard.  When I first started working a Merge (formerly Cedara Software) there was a SIF (Scanner InterFace) team who’s job it was to read the proprietary formats from older scanner and read them in.  We still sell boxes that connect to old ultrasound machines to allow them to produce DICOM outputs.  Despite being old, the standard is still extensible (though it’s going a little too far IMHO).  Finally, DICOM also has a pretty good domain model for radiology.  I don’t know what came first, the domain model or DICOM, but structuring your application around the DICOM model has worked very well for me.

Toronto Code Camp 2009 – Speaker Reviews

I had the pleasure to attend the fourth annual Toronto Code Camp over the weekend.  It was my first code camp and I found it hit and miss.  The quality of the presentations varied greatly.

Here’s a review of the sessions I attended:

Get Setup with WiX, Colin Bowern

Having used WIX in a couple of projects, I was hoping to get something good out of this presentation.  Colin was an excellent speaker and covered the basics very well.  However, his coverage of patches was worth the price of admission alone – and would have been invaluable last week.  The session was an end to end coverage of Wix from the first installer, to patching, to upgrading.  Definitely focusing on breadth rather than depth.

Using Data Services with ADO.NET 3.5, Kristina Mandekic

Having seen a presentation by Scott Hanselman on Data Services, I’m not sure what I was expecting to get out of this one.  I’m facinated by the technology, but have no practical use for it right now.  This stuff seems to sink in more the second time around, although I think I’ll really have to code it to ‘get it’.  Krista admitted she was a first time speaker and although she was clearly pretty nervous, I thought she did pretty well.  I’m still confused about the security story surrounding ADO.NET data services, but otherwise the technology looks very cool.

How to improve testability with a modular architecture, Mario Cardinal

This was the best presentation of the day.  At the beginning of this one, I was thinking crap, he’s just going to say use layers and unit testing, but he really focused on designing what he called the ‘velcro’ between layers in an architecture.  He’s from Montreal and has a podcast in French.  Being a big podcast listener I’ve already checked it out and it sounds great!  These Quebecquois get going a little fast for my Ottawa bred and France trained ears but the content’s great.

How LINQ Works: A Deep Dive on Visual Basic 2008 , Jonathan Aneja

Another excellend presentation.  Again, LINQ is something that I’ve been following for a while.  I’ve used it in one project, but I really haven’t gotten the chance to really dig deep.  Jonathan did a great job providing info on how it works, touching on pretty much all the areas.

WPF and the Model-View-ViewModel Pattern, Elias Puurunen

I was looking forward to this one.  I’ve been looking at Prism and MVP patterns as a way to solve some of the isses I had in WPF in my last project.  What amazed me is that this guy was a second year university student presenting to a bunch of professional developers.  The kids got more balls than I do now.  I think he’s going places, but his presentation a little more suited to a classroom environment that conference, but I’m sure he’ll improve quickly.  I left early to get home and see my kids so I never got to see the meat of this presentation, but the pacing was off, and there was too much PowerPoint.

Next time I’ll choose sessions based more on their speakers rather than the topics.  I’m undeciced if I’ll attend again, the day was the most beautiful day of the year and I spent it sitting listening to programming talks with a bunch of nerds (especially that guy over there, wait, that’s a mirror).