School is done! On to Reports, and something else ;)

Well, it's official.  Assuming I pass the two courses I haven't received grades from, I completed my final day of continuous education (well, except for the summer breaks/internships) for 18 straight years (K-12 + 5 years of post-secondary) today.  I've already got marks for 3 of the 5 courses I took this year, and they were pretty good (couple of A's and a B).  This semester has been a bit of a strange one, since I had only one computing science course and it was a "Writing for Computer Scientists" course which involved no programming! (Despite that, it was one of my favorite courses this semester :D).  I took introductory courses in Communications, Linguistics and Nutrition as well as a intro to the Physics of Sound and Music entitled "Logarithm and Blues" taught by a two-man team of a musician and a physicist (sorry "Writing for Computing Scientists", this one takes the top slot this semester :)).

Now that I'm finished school, probably for a while (still eying a part-time masters at University of Washington when I've been at Microsoft for a while), I can settle down and finish up a few side-projects and some DNN Reports work.  Reports Module version 5.1 is finished from a code perspective and contains a number of bugfixes (details to come) as well as two new features:
  • XSLT Extension Objects - The XSLT Visualizer now allows you to provide a list of .Net Types which are constructed at runtime and mapped into the XSLT file as XML namespaces.
  • Experimental and mostly hacky support for QueryString parameters in Report Queries - A number of people have been asking for this, and it's a relatively simple feature in the Reports Module architecture.  On the settings page, you can provide a comma-separated list of QueryString parameters which will be passed to the Report Query.  The parameters are prefixed with "url_" in the query to distinguish them from the existing parameters.  NOTE: Don't forget that many Databases use still another prefix, such as SQL Server ("@"), so for example, the full name of the SQL Server parameter mapped to "foobar" QueryString parameter is "@url_foobar".  This is only a stopgap solution to allow for some linking into Reports with parameters, so expect the next version to include a more detailed system (which may include breaking changes which will require that you update your queries). I'll do my best to support an upgrade path, but no promises, so use at your own risk
I just need to do some testing and then I'll put 5.1 into the release process.  I expect to do that this week, so depending on how long it takes the diligent reviewers in the release process to make sure that the new version won't obliterate your existing site (and believe me, you don't want to rush that!), it should be out very soon!

Moving on to a new project...  I've been hinting to some of the people in the internal project forums at DotNetNuke that I've been working on a top-secret project involving MVC.  (This is a pure side-project, not part of the DNN Project at all).  I'm very close to releasing something which, I think, is pretty cool.  I'll keep the secret for now, but let's say this: I've been working on/with DotNetNuke for a few years, and I've a huge fan of ASP.Net MVC.  I've learned a lot from DNN and I think MVC users can benefit from some of that experience ;).  I'm hoping to have something ready on this secret project, which I call "MaVeriCk", in the next week or two (but Reports 5.1 is my priority at the moment).

Hope that teased you just enough to stay tuned :P

I’m still here… just cramming… and working

Hello avid readers!  It’s been over a week since I blogged, I know, but I’ve been cramming for exams.  The CMPT 376 assignment I mentioned a while ago has finished, so I’m no longer required to blog for grades.  Having said that, after exams, I plan to keep blogging, so keep watching the feed :).

Just to tease you a bit: I’ve got a cool little ASP.Net MVC side-project well underway that I’m just dying to show off on the blog, so stick around :P

Also, to the Reports Module users out there, 5.1 is very close to being finished.  There may be a surprise new feature in there too.  Details to follow later :D.

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!

ASP.Net MVC 1.0 Release Candidate released

Phil Haack (program manager on the ASP.Net MVC team) just posted a blog post about the new Release Candidate of the MVC framework.  Since I got a chance to work on the MVC framework team as an intern this summer (and I’m going back full-time this summer), I’m pretty excited about the news.  When this goes RTM, it’ll be the first time code that I wrote will be part of a full shipping Microsoft product! 

So download the binaries from ASP.Net or check out the source code on CodePlex and have some fun!

Also, check out Scott Guthrie’s post on the new features.  He shows off one of the features that, I think, makes ASP.Net MVC more compelling than Ruby on Rails: Powerful first-party tooling support.

Playing with Azure and SQL Data Services: No "Random Access Paging"

So, I've started playing around with the whole Azure Services Platform (http://www.azure.com), now that school's done :) and I thought I'd blog about things I discover along the way.

My first idea was to create a simple blogging engine in MVC that would store data in SQL Data Services and run in Windows Azure (I got my invite code recently, yay!).  However, I soon discovered that would be difficult.  It turns out that while SQL Data Services does support "Paging" the results of a query so that you don't retrieve every result in one batch, it does not support what I refer to as "Random Access Paging".  Random Access Paging (and I'm sure theres some other term for it) basically means providing a page index and page size to the data layer and having it retrieve just that page (i.e. Skip/Take in LINQ).  There are some solutions, but most of them requrire that you step through each page sequentially, rather than just being able to request a page.

Of course, I may be missing something. So, if you know how I could solve this problem, feel free to post in the comments!

In a blogging engine, this is practically a necessity, since you only want to display a certain number of posts per page.  So I've tabled that idea for now.

My next idea: An RSS reader which stores your set of subscribed feeds in your Live Mesh (though I don't have access to that CTP yet).

Well, its been a fun summer, but my time at Microsoft is over ...


... for now :).  It looks like I'll be coming back full-time come next August, so it's a bittersweet end.  I'll miss the people on my team and the interns I've met, but in most cases I'll see them again next year!  Keep an eye on this blog, because you can bet I'll be posting when the stuff I worked on goes live!