Meet my alter ego

December 13, 2007

This post is for my loyal readers out there.  In case you are looking for some extra blog posts by Yours Truly, you’re in luck.  Now that I work at Infragistics, I have a blog on their blog site as well.  My new blog is not devoted to WPF, in fact, I intend on posting all of my WPF content here.  The new blog will contain the type of posts that I never felt I should write about on a blog called “Josh Smith on WPF”.  

My new blog will be about all of the cool technologies that I research and use for my new job.  It should be a lot of fun, so why not stop on by once in a while to see what the non-WPF Josh is thinking about?  If you want to check it out, here are the links:


RSS 2.0:


See you there!


My first experience with Silverlight 2.0

December 13, 2007

I have spent the past couple of days checking out Silverlight 2.0.  I have much to say about my findings thus far, but in general, I am both shocked and pleasantly surprised.  Since Silverlight 2.0 is an alpha, there is no point in being too critical of it just yet.  According to Scott Guthrie the next RTM release, called Silverlight 2.0, will be much more feature-rich than the current alpha.

I expected Silverlight 2.0 to be an enormous, complex, sophisticated platform rivaling the technical splendor known as WPF.  I mean, it used to be called WPF/E , right? Boy was I wrong!  I just kept saying to myself, “I can’t believe Silverlight does not have that either!”  At first, it felt like I was trying to play a piano that had all of its white keys removed, and I could only use the black keys to make music.

Here is a brief list of some things in WPF that we know and love but are currently missing from SL 2.0:

  • Standard controls; like Button, TextBox, ListBox, CheckBox, etc.
  • Layout panels
  • Data binding
  • Templates
  • Styles
  • Commands
  • Routed events
  • A vast number of events on elements seen in WPF
  • A resource system based on merged resource dictionaries
  • Visual and logical trees (no programmatic construct represents them, at least)
  • Did I mention that there’s no Button???

Once I got past all those missing necessities, I found that what does currently exist is actually very cool.  If Microsoft delivers all that Guthrie promised in his blog post (which does not include everything in the list I provided above), SL 2.0 should be an excellent platform. 

I must admit, though, I really miss routed events.  Now that I think about events as tunneling and bubbling, working with normal CLR events really stinks.  It feels so primitive.  However, I might have found something that indicates Microsoft intends on adding routed events into SL 2.0 (even though Guthrie did not mention this in his post).  The EventTrigger class exposes a RoutedEvent property, just like in WPF.  It is possible that they named SL’s EventTrigger’s property “RoutedEvent” to ensure that the Silverlight XAML compiles in WPF, but perhaps they actually intend on implementing routed events in the future.  Think about it, what sense would it make to have a property called RoutedEvent if routed events do not exist in SL?

I tried watching some of the video tutorials on that go over the basics, but most of them were so dumbed-down that I felt like I was in a Special Ed class.  I have found the Quick Start tutorials to be very helpful and insightful for a newbie, such as myself.

For my first SL 2.0 project I decided to build a very simple ListBox control.  Please keep in mind that this is the first Silverlight project I have ever written, so don’t expect anything too cool.  After creating this ListBox I found out that the Silverlight SDK comes with the source code for a ListBox control.  I checked out the SDK control, and it is definitely better than mine is, but at least mine allows you to navigate the items with your keyboard.  Ahha!  Take that, Microsoft!!  😉

Below is a screenshot of my AgListBox control in action, with some text above it explaining which item is selected (in case you couldn’t already tell…):

AgListBox in action

Here is My First Silverlight Project.   Be sure to change the file extension from .DOC to .ZIP and then decompress the file.  If you need to install the Silverlight runtime and tools, check out the list of requirements and links here.

Mole II has been enhanced

December 11, 2007

Karl Shifflett decided that Mole II was not good enough, so he added in a feature which allows you to see non-public fields of the object you are inspecting.  Now you can see properties and fields, which makes the debugging process even more rapid because the true state of your objects can be seen with ease.  After we reviewed the new feature, Karl blogged about it and wrote an article on CodeProject.  Check out his updates here:

