mike hodnick

Point your browser to www.hodnick.com for Mike's latest content.

Notice:

You are viewing Mike's old, archived site. For new content, navigate to hodnick.com

Latest From Twitter...

The Blog

November 2007 Entries

Apparently, the ordering of your <%@ Assembly %> directive before your <%@ Page %> in custom WSS application pages makes a difference. Make sure you put the Assembly directive before the Page directive:

<%@ Assembly Name="MyWebApp, Version=1.0.0.0, 
	Culture=neutral, PublicKeyToken=abcdefg817264759" %>
<%@ Page MasterPageFile="~/_layouts/application.master" Language="C#" 
	Inherits="MyWebApp.MyForm" %>

This is incorrect:

<!-- INCORRECT -->
<%@ Page MasterPageFile="~/_layouts/application.master" Language="C#"
	Inherits="MyWebApp.MyForm" %>
<%@ Assembly Name="MyWebApp, Version=1.0.0.0, 
	Culture=neutral, PublicKeyToken=abcdefg817264759" %>

Doing it the incorrect way, you'll get a generic error message:

This rule probably applies in other ASP .Net cases, but I've never come across it before.

Technorati Tags:    

It's true:

112307_14271.jpg

Flickr Tags:  

We were in Florida over the Thanksgiving week and had a blast.  Photos from the trip are all available here: Florida 2007 Set

One of my favorites:

100_1274

Goofy little girl, I tell you.

Flickr Tags:   

Picture 36 After a long project off site and a great thanksgiving break, I'm back in the Inetium office for a new project. I'm really happy about it because 1) it's a much more challenging and interesting project, 2) I like being in the Inetium office, and 3) I don't have to commute to downtown Minneapolis.

As for that last point, I think I've gained a new perspective on the mass transit "issue" in the twin cities. There is a traffic congestion problem on most of the major highways in the twin cities and there are few mass transit options for commuters. You can either take an express bus during rush hour from your suburb to downtown or light rail along the airport/downtown corridor. There are no viable mass transit routes from suburb to suburb, and there are barely enough express stop times during rush hour.

After beginning riding the bus downtown, I considered taking the bus to Inetium once my downtown gig was done. I found that I'd need to transfer buses twice just to get from home to the office, and at the 2nd transfer, the buses only run every 30 minutes. It'd take me about an hour to get to work when it takes me 20 minutes by car. Unless you're going to travel downtown, there is absolutely no incentive to take the bus (unless you're strapped for money for making car payments or something).

In order for mass transit to work in the severely sprawled twin cities metro area, there needs to be more routes along non-downtown corridors. Not everybody works downtown. In addition, buses and trains would need to stop frequently enough so that riders don't get significantly delayed during their commute. Downtown, buses stop anywhere from ten to thirty minutes apart. However, I still felt like my hands were tied... catching a bus 15 minutes later could get me home 45 minutes later (because of slightly different homebound routes, traffic, etc).

I'm not suggesting that mass transit should be more accessible in outlying and non-downtown areas. I imagine the money and effort needed to make all of it happen would be astronomical. What I've learned though is that I have a different perspective on mass transit after actually riding a bus. It messes with your life. You adjust yourself and your schedule to leave your car at home. The adjustment becomes an unacceptable tradeoff when the support for routes and frequent stops isn't there.

Here's hoping for a new light-rail line from Chaska to Bloomington.


View Larger Map

Flickr Tags:   

ACS302: Building Custom ASP.NET AJAX Controls

I feared that this session might cover the basics of AJAX, but it didn't.  The speaker covered two main ways to develop custom AJAX controls (using extenders and the AJAX toolkit or through your own complete customization).  Not a bad presentation for someone like me who has done little that is useful yet with AJAX.

VWF306: Build Workflow Activities Using Objects

Rocky presented this one, and drove home the point that you should create your own custom activities (deriving from the Activity class) and use dependency properties when developing workflows with Workflow Foundation.  There ended up being a lot of questions about CSLA from the audience ("what is that ProjectTracker.Library.Save method??"), and I don't think Rocky was able to really finish all of his presentation points as a result.  That disappointed me because I hoped to get more out of the Workflow side of the presentation and not hear Rocky field questions on using business objects.

HDV301: Building and Incorporating Custom Applications in SharePoint v3 Sites

Another Andrew Connell session.  Unfortunately it was very similar to his presentation yesterday on "prescriptive guidance" for SharePoint development.  The general topic was the same, but the focus was more about strategies for developing custom apps within SharePoint rather than how to develop and deploy your project artifacts within the apps. 

AGN302: Compression, Encryption, and Hashing

