Monday, August 3, 2009

MSDN Webcast: geekSpeak: Composite Application Development (Level 200)

Start Date: Wednesday, August 19, 2009 12:00 PM Pacific Time (US & Canada)
Duration: 60 minutes
Audience: developer

In this geekSpeak, Microsoft Most Valuable Professional (MVP) David Kelley discusses composite application development in Microsoft Silverlight and Windows Presentation Foundation (WPF). He covers the Silverlight Designer/Developer workflow, tooling, design patterns, anti-practices, and working with distributed teams. Your hosts for this geekSpeak are Glen Gordon and Mithun Dhar.

The geekSpeak webcast series brings you industry experts in a "talk-radio" format hosted by developer evangelists from Microsoft. These experts share their knowledge and experience about a particular developer technology and are ready to answer your questions in real time during the webcast. To ask a question in advance of the live webcast, or for post-show resources, be sure to visit the geekSpeak blog.

Guest Presenter: David Kelley, Senior Software Architect, IdentityMine

David Kelley is a Microsoft Most Valuable Professional (MVP) for Microsoft Silverlight, and he has been building Web-based, distributed applications for more than ten years. He is a Silverlight user experience architect at IdentityMine, and his passion is building user experiences that are elegant and easy to use. David's career highlights include a Silverlight demonstration with Bill Gates at TechEd 2008, and developing the "Entertainment Tonight" Web site for the Silverlight 1 launch and Emmy Awards. In his spare time, David is the executive officer of the Seattle Designer Developer Interaction Group.


Click Here to Register

Saturday, August 1, 2009

Designer Developer Communication and Interaction

I'm working on a joint research project with Interact (Seattles Designer Developer Interaction Group) to better understand the dynamics of designer and developer communication and Interaction. We will publish the information for everyone free but for now we need to collect the information. if you get a chance to fill out the survey please help us know :) The survey is in 2 parts and ideally we need both filled out.


Designer Developer Communication Survey Part 1


Designer Developer Communication Survey Part 2

Silverlight Firestarter - Seattle Sept 17th

Silverlight Firestarter in Seattle will be Sept 17th, with folks like Scottgu, Tim Heuer, Adam Kinney, Justin Angle, Kathy Carper, Karl Shifflett and more. Learn about all things Expression and Silverlightish and stay for pizza and fun. MVP's on hand for live streaming and Q and A

on facebook at
http://www.facebook.com/pages/Silverlight-Firestarter/112128391599

more to come shortly but stay tuned and keep your calenders clear.

Wednesday, July 22, 2009

INETA Silverlight 3 User Group Starter Kit

I got sucked into this cool off hours project with Ariel and David Silverlight todo this Silverlight 3 starter kit. Ariels design has been well received and I got the UI built out over the weekend and last night. From a design standpoint its simple and elegant and with the AnimatingCloud panel fun to play with. Screen shots can be found at: http://www.facebook.com/album.php?aid=102255&id=721326429&l=aba5d40170


The project is on codeplex but still in the process of wiring up the backend RIA Services, this is a fun engaging project that we hope to see on our home page for our user group shortly.

Monday, July 20, 2009

Silverlight 3 Out of Browser Quicky

One would think that being on the silverlight insiders list and being a silverlight mvp etc one would know when something changes but amoung all the meetings, and conferences and the like I missed a tiny change in the Silverlight OOB - from the initial beta and the release of Silverlight 3. That weekend that the release happened I went to go and upgrade all my projects to the latest bits and everything feel a part. I found when I removed all the out of browser stuff it all seemed fine. it didn't take long to realize the API's changed but took me a whole fraking (BSG lingo) week before I realized what happened to editing the application manifest. That being all the case let me recap how to build an OOB Silverlight 3 application.

Step 1, build a Silverlight application of some kind.

Step 2, right click on the properties of your Silverlight Project (the actual app project not a class library or something). Normally you should get the Silverlight tab of the properties pain.

Step 3, 'Click' the check box for 'Enable running application out of the browser.'

Optional step 4 would be to click the 'Out-of-Browser' Settings button and then to set icons and details as desired.