As of this writing, this new feature does not display the private fields of an object’s ancestor types.  It only displays the fields found in the object’s most derived partial.  I think that needs to be addressed before it is truly “done,” but so far it’s a great start.  Nice work, Karl!

Mole II

December 6, 2007

Karl Shifflett, Andrew Smith, and I have gone too far this time.  We are so far gone into the world of WPF visualizers that there’s no turning back.  We took our Mole visualizer for WPF and built something ten times better…Mole II

That’s right, the visualizer which made Woodstock look like a toy is now dwarfed by its successor.  Mole II is so incredibly cool, so fast, so robust, and so IMMINENTLY USEFUL that I can do it no better justice than to simply provide you with a link to the article about it:

Karl and I have been slaving over this thing for weeks now.  Andrew has been like a sniper, who has helped squash some of the really nasty bugs and then disappear into the thickets until needed again.  Mole II was the most fun, collaborative, interesting, and exciting software project I’ve ever been involved with.  All I can say is…WOW! 

Oh yeah, by the way, I’ll be giving a WPF presentation tonight (Thursday, 12/7/2007) at the Beantown .NET User Group.  If you’re in Boston tonight, stop on by.

A WPF Contest Worth Entering

December 4, 2007

I am honored to announce that I am a judge in the “Lab49 WPF in Finance Innovation Contest“.  The premise of the contest is awesome; they provide you with some data and you have to create the best way of visualizing it in WPF.   I almost wish I wasn’t a judge so that I could compete!

In addition to me, the other two judges are Rob Relyea and Charles Petzold.  We have the excellent task of reviewing all of the applications that are submitted and deciding which ones are the best.  I should point out, that if you attempt to contact one of the judges regarding your application then you are automatically disqualified.

The prizes are INCREDIBLE.  It makes the prizes in my WPF Challenge competition look like chicken feed.  You can check out all the goodness here.

What’s even more important than the prizes, however, is the prestige you will receive by winning.  I’m sure that the winners of this competition will be raised a notch or two in the eyes of employers at companies which need WPF devs.  Think about it, what do you have to lose?

I have returned to Infragistics

December 4, 2007

Once upon a time I was hard-core into Windows Forms.  I worked at Infragistics in their WinForms Development Lab, helping build and maintain their awesome controls and components.  After a while the urge to move to NYC became irresistable, so my girlfriend and I packed our bags and headed off to the big city.  Ever since then I never found a job that even came close to being as cool as the one I had at Infragistics.  Nor did I ever find a company where my co-workers were as hard-core into programming and cutting edge technologies as I am.

Fortunately for me, I was able to get a job at Infragistics again!  My girlfriend and I will continue living in NYC, but I’m a full-time employee in the Infragistics User Experience Group.  My official job title is “Guidisan” which I find rather odd, but it is fitting because my job is rather odd.  

Guidisan is supposed to mean the combination of a Guide and an Artisan, which accurately describes what I will be doing there.  I’m thrilled to announce that my job will entail helping developers move into the world of modern UI programming; by creating exemplars (something like a reference app), writing technical articles, creating demonstrations of how the Infragistics controls can be used in powerful and innovative ways, and generally staying in touch with the community by blogging and speaking at tech events.   My manager, Ambrose Little, said that the User Experience Group is like the SWAT team of the company.  So it looks like I should have a pretty diverse and interesting job.

They’re paying me to do what I love!  I knew all this damn blogging would pay off somehow… 😉

I’m glad to say that Infragistics has done nothing but grow since I left.  I was amazed at how many more people the company has now.  I was also pleasantly reminded of how nice and smart the people are there.  I’m thrilled to be back!!

On my first day some of the guys took me out to lunch.  During the ride over to the restaurant I realized that, including myself, I was in a vehicle containing five Microsoft MVPs!  How cool is that?!  Talk about a Geek Squad…

LINQing WPF value converters

December 1, 2007

A new blogger in the WPF world,