DotNetNuke on IgniteIT

Did you know that the largest open-source project on the Microsoft platform was started in Vancouver, Canada?  It’s true!  DotNetNuke is the largest Open-Source community in the .Net by downloads (at least).  Since moving to CodePlex (Microsoft’s Open-Source hosting platform) in January 2009, DNN has been downloaded over 180,000 times (at time of writing).  This makes it second only to a World Of Warcraft Add-On development studio which has been on CodePlex since Sept 2007 (at least that was the earliest check-in I could find).  Adding that to the all-time download score on SourceForge (the project’s previous host) of 4.3 Million downloads, and you’ve got the the largest .Net open-source project (and one which I am proud to contribute to)!

And here’s the great part for us Canucks, DotNetNuke was created right here (by “here”, I mean where I live :P) in Vancouver!

Microsoft Canada is running a contest called the “Ignite It” award to honour Canadian developers and IT professionals.  DotNetNuke is nominated in the Developer category, and we’re looking for your votes!  There’s only 2 days left, and we’re in the top 5 (which will go on to be judged).  Still, we’d like to be up at number one before voting ends, so here comes the shameless plug :P.  Here’s the deal: You can vote once per Windows Live account per day (though there aren’t many days left :( ).  It only takes a second to vote, and I’ve even created a TinyURL to share with your friends: http://tinyurl.com/dnnigniteit

Let’s push DNN into the top spot!

Windows Live Writer – After 2 Months

Back in January, I started blogging more frequently due to a course I was taking.  As part of that, I started using Windows Live Writer to write all my blog posts.  I use the DasBlog engine to power my blog, and it supports one of the many blogging APIs that Windows Live Writer uses (I believe it’s MetaWeblog).  So, I hooked it up to my blog, and everything just worked!

My favorite feature is the ability to create and save drafts and then publish them on demand.  I have inspiration at the strangest times, and often in large batches, so I end up with a couple ideas of things to blog in a day, and no ideas the next day.  So, I just create a bunch of drafts, get them ready to publish and then publish them over a longer period of time (like say… a day :P).  For example, I wrote this post 5 minutes after the previous post, but I thought it might overload my readers to post it immediately :).  So, I save a draft and post it a bit later (when I don’t have anything to blog about :D).

If you have a blog, and it supports one of the blogging APIs, and you’re running on Windows, you really should try Windows Live Writer!

Virtually “Attending” MIX09

Microsoft’s MIX Web Development conference was held in Las Vegas last week and while I would have loved to go, the cost and scheduling just made it impossible :(.  Despite that, I’ve been spending the past few days “attending” MIX virtually!  Microsoft posts high quality WMV versions of the talks on the MIX website, perfect for catching up on the sessions.  With my Media Center PC hooked up through my Xbox 360, I can browse through my rapidly growing collection of talks and watch them at my leisure.  It’s almost like being there!  A couple of my recommendations are below:

That’s by no means a complete list of great talks, just my first impressions based on the first few I’ve watched and the abstracts that interested me on the list.  Feel free to post your own favourites in the comments!

Final Few Weeks of School…

I was taking a look at a calendar on Monday and realized something… I only have a few more weeks of school left!  I don’t graduate until June, but classes finish on April 6th.  As a result, my workload has been growing exponentially :P, so I’m putting my side-projects on hold.  The only exception is my work on version 5.1 of the DotNetNuke Reports Module, which is coming along quickly and should be finished soon.

I went straight from high-school to university, so its been a non-stop 16 years of school.  So, it’s going to be a little bit strange when I graduate and actually enter the workforce full-time :).  Still, I’ve got an awesome job to go to, so I’m still pretty excited.

I have to keep blogging for my CMPT 376 (Writing) course, so I’ll keep doing that, but I’m putting pretty much everything else (including “Duh,” my toy programming language) on hold for a couple of weeks.  I’ll have a bit more time after classes end :).

Are all CS departments this slow to adopt new tech?

Having spent 5 years taking courses in the Computing Science department at Simon Fraser University, I’ve become pretty familiar with the various web applications used to track course projects, submit assignments, etc.  Over the same five years, I’ve seen numerous technological changes, both in the “outside world” and within the University.  For example, not too long ago, SFU switched to a central authentication service aptly named “Central Authentication Service” (or CAS).  It’s a pretty nice service, with a snazzy login screen (below).

SFU CAS Login Page

It’s not only snazzy, but a pretty useful system.  I even integrated one of my school projects (an online grade tracking application) with it without any external support.  Let’s contrast that with the current login screen for “Gradebook”, an application developed by the CS department and used in most CS courses to track grades

Gradebook Login Page

Ok, not as snazzy, but here’s the really frustrating thing:  My account here is NOT the same as my SFU computing account!

The “Gradebook” system also includes an electronic assignment submission server

CS Submission Server

(BTW: This is only a small snapshot of the page)

Sure, it isn’t snazzy looking, but it’s simple and to the point (+10 points).  However, it comes with a few caveats: I have to use my “Gradebook” account, not my (so-called) “universal” SFU account (-25 points), and ALL submissions must be in ZIP, GZIP or RAR format (-25 points)!  For many of my courses, the electronic submission has been a single file, and the instructor often has to email the students to remind them that they have to wrap their single PDF file (or Word Doc, etc.) in a ZIP file to upload it.  I can understand the benefits as far as storage space, and bandwidth consumption, but wouldn’t that be better achieved by simply placing a size restriction and allowing any file to be uploaded?  Plus, when I do login, I get a page with a drop-down list of courses.  Here’s the contents:

image

See that scrollbar?  Yeah… I’m not registered in anywhere near that many courses (the one course I’m registered in is a few scrolls away), but it would appear the submission server doesn’t know that.