Optional Step 5 would be to customize the UI with an install button. In the case of Simon, in the page constructor that is using the Simon control we add some code like this to see if we should show the install button:


if (Application.Current.InstallState == InstallState.Installed)
{
installbutton.Visibility = Visibility.Collapsed;
}

then in the install Simon button event handler we use this line to trigger an install

Application.Current.Install();

from there you can pretty much do what ever you like. its easy simple and better then editing the raw manifest like we did with the beta, but to be honest I kind of like raw XML... Now those settings are not in the manifest but a seperate file called 'OutOfBrowserSettings.xml' which seems to contain everything that was in the manifest.

Thursday, July 16, 2009

Popfly is dead

Popfly is dead... going a way on August 24, 2009

With much sadness Popfly is going away. www.popfly.com/

Popfly was a IDE for hobbiest and non programmers for building online Silverlight mashups. Something like legos you could pick the popfly blocks you wanted and drag them on to a surface and then connect them and for the most part that was it. A cool technology but targeted towards a very narrow market and they couldn't get it to work with Silverlight 2 or newer so I'm guessing that this and more is the cause of pulling the plug. Moving forward I expect to see more mashup developement technologies in the future.

Monday, July 13, 2009

Silverlight 3 - Whats Next?

of course all the latest bits for Silverlight can be downloaded off of Silverlight.net but a few other sites have changed that might be important to check out. This site if your familiar with Silverlight you might know of:
 



http://www.microsoft.com/Silverlight/

rumor has it Dr. WPF might have helped? maybe? but in any case the guys from IdentityMine, Inc. built the silverlight part.
 


Another good resource is the new IM syncated blog site that aggregates the sites of the best and brightest at IM:.
 


http://www.identitymine.com/forward.
 


you'll find rock starts like Smitty, Laurent, Kurt, Jobi, Devin, me and more.

Tuesday, July 7, 2009

Silverlight? what about the hard ware geeks?

So Silverlight is cool, and working around here where everything is WPFish, or Surface-ish or Win 7-ish or Silverlight etc. or even stuff I can't talk about, I tend to forget about the geeky side of the hard ware we use. At IM there are lots of super cool, super smart poeple. Its a company of rock stars, that being the case however that turns out is true even of our IT guys. I finally got turned on to our IT guys blog... very geeky... :)

http://teknation.squarespace.com/

very geeky. One idea we had for the office is he likes this skelton case that looks like its out of a borg movie or something. we thought we could have one floor that has these cases and their uber cooling fans and other either steam punk or borgs sorts of things and then have all the cables drug up to the next floor so we don't hear the cooling fans...

Anyway if your in to hardware geekyness his blog is the bomb...

Saturday, July 4, 2009

Azure Simon

Davide Zordan posted a version of Silverlight Simon up in the cloud at http://azuretestapp.cloudapp.net

Davide had also added multi touch support to the WPF version. You can check out the code on the codeplex project http://Simon.codeplex.com/

Wednesday, July 1, 2009

Silverlight MVP

about a year ago I was at TechEd 08 taking to a friend (Peter) and he asked me if I was an MVP and I had no idea what that was. Granted I had heard it but never spent enough time to put 2 and 2 together. Well over the course of the next year and half or so I did find my self more involved in user groups such as the Seattle Designer Developer Interaction Group and Silverlight Insiders Group and of course I was already going to all the cool events such as MIX. I got a tweet from Suzanne at Microsoft Tuesday evening that I had been awarded Silverlight MVP.

For many years now I have been scoofing at things like MCP etc as I found that certifications like this tend to be something students do but the guys that are really good were the ones that can whip out the stack of experience and code. So for the most part I didn't care about that. I guess why I'm so proud of the MVP award is that it is not something you can just take a test. It is awarded based on contribution to the community and on the work you do professionally. As I understand it other MVPs or MS employees are the only ones that can nominate you and to be recognized like that for the hard work (albeit doing things like Silverlight Simon I have a hard time calling 'work') by others that are generally smarter then me is something I'm really proud of. Of all the silly certifications from school or other industry related stuff the only one that matters to me is Silverlight MVP.