This session was a letdown as it was nothing more than a walk-through of .NET's encryption and hashing API's.  The presenter suggested (generally) that you should use public key encryption and never use private key encryption, but only walked through a demo of private key encryption.  ????  For the compression topic, he just walked through an open source .NET compression API to compress and decompress to/from zip, gzip, bzip, etc. 

Technorati Tags:    

A brief video with deep, hidden meanings.  If you can't find the deep, hidden meanings then let me know.



Flickr Tags:   

my free stuff



Flickr Tags:  

Some decent sessions today.  I think I've gotten a little better at weeding out the bad ones by title :)  By tomorrow I may have a complete day of worthwhile sessions. 

AGN301: Dealing with Long Running Requests in ASP.NET

I wasn't sure if I was going to learn anything in this one, but I took away a few new things I didn't know already.  Rick Strahl covered three main ways to deal with long-running requests (each may be better/worse to use depending on what you really need to improve): 1) modify the user interface (disable buttons after clicking, hide the UI and show an "in progress" message), 2) use ASP.NET Async Page Tasks to allow a single request to run on multiple threads, and 3) fire-and-forget and query another data source (e.g. SQL) for information about the process's progress as it updates.  I know that Async Page Tasks existed before today, so that was a new nugget to take home. 

HDV313: Advanced Feature Development

Fellow Inetiumite Neil presented this one.  I'm completely biased, but he did an awesome job :)  I actually learned a few things too.  This presentation was on the SharePoint track, and covered all of the down and dirty ways to develop and work with Features in SharePoint.  Neil covered the ridiculous number of caveats to Features, implemented a custom Feature receiver in C#, and demonstrated what will be now known as the most famous custom Feature you can add to SharePoint: the "Your boss is coming, look busy" menu item.

HDV303: Prescriptive Guidance for Developers Building Publishing Sites with WCM in MOSS

This one was about how to develop and author the non-compiled artifacts in a SharePoint project such that you can take advantage of things like source control and repeatable/automated packing and deployment.  Andrew Connell presented this one. His presentation helped drive home the point that Web Content Management (WCM) artifacts such as master pages and page layouts can be authored in SharePoint Designer (SPD), but you should not rely on SPD as a means to promote those artifacts to other environments.  SPD is a necessary evil for certain tasks within MOSS WCM, but it was relieving to hear Andrew say that SPD should not replace well-known (and much more comfortable) development tools like Visual Studio, even when working with non-compiled resources.

Actually, it's more like half a panorama.



Technorati Tags:  

Last night Neil, Vish and I stumbled across a video arcade at the Luxor.  There was a bizarre game called "Flamin' Finger", which was an impossible game to beat.  You had to trace your finger along a path before time ran out.  Simple, but impossible.  Vish came close quite a few times:

Flickr Tags:  

An almost-random selection of new photos from DevConn. You may wonder why I haven't taken many pictures from inside the conference. It's because the inside of the conference is nothing but gigantic ballrooms filled with geeks wearing backpacks.

Mandalay Bay Hotel from Below
mandalay bay hotel from below

Neil and Vish eat chips
neil and vish eat chips

Vish, Mike and Julie in Mandalay Bay casino
vish, mike and julie in Mandalay Bay casino

Vish plays "Flamin' Finger"
vish plays flamin finger

Flickr Tags:

Last night Neil, Vish and I ate at Cafe Ba-Ba-Reeba!:


View Larger Map

I don't know a thing about tapas, but it was tasty and I'd go there again. Based on the website it looks like they also have a place in Chicago.

I'm finding that the presentations aren't quite meeting all of my expectations out here at DevConn, although I think I've learned to weed out the less-interesting stuff based on the titles and short descriptions in the schedule. 

VMS306: A Lap Around Visual Studio Team System 2008

This session did not meet my expectations.  It was a run through of the basic features of VS TS 2008 - most of which are available in VS TS 2005.  Work items, reporting, source control, etc.  Ho hum. 

HMS308: Microsoft ASP .NET AJAX 1.0 and SharePoint

This session was worth the price of admission.  Mike Ammerlaan gave this talk and covered what you need to do in WSS/MOSS to get AJAX hooked up, how to make AJAX features useful/deployable in WSS, and also demonstrated some interesting ideas of what you could accomplish with respect to SharePoint.  Specifically, he demonstrated extending the out-of-the-box edit form of a list item by replacing a long, vertical form that had basic controls with a tabbed form that utilized sliders and other controls.  The AJAX magic to specifically implement the tabs and controls wasn't so cool as it was to see what he specifically chose to manipulate within WSS to make it happen. 

HMS310: Search in MOSS 2007: Customizing and Extending

