Monday, April 09, 2007

There's gonna be a fun MSDN event this coming Thursday, April 12th (same day as our Utah .NET User Group meeting - reminders going out shortly) from 1:00 PM - 5:00 PM at Jordan Landing in West Jordan on ASP.NET AJAX and CardSpace.  I'll be there - it should be a great time.

Here's the event link with all the details:  http://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&EventID=1032326499

Monday, April 09, 2007 7:07:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback

This past Easter weekend I had my first chance to dabble in an MMORPG (Massively-Multiplayer Online Role-Playing Game) called 'The Lord of the Rings Online - Shadows of Angmar”.  I've long resisted playing these games (though I flirted with the Star Wars Galaxies game for about 2 hrs) for a multitude of reasons, not the least of which is the potential time-sink it would become.

I was initially turned on to the game by a good friend, Eric Tolman, and the screenshots that he took while in-game.  I thought I'd bite the bullet and install it and give it a trial run during a free, open beta they're calling 'World Tour'.  I can honestly say - WOW (and no, not World of Warcraft).  The game is pretty amazing.  I played for a few hours, completing quests, gaining levels, interacting with other players, formed a fellowship, and helped save the town.  It was a lot of fun.  Like I say, though, I don't have much to compare it to since I've never really played the other games like it.

Though I'm not sure I'll ultimately subscribe to the service (when do I really have time to play games?), I can honestly say I'd have fun if I did.  I still have another 14-odd days left in the World Tour beta before the game goes live, and I intend to enjoy them.

Monday, April 09, 2007 3:51:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [2]  |  Trackback
 Thursday, April 05, 2007

As a reminder to everyone, we've having our second Utah Code Camp this next Saturday (April 14th, 2007) at Neumont University.  The last event was a great success and a ton of fun.  Please set aside the date and register.  Here's the official blurb:

What: Utah Spring Code Camp
When:  April 14th 2007 9:00 AM - 5:00 PM
Where: Neumont University
Registration:
http://utahcodecamp.eventbrite.com

The local .NET Users Group and SQL Server Users Group is conducting a “Code Camp” for local software programmers next month at Neumont University.  The code camp is by the community for the community.  Always free and Always for the community.

The Saturday, April 14th event is scheduled from 9:00 AM to 5:00 PM. The conference is free please register at. http://utahcodecamp.eventbrite.com
Lots of Sponsors and Lots of software and Tech Gadgets to giveaway!
You can check out
www.msutahevents.com  for a session schedule and speaker list for the Code Camp.

Thursday, April 05, 2007 6:12:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Tuesday, April 03, 2007

It was requested to keep this information confidential until 9:00 AM PDT today, but the hour has past. :)

I recently received word that Microsoft has retracted its initial plan of not including the Expression suite of tools (e.g. Expression Web, Expression Blend, etc) with MSDN.  After the barrage of concerned voices and complaints against this decision, Microsoft has decided to make Web and Blend available to all MSDN Premium subscribers (Web is available now to MSDN downloads).

For further reading see Somasegar's WebLog.

Tuesday, April 03, 2007 3:34:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Monday, April 02, 2007

For the past several days I've been hampered by the fact that the keyboard shortcut SHIFT+TAB wasn't working in IE.  This was driving me nuts!

I found that disabling the Windows Live Toolbar brought back the functionality (the only add-in besides Fiddler that I had installed).  Well, that was disconcerting as I enjoy having that toolbar present.  When I brought the toolbar back SHIFT+TAB would continue to work...that is, until I reopened the browser, then the problem was back.  I suspected it wasn't the 'toolbar' per se, or this would have been a more well known issue.  After a bit of deduction, I figured out that the Highlight Viewer button was the problem.  I removed the button (and restarted the browser for good measure) and my suspiscions were confirmed.

Is anyone else experiencing this issue?

Monday, April 02, 2007 7:23:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [1]  |  Trackback
 Saturday, March 31, 2007

I realize that this is quite elementary and simple, however, it constantly eludes me.  Therefore, I'm documenting it here more for my benefit than anyone else's; though if it helps anyone out there - that's wonderful! :-)

I ofttimes find myself wanting to 'pin' an HTML element on the page.  This can be accomplished quite easily via the CSS position attribute with a value of absolute or fixed and a specified location.  More often than not, positions are specified in coordinated with the top and left attributes to designate the upper left corner of the element.  I find, however, that I frequently want to pin something on the right edge of the browser and/or the bottom.  When the user resizes his browser the element should move with the new dimensions.  For some reason, I always want to make this harder than it really is.