In any case here is my MVP Profile:

https://mvp.support.microsoft.com/profile/David.Kelley

Tuesday, June 30, 2009

Simon a case study part 1 - designer developer work flow

So I while back a friend of mine and whom is another person that shows up to the local designer developer Interaction group and myself were talking about a simple demo app we could do that would show case a number of things, our goal was a good sample she could use on her resume and be a good sample application that could show case designer developer work flow and composite application development. Her idea was todo a simple Simon says game that we would have in Silverlight. As a team (such that two people being a designer and UX dev can be) we had our 'business requirement' but we needed to build on that with a comp or visual vision of what we wanted and a story (use case brief, scenario or other excuse for the same). Our user story went something like this:

John doe wants to play a game like Simon says. John sees link on a web page that says 'Simon says.' John clicks link and he doesn't have Silverlight installed so he gets a 'install me' link with a faded image of Simon. John can see from the faded image that Simon is what he is looking for and decided to install Silverlight. John then go to the Simon link and Simon comes up. John can click the new button to start a game and play a traditional game of Simon says buy following the sound and light patterns and clicking the appropriate game pads. John is able to use the high score button to see his high score. John has fun with and easy to use game and spends to much time playing the game.

with this as our user story, Ariel (the designer, names changed to protect the innocent or not) put together a wonderful bit of Xaml. Ariel being familiar with working with dev's took into account that things needed to be groups, and names reasonable or I would have a hard time working with the asset. For me the first thing I did was load the project and start to wire it up. One would think that Simon shouldn't be too complicated and at first it wasn't. A few events, and a game timer using a story board and we are good. Being the retentive dev that I am, I've had to learn to let go of that when it comes to Xaml as this tends to hamper or slow down the design to the point of just not being worth the time invested.

That all being the case we soon had a working game. Part of learning to work together and further learning to work on the same code at the same time that Silverlight and by extension WPF (actually that might be the other way around) is having the designer and dev work from source control. I know allot of dev's will have a cow about letting designer touch source control but its really not that hard. check out file, check in file... really even a designer can get the hang of it when their tool (Blend 3) supports it now. So we put this in source control (http://Simon.codeplex.com/). the one little detail we had to over come though was Silverlight 2 vs Silverlight 3 and we both were on opposite sides of the fence. This probably was our biggest issue we had to work out where we disagreed. And any time there is a designer and developer on the same project you tend to have at least one disagreement. We ended up eventually on Silverlight 3 as it supports more, the tools are better and it is being released next week. But generally deciding on any issue should be done based on the requirements and when the requirements don't provide enough bases then other reasons should come into play. The key then is to communicate. granted we hear that in everything from time immemorial but really how much do we have to tell people before the get it. 'TALK' things through and normally logic will dictate the best solution.

moving on...

Once in source and having the app running we would start building the application out. Ariel can muck with the design in more detail and focus on the finer points of the design to it was pixel perfect and I could play with game logic and function and we both could do it at the same time. Truly a zen moment for designer developer relations.

Friday, June 26, 2009

MediaElement for Sound effects

In doing Silverlight Simon and friends and then trying to port the uber tile from Silverlight to WPF I found that for doing quick short sounds there was a limit in Silverlight and WPF to the preformance and bahavior you can expect. WPF's 'MediaElement' is just horride but even in Silverlight if I try to use the same media element to play 2 short 2 second clips with in 1 second you will get issues. I must say though the Silverlight team has done a bang up job on the media element. It is orders of magnitude better then the one in WPF.

As part of pulling bits out of the crossfader codebase to post on codeplex I built a new 'MediaElement' class (see http://Crossfader.codeplex.com/) that solves this problem with sound in Silverlight and WPF and makes my life just that much easier for building composite apps.

So Karim suggested something called channel support to solve this and in this control I implemented it. Basically what happens is that the usercontrol called 'MediaElement' creates a collection of MediaElements that it then can have events and flags for for tracking state and each of these is a 'channel'. When you call SetSource the control looks for the first available channel to assigns the source. this actually creates like a quing mechinism that allows me to rapidly play sound effects without loosing one or having to wait for the control to have its mediaelement in a ready state and I don't need to have an army of media elements.

Also in WPF and Silverlight the usage can be then the same where I call SetSource and pass in a local uri path like this:


Target1.SetSource(http://localhost:52076/tone3.mp3);

or

Target1.SetSource("tone3.mp3");

in this case make sure the item is a local 'resource' in the xap with the control. In any case check out on the crossfader codeplex project or the HackingSilverlight library.

Tuesday, June 23, 2009

Silverlight Tour In Seattle

Just thought I would drop a note about the up coming Silverlight tour in Seattle. Erik Mork is speaking in Sept 2-4th.

https://agilitrain.com/Workshop/Info/Silverlight_Tour_Workshop

and more about Erik

http://www.sparklingclient.com/

Wednesday, June 17, 2009

Silverlight at an End... RIP

I was aghast when I saw this article...

http://www.computerworld.com.au/article/307687/html_5_could_it_kill_flash_silverlight?fp=16&fpid=1

don't get me wrong I think html 5 is great but there are so many wholes and are we really expecting all the browser's to get together and get it straight as to rendering behavior? not to mention all the nonsense about 'assumed' markup that browsers try to fix poorly formed markup. I mean really why not just use the SGML spec and call it good...

Any case with the coming trends towards UX and high touch I think the html 5 spec is too little to late for killing Silverlight and flash.

Tuesday, June 16, 2009

MVVM Silverlight

So this topic has been going around for some time about building MVVM Implmentations in Silverlight a couple of people I know are doing toolkits (surprise surprise WPF guys mostly) but here are two of my favorites include Michaels:

http://silverlightmvvm.codeplex.com/

and Laurents:

http://blog.galasoft.ch/archive/2009/06/14/mvvm-lsquolightrsquo-toolkit-for-wpf-and-silverlight.aspx

any real dive into the topic should also include shawn's blog/posts starting with say this one http://wildermuth.com/2009/06/10/DevTeach_Silverlight_MVVM=Easy_Demo

In any case since I've been focusing on the composite apps as of late I'm going to work on something based on Michaels and get that posted.

Thursday, June 4, 2009

Setter Value Binding Helper

A great little Hack in Silverlight, kind of technical stuff for the beginner but a good thing to have down in your professional developer toolbox.

http://blogs.msdn.com/delay/archive/2009/05/07/one-more-platform-difference-more-or-less-tamed-settervaluebindinghelper-makes-silverlight-setters-better.aspx

thanks to karim for this link.

More Simon the Saga

in this latest chapter of simon I have been trying to get 'Simon' to run in a scatterview control on surface to be more 'Surfacy'? [Sir - fa - see]? (new word?) In any case the code from Silverlight Simon to Surface Simon had to have even more hacks... Finally had to convert all the game pads to buttons, hack out the control template and create new event handlers for all 4 buttons. but alas Surface Simon is not available for Download off of codeplex at: http://Simon.codeplex.com/

Also to get around the sound issue with WPF... which I must say the fact that the media element is so lame in WPF as opposed to Silverlight is very very sad. Anyway I changed the PlaySound method of Simon to look like this:


#if Silverlight
Uri MediaItem = new Uri(SoundFile, UriKind.RelativeOrAbsolute);
SimonSounds.Source = MediaItem;
SimonSounds.AutoPlay = true;
SimonSounds.Play();
#else
MediaPlayer mplayer = new MediaPlayer();
mplayer.Open(new Uri(SoundFile, UriKind.Relative));
mplayer.Play();
#endif

you'll note the use of precompiler specifiers and that we are not using the Xaml based media element in the WPF/Surface versions any more...

Tuesday, June 2, 2009

From Silverlight to WPF to Surface... the Saga...

Going from WPF to Surface turns out to be a bit more in the line of code changes expecially in XAML then going from Silverlight to WPF. WPF Simon will run straight up in/on Surface the problem is all the click events are castrated by the Surface Framework as Suface focus's on 'Contacts'. In order these are the kinds of changes I had to make to make 'Surface Simon' playable.

First we couldn't just reference WPF Simon to make the chagnes we needed so I had to copy the code base. Then started with converting the 'Simon' user control to a 'Surface User control' something to the effect of:

<s:SurfaceUserControl x:Class="Simon.Simon" xmlns:s="http://schemas.microsoft.com/surface/2008"

and in the code behind:

using Microsoft.Surface.Presentation.Controls;
using Microsoft.Surface.Presentation;

and

public partial class Simon : SurfaceUserControl

then next thing I needed todo was swap out the button controls with surface button controls so I could get the contact events like this:

<s:SurfaceButton x:Name="ScoresBtn" Click="ScoresBtnClick" ContactUp="ScoresBtnContactUp" Style="{StaticResource ScoresBtnStyle}" Height="41" Width="34" Content="" Canvas.Left="98.407" Canvas.Top="-6" />

note I could leave the click even there and the new 'ContactUp' event basically just calls the click event like this:

private void NewBtnContactUp(object sender, Microsoft.Surface.Presentation.ContactEventArgs e)
{
NewBtn_Click(sender, null);
}

Thursday, May 28, 2009

Expression Blend

With the coming trend towards UX in general and my interest in Silverlight I have taken to following a number of up and coming designers. One 'Ariel' that I know has had her blog going for a while but hasn't posted a front end on her site finally got around to it. very cool :)

http://www.facingblend.com/index.html

Saturday, May 23, 2009

Silverlight Simon/WPF Simon on codeplex

I posted the solution for Silverlight Simon and WPF simon up on codeplex:

http://simon.codeplex.com/

this is a great solution for showing the conversion from WPF and Silverlight, using precompiler specifiers and other small differences between Silverlight and WPF elements.

Thursday, May 21, 2009

Flex Flash Smack Down and maybe some Silverlight

Last night was the Seattle Designer Developer Interaction Group (user group) meeting. its a user group focused on UX and the designer developer experience. We meet in downtown bellevue. Last night Yoeun Pen was our guest speaker and a did a great presentation on Flex/Flash. Granted we were bolted out of the board room by the local construction cure and we had to play ninja and come up with a venue on the fly but some a miracle (ie, talked to hotel that we have our room booked with normally) we got to use a better room near by (about 100feet). We had a great turn out and a great dicussion on the tools for designers vs the Flex IDE. I was pleased to learn that the designer developer story is better then some of the other technologies we looked at but not as clean as WPF/Silverlight.

Yoeun Pen covered a number of things including:
  • What is Flex?
  • MXML (flash version of Xaml)
  • Flash/Flex 4?
  • Flex SDK
  • Flex Builder
  • Flash vs Flex
  • Components
  • Embedding assets
  • Skinning

and he did a great job contrasting Flash and flex and compairing that with Silverlight/WPF. You can download the powerpoint at:

http://www.HackingSilverlight.net/Downloads/FlexFlash.zip

Yoeun's blog is at:

http://www.nationleprechaun.com/

Hope to see everyone at the next SD2IG about the latest topic related to UX.

Monday, May 18, 2009

Silverlight 2 Installs Greatered the all others combined...

Can't get over the quote '... Silverlight 2, the platform is installed on more machines around the world than the web browsers Firefox, Safari and Chrome — combined. Damn. Them fightin’ words.' from:

http://www.techcrunch.com/2009/05/18/microsoft-says-silverlight-installed-more-than-firefox-safari-and-chrome-combined/

Routed Events in Silverlight

Andrew the local uber genius at IM, likes to take on simple tasks... some of his recent accomplisments including, writing aber 3d physic's engine for surface, writing a UX gesture engine for fun and hey while he is at lets add Routed Events for Silverlight... So anyway Andrew posted his current little project on Codeplex for everyone and I'm certainly going to use it as the latest cool hack. :) So I'm going to include it in the HSL library but only the SL related bits. If you go out to Andrews codeplex project you can see that it is simple to use and extends Silverlight that much more. Its pretty click and lets you define and event, subscribe to events and they even get raised.

check it out at:

http://sl3routedevents.codeplex.com/