Thomas Rizzo presented this one.  His content was accurate and he's a great speaker, but I personally didn't get much out of it.  It was a little higher level than I was hoping for.  He talked about what options are available in the SharePoint Search web parts to customize their appearance, walked through the search API, and wrote an app on the spot that used the API. 

Scott talked about the big new features in Visual Studio 2008.  Some of them are huge: like .NET framework targeting.  You will be able to target a specific version of the .NET framework (2.0, 3.0, or 3.5) in your VS 2008 projects.  Only features for your targeted version will be available in the project.  Other things we've known about - like .NET framework source code, WPF, Silverlight, etc. 

The keynote included some significant demonstrations of the new features, which were very scripted.  When one of Guthrie's henchmen was demo'ing the WWF workflow designer in VS 2008, I laughed when he said "and we can just change this workflow when the business process changes".  Yeah.  Because it's always that easy.  I'll be running away from that designer anyway. 

WPF apps now have WYSIWYG editor support, but in the demo they didn't really write any code or design a form to demonstrate it.  I'm still skeptical that visual developers will really enjoy creating WPF apps.  I still think plain XAML is going to be the way to go. 

Some "real world" possibilities with WPF 3D were also shown.  They were fictitious "Contoso" apps, but they showed examples of browsing and modifying a grocery store shelf in 3D, which was cool.  Even cooler was the app and user experience that GOT them to the 3D app - which was embedded in an email message which the user accessed from an extended feature of the Outlook ribbon. 

Technorati Tags:    

Picture 23   Picture 24   Picture 25

Technorati Tags:

I attended a pre-conference session on Silverlight almost immediately after getting off the plane.  Unfortunately it wasn't a very good session for me.  I'm finding that most Silverlight sessions are about XAML - not the fine details about Silverlight. 

This session covered the basics of setting up a Silverlight project in Visual Studio from scratch, which was good.  So far I've only seen Silverlight projects created from project templates.  I like being able to see stuff get set up without any smoke and mirrors and to see the raw code.  But after about 10 minutes of that, it was nothing but creating shapes and animations with XAML after that. 

I keep hearing that Silverlight is nothing more than a way to deliver XAML across multiple browsers and OS's, and I finally believe that that is all there is to Silverlight.  If you know WPF and a little bit of ASP .Net and Javascript, then I wouldn't recommend going to a Silverlight presentation. 

Technorati Tags:

We arrived at DevConn in Las Vegas at about 11:00 AM pacific time.  The flight wasn't too bad.  Mandalay Bay is a nice hotel.  There are small flat-screen TV's in the bathrooms, but a fellow colleague noted that you can't see them from the toilet, so what's the use? 

In fact, here's a video documenting said problem with bathroom TV:



Mike at DevConn DevConn Mandalay Bay Room #1 DevConn Mandalay Bay Room #2
Technorati Tags:   

I'll be attending the November 2007 DevConnections next week.  In the event that I decide to blog about the sessions, I've devoted a category and rss feed to the topic:

DevConnections category

DevConnections RSS

DevConnections tags

Technorati Tags:  

SharePoint Search Bench Screen Shot Download SharePoint Search Bench from www.codeplex.com/SPSearchBench

SharePoint Search Bench is a WPF application used to run full-text SQL and keyword queries against Microsoft Office SharePoint Server (MOSS) search.  

This project is something I've had in the works for a little while.  Extending MOSS search is a common task among SharePoint developers, yet there aren't really any tools available to test, try, or develop queries against MOSS search.  Unlike SQL Server, MOSS doesn't ship with a "Query Analyzer".  On projects where I was extending MOSS search, I found myself writing my own app to write and test queries. 

Here are some notable features about the app:

  • Supports searching against MOSS using MOSS Search
  • Supports searching via object model (on server)
  • Supports searching via web service (remote clients)
  • Supports Full Text searches using full text SQL syntax
  • Supports keyword searches, including custom returned columns/properties
  • Lists available search scopes and managed properties
  • Ability to change query packet XML for web service calls
  • Ability to save your connection and query settings between sessions

App characteristics:

  • Built on WPF
  • Built using VS 2005 and WPF extensions
  • .Net 3.0 required
  • Does not support WSS, CAML or List-based queries/searches
  • Does not support WSS v2 or SPS

Another purpose of developing the app was to continue learning WPF.  I've had my head in WPF for a long, long time, but haven't ventured outside of its 3D features very much.  I wanted this WPF app to be clean and take advantage of certain features that WPF provides.  Specifically, lots of data binding, heavy re-use of styles, data templates, and control templates.

The CodePlex project has a forum and issue tracker open, so feel free to leave feedback or report problems. 

Technorati Tags: