| Comments

Back in December, I wrote about my attempt at diversifying my hobbies.  In October 2008 I started taking guitar lessons because I had a Fender ‘laying around’ that was getting unused.  Since then I’ve really enjoyed it and picked up an acoustic (which I actually enjoy playing more).  I’ve also picked up some computer equipment (M-Audio Black Box) so that I can mess around with software like GarageBand and actually record some of my practices.

I’ve moved quite a long way from my happy birthday recording in that blog post :-) but I’ve still got a long way to go.  Traveling certainly puts a dent in practicing for something like a musical instrument – especially when you don’t travel with it.  I’ve pretty much been gone from mid-April until mid-May which means I haven’t practiced much at all.  I’ve thought about getting something like the Martin Backpacker guitar, but just haven’t picked one up yet.

I have found some great online resources that have made learning the guitar a lot more fun for me as a geek.  Turns out there is a bunch of great info out there for self learning.  Of course, I don’t think anything can fully match 1-on-1 instruction from someone in person, but for in-between lessons, here’s some things I’ve found fun and useful.

  • iLife 09 music lessons – I had big hope for these and it is turning out that they just aren’t that exciting once compared to other free (and more frequently updated) offerings are out there.  I still have the basics (the celebrity lessons are lame in my opinion) which do a decent job covering things like the 12-bar blues, etc.  The production quality, as expected from Apple, is of the highest quality…just wish the content was updated and more appealing.
  • JustinGuitar.com – A UK guy who uses YouTube to deliver free lessons on basics as well as some fun/modern guitar riffs.  He’s got a great personality and goes at a pace a beginner like myself can understand.
  • Ultimate-Guitar.com – one of my favorites.  Once you learn how to read guitar TAB notation, this site is fun to check out.  It is user-contributed content, so reader beware, but most of what I’ve found is pretty good.  When I hear a song I might want to check out, I search this site and learn.  I learned how to play a Bob Marley tune completely in a few hours by just what I found here.
  • James from Handsome Alvin – James uses YouTube puts up some great  videos walking through popular songs with strumming patterns and at a pace perfect for me as a beginner.  I’m frequently more of his videos a lot because I like how he puts up the strumming patterns and chord progressions.
  • Marty Schwartz from GuitarJamz.com – A new resource I just found that, like others, uses YouTube to deliver.  Marty has a great personality about him and slows things down for beginners.  And he takes requests via Twitter.

My private instructor is great as well and like I said, nothing can replace that.  Having these things in-between lessons at my own pace moves me beyond lesson exercises to learning things that catch my ear and have fun doing it.  I’m still having a blast, even though it is immensely challenging for me technically – as well as finding the time to practice!

Happy hobbying!

| Comments

I’ll be joining Dan Wahlin and Rob Bagby on 18 May in Phoenix for a Best of MIX event.  I’ll be presenting Silverlight 3 and building data-driven line-of-business applications.  All demo, all tech, all Visual Studio as my presentation tool :-).

Come out and join us for the event!

Best of MIX Agenda

Monday, May 18, 2009
1:00 PM - 5:00 PM
Wells Fargo Conference Center
100 West Washington Street, MAC S4101-017
Phoenix Arizona 85003

What’s New in Silverlight 3?

Are you interested in building business-focused Rich Internet Applications (RIAs)?  Would you like to take advantage of 3D in the browser, but assume it is too hard?  Have you wanted to take a Silverlight application offline?  Then this session is for you.  We will explore and illustrate the new features of Silverlight 3, including the following:

· Support for perspective 3D

· Offline Support

· .NET RIA Services which simplifies the traditional n-tier application pattern by bringing together the ASP.NET and Silverlight platforms

Building Web Applications with Windows Azure

This session will begin with a brief overview of Azure and discuss some of the announcements made at MIX.  We will then illustrate through demo how to build a Windows Azure application from the ground up.  We will illustrate how to consume Azure Table Storage, how to host services, web pages and Silverlight components, as well as how to deploy your solution to the cloud.

MVC 1.0 vs ASP.Net Webforms

Have you heard about the new ASP.NET MVC  framework from Microsoft and wondered what it was all about? Are you curious whether this replaces ASP.Net Web Forms?  In this session you will learn how to use the model-view-controller (MVC) pattern to take advantage of your favorite .NET Framework language for writing business logic in a way that is de-coupled from the views of the data.  In addition, we will talk about the pros and cons of both MVC and Web Forms, how to determine the best choice for a specific project, various techniques and patterns used to build MVC applications vs. Web Forms applications, and the implications for using each approach.

Register for the Event

| Comments

We’ve just released an update to our Silverlight Enterprise Deployment guidance/whitepaper.  While a lot of the information from the first version of the guidance (targeted at Silverlight 1.0), we made some minor adjustments outlining the specifics for the updated Silverlight installer and documented some of the command-switches and their behaviors. 

The guidance covers:

  • Using Windows Software Update Services (WSUS)
  • Group policy
  • Microsoft System Center Configuration Manager (SCCM)
  • Manual install options
  • Maintaining and detecting version

It’s a great guidance document to keep in your toolkit if you are in charge of deployment in your organization or want a better way to manage mass deployments of Silverlight across the organization.  You can download the Silverlight Enterprise Deployment whitepaper from the Silverlight community site.

| Comments

UPDATE: FloatableWindow is now on CodePlex for easier community contributions and management of latest source and builds.  FloatableWindow CodePlex Project.  If you like this idea VOTE FOR IT in the Silverlight Toolkit!

I’ve seen a few comments/requests incoming lately that people like the ChildWindow control in the Silverlight 3 SDK.  This is a great control that creates a modal dialog for you.  When you use it, it disables your root layout application and shows the dialog you provide:

ChildWindow example

This is great for those true modal needs.  It responds to normal windows DialogResult type responses if you have buttons, etc. – great for error dialogs, logins, etc.  The request I’ve been seeing is for the same functionality, but in a ‘normal’ ChildWindow.

But I’ve been seeing requests that it should act more like the normal Window object in .NET, which has an option for showing a window as a ‘dialog’ (modal) versus a normal one.  Well, since the source code is available under Ms-PL license at the Silverlight Toolkit project, I decided to play around and refactor a bit.  If you look at the base class implementation of Window, the API shows two methods: Show and ShowDialog.  This is what I wanted to emulate.  I changed the ChildWindow to FloatableWindow only because I couldn’t think of a better name and it represented a desired behavior.  In ChildWindow, the default behavior is a modal dialog and there are a few key areas that drive this behavior.   There is a template part called Overlay that is responsible for the faded-out background of your app when the ChildWindow is shown.  The other modal semantics are driven by looking at the RootLayout of the parent creating the ChildWindow and changing its properties (IsEnabled=False).  Basically I just spelunked these areas and did some changing.

I implemented a property IsModal (_modal for the private accessor) that would be set in my new show methods, which I refactored to Show, ShowDialog and ShowWindow (internal).  ShowWindow would accept a boolean whether it was to be a modal or not, setting the private accessor.  The calls checking for disabling RootLayout, UpdateOverlaySize, ChangeVisualState and some of the focus event handling (as in a non-modal you may have multiple and you want each to be able to have focus).  After doing this I could create non-modal windows easily:

   1: FloatableWindow fw = new FloatableWindow();
   2: fw.Title = "Testing FloatableWindow";
   3: fw.Height = 200;
   4: fw.Width = 200;
   5: fw.Content = "Created at " + DateTime.Now.ToLongTimeString();
   6:  
   7: fw.Show(); //for non-modal
   8: fw.ShowDialog(); //for modal dialog

And I could create multiple:

FloatableWindow

All the other functions of the ChildWindow are there so there wasn’t a lot of work to do.  I kept the template parts, etc. so it is customizable in tools like Expression Blend.  There are a few things that I still need to do:

  • Better enable a default start position for the FloatableWindow
  • On focus events, if there are multiple windows, make sure that the selected window gets brought to the front of the layout when being used (NOTE: the logic for this is working actually, but ZIndex doesn’t appear to be able to be set on Popup, which I’m talking with the team about)
  • Whatever other bugs I may have caused by my assumptions :-)

But it was an experiment at least and seems to work so far.  Here’s the code: FloatableWindow_1.1.zip.  The archive file includes the code I used as well as Visual Studio item templates (C# and Visual Basic) to mirror the same functionality of Add New Item where you can add a new ChildWindow to your project as a user control. 

FloatableWindow Item Templates

Let me know what you think.  Hope this helps!

| Comments

Isn’t RSS great!?  Today I saw something wonderful pop in the feed from Jeff Prosise.  One of the problems with the ‘contest wheel’ app that Arturo and I did, was the CircularPanel we were using really at the time was only built for demo purposes.  There were issues in the spacing when different data items were bound to it.

This morning, Jeff released some code for a RadialPanel (same concept).  It’s wonderful.  I just swapped it out for the contest app quickly and got it working.  I’ve updated the code:

  • Replaced panel with Jeff’s code
  • Added an audio toggle button (after debugging, the music was getting annoying :-))
  • Fixed some highlighting
  • Configured for out-of-browser

Issues if anyone wants to fix :-) -- some highlighting off on selected item because of timer math conflicts as well as just general sizing of the app (configured for full 1024x768 right now without browser toolbars, hence the OOB app).

Anyhow, you can visit the app here (and install offline).  Again, it’s just a fun little app that was written in < 1 hour for fun.

Thanks Jeff for the RadialPanel code!