It doesn’t end with the student interface.  In a course on “Web Information Systems,” we were required to develop a web-based application of some sort, and my group chose to build a grade tracking system (partly out of frustration with the current system).  Before starting the project, we organized a meeting with our instructor to find out what his frustrations were with the existing “Gradebook” system used by the department.  He mentioned that instructors had to rebuild the structure of assignments, exams and their relative contributions to the final grade every time they created a course.  He continued to show us a tool he developed which allowed him to create more detailed marks, give comments, and build an email to send off to the student.  He had to build a custom tool to perform tasks which I would consider essential to a modern grade tracking system.  In a few weeks, we hammered out a “school project quality” system running on Ruby on Rails (ASP.Net MVC wasn’t out yet :P) which supported all the features we discussed in our meeting with the prof.

Granted, I know it’s not as simple to fix as it is to complain.  But, with the tools out there, and the number of open-source and commercial courseware products, I still don’t really understand why we’re using a system with so many annoying issues…

For the CS students (or recent grads) who read my blog, is my experience atypical?  Or are your school services as out of date as these?

Tips and Tricks: Installing Programs to a USB Key

My laptop is rapidly becoming obsolete, particularly when it comes to disk space :(.  I want to install my games on it, so I have something to do in class between classes, but I’m running out space.  So, I came up with an idea: Buy a 16GB USB Key, and put a bunch of games on that!  I keep my USB keys in my backpack, so they’re never too far away.  It sounded like the perfect solution, until I noticed that many programs can’t be installed on Removable Drives!

So, I came up with a simple workaround, once again using an awesome tool from Sysinternals :).  I used Junction to create a junction folder called “C:\Program Files\Games” which points to a “Games” folder on my USB Key.  The following command line does the trick (assuming F:\Games is the folder on the USB key, and it already exists):

junction.exe “C:\Program Files\Games” “F:\Games”

Seems to be working so far!  I just install the game into that folder, and all the files go to the USB Key.  Of course, its not quite the same as a portable app, since it will only run on the machine it was installed on, but it takes some of the burden off of my hard drive.  If my laptop supported SDHC, I’d probably use a 16GB SD card and just leave it plugged in to my laptop, but unfortunately, that’s not an option.

Quake Live – Fun? Sure. Interesting? Meh.

There’s been a lot of buzz around the Internet about Quake Live.  I decided to succumb to the hype and try it out and I must say it is pretty cool.  However, a lot of people have heralded this as a unique new way of distributing games, and I have to disagree with that.  Quake Live is no different than any other downloadable game, it just happens to use the browser as a host.  When you go to http://www.quakelive.com for the first time, you log in and wait in a queue.  When you reach the front of the queue, you are prompted to download a plugin (in the form of a Windows Installer MSI file) for your browser.  If the queuing thing sounds very FilePlanet-esque to you, it certainly does to me.  Then you download the game plugin installer and run it (as an Admin).  When it finishes, you have to restart your browser and go back to the website.  After waiting in the queue some more, the game loads up and runs in the browser.

How is this process different from installing a regular desktop game?  You download the installer, run it as Admin, and then start the game.  The only different here is that the game code is running in-process (AFAIK) with the web browser.  It really isn’t that different!  Developing a game like this using an existing plugin like Flash or Silverlight (especially since Silverlight 3 is supposed to include 3D Acceleration support) would be, IMHO, much more innovative.

About the only thing in Quake Live that differs from a regular desktop game is the use of a streaming installer, which downloads a (relatively) small bootstrapper and then downloads the rest as you play a 10minute training level.  Even that isn’t really unique, as Scott Hanselman points out, Guild Wars has included that feature for a while.

Announcing Reports Module Version 5.1 and “Saltspring”

I’ve been pretty busy with school, and unfortunately have not been able to get going on the many new features I want to implement in the Reports Module.  However, there are a number of bugs in the current version that prevent it from being used with DotNetNuke 5.0.  For this reason, as well as a few other bugs that aren’t quite as major, I’m going to be preparing a minor bug-fix release: Version 5.1.

This version will fix the following major issues:

  1. Errors when accessing the Extensions page using the module with DNN 5.0
  2. Many Exceptions are written to the DNN Event Log when the Search Indexer runs over the Reports Module
  3. Duplicate Search Items are added by the Reports Module, causing exceptions to occur when multi-row Reports are indexed

I will also be making minor tweaks and clean-ups.  However, no new features will be included in this release.  I’m afraid I just don’t have the time at the moment (being a full-time student sucks up a lot of time).  Please let me know if there are any bugs you feel are urgent and need to be fixed in 5.1 by posting in the Reports Module Forums.  (On a side note, I want to remind my readers that the blog comments aren’t really the best place to post questions about the Reports Module.  I try to keep an eye out for them, but he forums are the best place to do that!)

Despite my time constraints, I have been doing a little thinking about new features for the Reports Module.  Since it seems to be the “in” thing now-a-days, I’ve given the next major update to the Reports Module a codename: “Saltspring” and I’ve been building a small feature list:

  • Minor architecture changes to the Extensions (Data Sources and Visualizers) to improve testability
  • Major architecture overhaul to the main module to improve testability, and thus quality, of the core module
  • Investigate replacing the ZedGraph Chart component used by the Chart Visualizer with the new Microsoft Chart Control
  • Introducing a new Parameters framework which allows users to define custom SQL Parameters for their queries, which pull their value from various different sources (DNN Objects, Query String, Text Fields, etc.)
    • This framework would be extensible, so that new “Parameter Sources” can be installed, just as Data Sources and Visualizers are

Again, if you have any more ideas, please let me know!