It's a simple problem really, if you can mentally depart from considering element position by the upper-left corner.  For instance, if you want to pin an element in the upper-right corner of the browser, simply specify the top and right properties.  It's that easy!

The CSS style:

#copyright { position:absolute; top:0; right:0; margin:10px }

The HTML:

<div id=”copyright”>
   Copyright &copy; 2007, Devstone Software<br />All rights reserved
</div>

Moving it to the bottom-right corner of the page is simple:  specify the bottom and right properties:

#copyright { position:absolute; bottom:0; right:0; margin:10px }

Along the same lines as this simple, yet somehow elusive mechanism, I frequently find that I want to define a DIV to fill the page.  You may be tempted to use the CSS attributes width and height with values of 100%.  This however is not the correct choice.  If you've tried it in the past you've probably become frustrated and perhaps even resorted to using a TABLE element to establish your page layout as a last recourse.

All is not lost.  You can simply use the same principles as above to define your DIV and fill the page.

The CSS style:

body
{ background-image:url(pattern.gif) }

#page
{ position:absolute; top:0; left:0; right:0; bottom:0; margin:5px; border:solid 2px black; background-color:white }

The HTML:

<body>
   <div id=“page“>Page content here</div>
</body>

Elementary, my dear Watson.  Now maybe by having jotted this down I'll remember it in the future.

Saturday, March 31, 2007 5:21:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [2]  |  Trackback
 Friday, March 30, 2007

Having recently moved my primary development environment over to Windows Vista I've been presented with a small learning curve when developing my ASP.NET applications. It's been good, however, as I've been forced to delve into IIS 7.0 and explore some of its capabilities and learn some of its nuances. To be sure, I'm very much enjoying working with it…but there's a lot to learn and become acquainted with.

I have a web application that I'd been working on in an IIS 5.5 (Windows XP) environment successfully prior to the migration so I thought I'd set it up and take it for a test drive in the IIS environment. I was pleased that I had but a few changes to make to make it operational. Getting it run from Visual Studio 2005 was a different story however.

I found that anytime I attempted to run my website by pressing F5 within Visual Studio I was presented with a dialog explaining that it was "Unable to start debugging on the web server. An authentication error occurred while communicating with the web server. Please see Help for assistance." I could, however, attach to the running process (w3wp.exe) and debug that way. In my case, while that would have worked most of the time, it didn't provide me access to some of the methods that I'd want to debug (like BeginRequest) and is a bit more cumbersome. Well, this was a bit disconcerting, but after a few minutes of tinkering in IIS to attempt to resolve it I resorted to running a quick Google search. It turns out I wasn't alone on this issue, not by a long shot. The first blog post I found was by Rajiv Popat and it was quite helpful, but not quite what I was looking for. In his post he recommends using the Classic Mode rather than the new Integrated Mode. NOTE: The Classic Mode that is provided with IIS 7.0 provides a runtime environment that mimics IIS 6.0. I could have used that happily, but as I'm not generally satisfied with workarounds or just settling for the first solution, er, band-aid that I find, I wanted to dig deeper and get my application working in the newer environment.

This is when I found a great blog post by Mike Volodarsky (a Program Manager on the IIS team). In his post he mentioned the key characteristic as to why I couldn't debug my site via F5: I had a global.asax file (though I deleted it – it wasn't necessary in my app) and a custom HttpModule that attaches to the HttpApplication.BeginRequest method. Apparently "there is a bug in ASP.NET Integrated mode that prevents authentication from taking place correctly for the debug auto-attach feature". Well, removing the custom HttpModule was not an option because it does some pretty slick URL rewriting for the site and is critical for its operation. That, combined with the fact that Classic Mode didn't really give me the warm fuzzies, led me to adopt his Debugging Assistant (64-bit Version). Man, what a life saver! This worked – though it didn't work at first for me when I tried it yesterday, but I hunkered down and resolved to figure out why tonight.

When running in IIS 7.0's Integrated Mode, the web server will not rely on settings within your section of the web.config file as it does in Classic Mode. Rather it relies on the new section. As per the instructions on Mike's site, I added the special debug module and handler to the appropriate sections in the web.config file, but I continued to receive the "An authentication error occurred communicating with the web server" error. It turns out that I was clearing the modules and not adding back in a module that is required for debugging: WindowsAuthenticationModule. Hey, I'm still learning IIS 7.0 here J This is approximately how my web.config appears:

<system.webServer>
   <modules>
      <clear />
      <add name="debugassistant" />
      <add name="WindowsAuthenticationModule" />
   </modules>
   <handlers>
      <add name="DebugHandler" path="DebugAttach.aspx" verb="DEBUG" type="System.Web.HttpDebugHandler" />
   </handlers>
</system.webServer>

It turns out the fix was quite easy once I knew what I was doing.

Friday, March 30, 2007 7:44:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [7]  |  Trackback
 Thursday, March 29, 2007

This post fulfills two tasks: 1) to demonstrate (to myself) that I could easily post an entry to my blog through Word 2007 J and 2) to provide a recap of the fun event that was held at the local Microsoft offices here in Salt Lake City.

We took the whole family to the event this evening. I was pleased by the number of people that showed up too; I was somewhat worried that we wouldn't get the turnout we had anticipated. The event was divided into two groups: one group spent some time with an instructor/presenter who talked about Windows Vista and Office 2007 while the other spent some time playing/experimenting with a cool Lego Mindstorm demo. We talked about the MS Robotics 1.0 toolset as well. The Mindstorm demos (which Scott Golightly's kids had put together) had the robot move forward, sense an object (a ball), and pick it up. While I've not had a chance to really see these things in action, they're apparently very versatile and programmable. I'm looking forward to experimenting with them more in the future.

All in all we had a great time, picked up a few tips and tricks, and walked away with a copy of Office 2007. One lucky kid won his own Lego Mindstorm. It was also fun to catch up with friends.

Thursday, March 29, 2007 3:44:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [2]  |  Trackback
 Tuesday, March 27, 2007

As a reminder, we're having a special .NET Bring Your Family event this Thursday, March 29th, 2007 at our local Microsoft Offices.

The event runs from 6:00 PM to 9:00 PM and is intended for you, your spouse/significant other, and children ages 6 or 7 and up. Sure, there's a geek aspect of the event, as there will be discussions on Office 2007 and Windows Vista for the adults/spouses but there is also a fun side with Lego Mindstorm Robotics stuff for the kiddos (and probably some adults too) with a Lego Mindstorm Robot as a raffle giveaway.

Food (probably pizza) and drinks will be provided by Microsoft.

So prepare for a fantastic time and come one and all. With your participation we can definitely plan on having a lot of fun!

Time: 6:00 PM - 9:00 PM
Date: Thursday, March 29th, 2007
Place: SLC Microsoft Offices (123 Wright Brothers Dr., Suite 100, SLC, UT 84116)

See you there!

Tuesday, March 27, 2007 2:42:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback

I had the fortune (or misfortune depending on how you look at it) of completely rebuilding my development machine from scratch last week.  The unfortunate circumstance of having a corrupted registry and destroyed network settings befell my laptop due to a bad install of a VPN client.  I was able to rescue 100% of my data however, off-loading it to an external USB drive which I love.  I've long been wanting to make the move to Windows Vista but for a grundle of reasons couldn't validate the time it would take to move to the new environment.  Perhaps this was the kick in the pants that I needed.

Once I blew the machine away (paved it, as they say) I set forth to install Windows Vista Ultimate on my Dell Precision M90.  The install went extremely smoothly - I had an operating machine in about 30-45 minutes.  With the exception of the built-in laptop monitor, I was very pleased that the OS correctly identified 100% of my devices.  It was peculiar that Vista insisted in setting the display rotated 90° counter-clockwise after a few reboots.  Until I installed the correct drivers I couldn't shake it of this habit.  Also, it's working great with my secondary Dell 2407WFP monitor :-)  Dual 1920x1200 resolution :-)

I've also installed my customary applications (Office 2007, VS Team Suite 2005 SP1 w/Vista Patch, XML MissionKit, SQL Server Express 2005 SP2 (I decided to use SQL Express rather than the full blown SQL Server AND Express for development purposes - it's proving to be perfect), Photoshop CS2, WinRar 3.7 (you'll need 3.7 for better Vista integration), Resharper, Invirtus VM Optimizer, et al).  Much of my development also requires VS2003 (.NET 1.1) which is not supported by MS on Vista.  I've therefore established a Virtual PC running XP SP2 as my primary .NET 1.1 dev platform and it's working great.  I have it open and running all day long with ne'er a hiccup.

All in all I can say that I'm very pleased with the upgrade and it wasn't the least bit painful.  Also, I can honestly say that I enjoy using Vista as a non-administrator (something I had been doing religiously for about 2 years on XP).  The periodic UAC warnings aren't the nuisance everyone seems to think they are.

That said, it is important to recognize when things are running under admin privileges and when they're not.  For instance, if an application launches following the install, chances are it's running under admin privileges so any settings made aren't going to be for the logged-on user but rather for the administrative account.

I'm loving developing on Vista - it's awesome! :-)

Tuesday, March 27, 2007 1:35:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback