Michael Wolf

{Binding ME}

20100505 Wednesday May 05, 2010

talking code and experience

Over the next couple months we have a couple events Myself or Dave will be at. Starting this weekend and then leading all the way through june. If your on either coast, come on by and say Hi.

  • 5/6/2010
    Disruptathon - Tysons Corner VA
    Mobile Business Apps (http://www.disruptathon.com/)


  • 5/8/2010
    CMAP Code Camp - Columbia MD
    ( http://www.cmap-online.org/CodeCamp/)


  • 5/26/2010
    Disruptathon - DC
    Gov 2.0 To Mobile - ( http://www.disruptathon.com/)


  • 6/7/2010
    Internet Week - NYC
    (http://www.internetweekny.com/)


  • 6/9/2010
    eBay Dev Con 2010 - San Jose CA
    ( http://www.ebaydevcon.com/ ) along w/ John Papa
  • Posted by michaelwolf | May 05 2010, 01:09:23 PM EDT

    20100423 Friday April 23, 2010

    ebay simple lister with silverlight 4



    Just a month ago , Dave ( Building Innovative Windows Client Software ) and Myself ( Building the eBay Simple Lister with Silverlight ) were at mix showing the world the eBay simple lister. Today I am VERY proud of the whole Cynergy and eBay team to announce that eBay has released the Simple Lister – beta to the world. John Papa posted a great post on the in’s and out’s of using the simple lister . Now its time for you to put up all those old Silverlight 2 books up on eBay. In all seriousness , Silverlight 4 is an amazing development platform, that really enabled us and eBay to develop this application the way we wanted. Throughout the process we used blend and sketchflow extensively (as seen in the key note) and utilized many of the new Silverlight 4 features to bring this app to beta.

    Here is a brief list of Silverlight 4 features we utilized w/ links:



    These new features really made the simple lister possible. What is also great is that the majority of these items are not out of browser specific. For example , the code which handles the bar code lookup actually can run out of browser, in browser, and even on the phone 7. We are working to make this source available, but in the mean time see the demo below showcasing this code portability:



    All and All were very excited to see the simple lister and silverlight 4 roll out!

    Posted by michaelwolf | Apr 23 2010, 05:22:41 PM EDT

    20100422 Thursday April 22, 2010

    we are growing

    We are looking for a few great folks to join Cynergy. Are you looking to work on great wpf and silverlight projects like the ebay simple lister shown during both the mix 2010 and the silverligt 4 keynote? Are you a designer looking to work with a company who understands design is not an afterthought but the core of the thought? If so were looking for you, feel free to contact me directly michael.wolf [ @ ] cynergysystems.com . Were growing and would love to have you with us.

    Posted by michaelwolf | Apr 22 2010, 03:35:49 PM EDT

    20100311 Thursday March 11, 2010

    xna gunfight at mix and sxsw

    Were getting ready to head out to sxsw and mix. We will have a booth at mix, and will be at the Microsoft booth and party at SXSW, if your in town come…. by and say Hi. One thing we will have at both is a quick fun game some of us came up with for Cynergy.Labs were calling "Gunfight in Redmond". Its an XNA game running on the zune hd, using the accelerometer. The idea came about while discussing the Mix 2010 zune shuffle app I made. We were talking about other gestures you could achieve with just the accelerometer. Shake is the most prominent of these types of gestures, but we wanted to find another that emulated a real life interaction. After some discussions of using the zune for a baseball game, and the concern of people slipping and throwing the zunes, we looked down at our nerf guns. In the DC office we have a fine assortment of nerf guns, and a single nerf missile, which are always a great release. This became the inspiration for the game.



    thanks to Ryan Lee (by the way check out his new mobile gesturecons ) and Javieer Villarel for all the great work.

    Posted by michaelwolf | Mar 11 2010, 03:31:02 PM EST

    20100222 Monday February 22, 2010

    gesturecons visual language for multi touch

    I work with some amazing people, one of which is Ryan Lee. He is a great user experience designer here at Cynergy , you might have seen his work on the web cam demo on channel 9. We had been discussing the future of touch interfaces for some time now , and last week he told me about a new project he was working on named "gesturecons".



    The general idea is to help build a common visual language to aide in wire framing and ideation, as well as documeting and standardizing gestural interactions. He explains it best:

    "After all of the excitement over upcoming multi-touch slate interfaces like the Ipad I started to read a lot of the related existing design literature. I am surprised about how much thinking has already went into this new discipline, but started to see a gap with some of the existing tools and design approaches. Our way of thinking as web/application designers is about to be turned upside down. No longer will we design around a mouse/cursor, but will have to think about fingers and gestures when we design the next generation of interface. This new type of interface will rely a lot more on setting up scenarios and a much better understanding of how users will be interacting with a UI.

    I started to look at wire-frame/ design approaches for this type of design and could not find a good visual language that would help me describe to clients how their interfaces would work. This led me to create a set of wire-framing gestural icons that I am calling “Gesturecons.” "


    He has released the gesturecons under a Creative Commons License: http://gesturecons.com/

    Posted by michaelwolf | Feb 22 2010, 01:36:37 AM EST

    20100205 Friday February 05, 2010

    MIX 2010 Zune HD app

    We're starting to get pretty excited over here about MIX and SXSW. We will have a presence at both, but I have to admit I'm kind of partial to mix. So in celebration of MIX 2010 and the great music that is the heart of SXSW I built a zune hd music "mix" application.



    This was developed using XNA and Game Studio 3.1 with the zune hd extensions. Using the zune media collection and the built in accelerometer you are able to shake the zune and pick a random song. There is also a "lock" button so once you have a song your ready to rock to, you can still drop it in your pocket with out the concern of shaking to a different song. If you have a zune hd and the development tools installed, ping me (@geekpunk) and I can send you a ccgame to install.

    Overall XNA development is a lot of fun, and a great paradigm shift from Silverlight and WPF development. The biggest shift is from an event model like in most business development frameworks (wpf/silverlight) to a polling / query/game loop style model like that of xna. Another paradigm shift is similar to surface development and early silverlight 1.1 development, and that’s getting over the "control" hurdle. There are no "controls" and thus building an app like the zune mix app depends on some more manual methods of "controling" interactions and layout than you would in silverlight or wpf. Luckily there are allot of great resources out in the community to learn from (which I will list below). Also all the same ria style tricks you have learned through the years and design skills still totally apply. Over the next couple weeks we will have more and more things to show off at mix and sxsw, looking forward to seeing people there.

    xna resources

    Posted by michaelwolf | Feb 05 2010, 02:57:55 AM EST

    20100119 Tuesday January 19, 2010

    Silverlight 4 FileSystemWatcher ... no strings attached

    In my last post I showed how to implement a bridge service using the new net.tcp binding in order to implement something not native to Silverlight 4, namely a FileSystemWatcher. While this works, as does Justin Angels com+ implementation (http://justinangel.net/#BlogPost=CuttingEdgeSilverlight4ComFeatures), it doesn't translate well to the mac, and eventually the mono , platform. However seeing Justin's com+ implementation inspired me to create a full Silverlight implementation using a background thread to look for changes. Overall this took around an hour.

    In my ruff first pass implementation the file system watcher is a dependency object. Thus it can run its own background worker, and dispatch back to the UI thread to publish back events, without slowing down the ui thread looking for changes. It wakes up every 3 seconds to search the path looking for changed/deleted/ or additional files. With this "native Silverlight" implementation it is also restricted to the elevated trust System.IO file sandbox (folders: My Documents, My Pictures, My Videos , My Music and related subfolders see http://msdn.microsoft.com/en-us/library/ee721083(VS.96).aspx#file_system_access). Not as solid as having this functionality built directly into the framework, also does not give you the full os access like com and or a bridge service would. However it does give an option for building cross platform solutions which must monitor an accessible folder.

    See the screencast below to see it in action.



    Posted by michaelwolf | Jan 19 2010, 11:57:30 PM EST

    20100118 Monday January 18, 2010

    Silverlight 4 breaking the com sandbox to create a file watcher

    Since Silverlight 4's release I have become quire enamored with the elevated privileges out of browser functionality. The com interopability is great, but again your back to com development and interop. Which although very powerful is also kind of painful. Recently some one brought up a question of how you would accomplish something like a file watcher. In a desktop / server experience this would be pretty simple using something like a FileSystemWatcher (http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx ) in the full clr. However no such luck with in the Silverlight 4 agclr. Yet with the ability to execute processes from the out of browser applications in Silverlight 4 on windows, I decided to create a bridge service. A bridge service is more or less a full trust soap or tcpip service which runs on the desktop which the Silverlight application can communicate with. This approach is more or less what is used in the flex world via the merapi project (http://www.merapiproject.net/ ). After the bridge is in place, you can add a full .net FileSystemWatcher to the service, and publish back to the Silverlight application when a file has been added/removed.





    Policy/Socket Service

    The creation of the bridge service is pretty straight forward. You will need to implement a duplex style pub/sub service, a good example can be found here http://tomasz.janczuk.org/2009/11/pubsub-sample-with-wcf-nettcp-protocol.html . This service could be a http pooling duplex, but in my example I used the new net.tcp binding due to the performance improvement. In addition you will need to set up and have running a policy server. The net.tcp binding enforces the same need for a policy server, and the port restriction as the Silverlight 3 socket support. Luckily now with in visual studio there is a decent policy service project template you can add from the online template gallery. In the example shown, this was the basis for the net.tcp service its self. Below is the code for setting up the net.tcp service in code with out config.



    For more info on the new net.tcp binding in silverlight 4 see:

    Silverlight to Bridge Communication

    After the bridge is in place you communicate with the service like any other duplex style service, by adding connect methods and responding to the service call back delegates. In visual studio you even get full discoverability via the add service reference dialog. The last step is simply to add the com interop to actually start the service exe.



    In addition on start up you could pull down the exe if its not currently downloaded (see http://www.cynergysystems.com/blogs/page/michaelwolf?entry=silverlight_4_and_command_line for further examples of this).

    Posted by michaelwolf | Jan 18 2010, 03:24:33 PM EST

    20091221 Monday December 21, 2009

    webcam demo on channel 9

    At PDC 09 I was able to spend some time with Pete Brown to talk about our Star Trek Surface Application but also some of the Silverlight 4 demos we have put together. Below is one of those, this is a sample I put together with one of our great user experience designers Ryan Lee. This was originally blogged here, but Pete's video is a much nicer walk through and much more fun. Also includes a cameo by Tim Heuer.



    enjoy!

    Posted by michaelwolf | Dec 21 2009, 08:23:54 AM EST

    20091214 Monday December 14, 2009

    star trek surface application on channel 9

    At PDC 09 Rick and Myself were lucky enough to meet with Pete Brown to talk about a recent surface application. We also talk about the developer experience between surface, silverlight, windows 7.



    http://channel9.msdn.com/posts/Psychlist1972/Pete-at-PDC09-Rick-Barraza-and-Mike-Wolf-Star-Trek-Experience/


    jump on out and take a watch!

    Posted by michaelwolf | Dec 14 2009, 04:49:08 PM EST

    20091125 Wednesday November 25, 2009

    Silverlight 4 and command line execution

    In my last post on out of browser we showed how easy and powerful it is , all be it a bit of a step back in the development time machine, to execute native windows applications using the new com support in silverlight 4. The next logical question arises, that if you can execute com can you also execute a local process. The answer is yes and no. You can execute a local process, not using System.Diagnostics.Process.Start() like you would in the full CLR, but using the COM inerop and the Windows Script Host . The Windows Script Host is a multi purpose COM object that’s shipped with Windows since Win 98, and generally used for automation tasks, which makes it perfect for use in silverlight com inerop.

    For the purposes of the demo I use the Script Host to act as my command line to execute arbitrary processes. In the following screencast I show how to simply execute any command via it from silverlight. Although this is useful for opening native applications, where this could really shine is by downloading applications which were specifically designed for interacting with your silverlight 4 OOB application.



    The code to call the Script Host to execute the process is very simple.



    Obviously , as that this tool is highly flexible, there are a ton of methods available to you (http://msdn.microsoft.com/en-us/library/2x3w20xf(VS.85).aspx) where we are just showing the absolute easiest implementation. However cool this is, and possibly very powerful as is to say open up a new browser window from your silverlight oob app (http://screencast.com/t/M2E1YmZiNz). I think the most exciting use for this would be in pulling down an additionally complementary executable for your OOB experience. With the addition of file access and web requests with out the client policy sand box in elevated privileges OOB apps this becomes very easy , as seen in the snippet below.



    Conclusion after quite a bit of time exploring Silverlight 4 OOB functionality:
    All and All with the combination of com inerop + web requests with out a sandbox + local file storage + drag and drop from the desktop == you get closer and "closer" to a first class citizen silverlight desktop app. I say closer because with the less than desirable com developer experience and the windows only platform of com , combined with a lack of a native installer leaves WPF as the development platform of choice for complicated desktop experiences. Where as Silverlight OOB with elevated privileges will now fill the gap that the click once WPF app once filled for most implementations (and then some). In addition the silverlight 4 OOB experience will now better lend its self to the desktop companion and hybrid Web/Desktop experience that really speaks to the 3 screens and a cloud vision.

    Posted by michaelwolf | Nov 25 2009, 02:47:05 AM EST

    20091124 Tuesday November 24, 2009

    Tim Sneath Interview on Silverlight 4 and WPF

    I was lucky enough at PDC 09 to run into (dr) Tim Sneath and ask him about WPF and the Silverlight continuum in the time of Silverlight 4. Go out to facebook and watch the interview.



    http://www.facebook.com/video/video.php?v=190747957550


    Over the next couple months I should be getting more and more quick videos out from others in the Silverlight/WPF community, so join our facebook group to be notified as they are added.

    Posted by michaelwolf | Nov 24 2009, 11:34:36 AM EST

    20091120 Friday November 20, 2009

    Silverlight 4 dials in skype

    One of the pains in silverlight 3 out of browser was the strict sandbox that was put in place. Although well meaning, this put a heavy restriction on the type of rich desktop like experiences we could produce. Just as in the api limitations in Adobe Air, there were and are solutions which involve local socket services (as discussed in this blog entry last year: http://www.cynergysystems.com/blogs/page/michaelwolf?entry=breaking_the_sandbox_in_silverlight ). However now in silverlight 4 we will have a much better solution, definitely not perfect but better. Firstly as mentioned in our drag and drop post (http://www.cynergysystems.com/blogs/page/michaelwolf?entry=silverlight_4_drag_from_desktop ) you can drag files directly into the out of browser window, which gets us closer. However the biggest improvement here is the inclusion of elevated privileges, which allows you to get access to the local file systems at a pretty broad level, but more importantly access to locally registered com objects. This means direct access to integrate with things like word or excel, like you will see in most demos, but also the huge community of com objects like skype.

    When I first saw this feature, I remembered that back in the bad old silverlight 1.1 days I investigated using Skype to make phone calls via the java script bridge. What I found was that skype makes available a very rich com api known as SKype4Com. So while on the plane back from PDC09 I set out at integrating this into Silverlight 4. The screencast below shows the results of opening, changing focus of, and then dialing the skype test user using the Skype4Com api and the Silverlight 4 elevated privileges support.



    In order to utilize the Skype4Com api with in silverlight 4, there are a couple steps you need to follow to begin:

    1. First you will need to register the dll with windows , good old regrv32 does the trick
    2. Next you will need to ensure that your project references the Microsoft.Csharp dll which is available in the silverlight SDK, this gives you access to the Dynamic keyword (aka Dim for all you old VB developers).
    3. Next you will need to go inbto your silverlight project properties and ensure the silverlight app has oob enabled
    4. Lastly you will need to go into out of browser properties and click the require elevated privileges checkbox. This will allow your code to hit the registered dll, and will also show the user the following install message.


    After this is all set your ready to start programming like its 1999. No really… although the com inerop functionality is extremely powerful, the dev model is not the .net world you have come to love. This is one time in the microsoft xaml world where remembering what cdonts is, is a benefit to you now. That’s because com inerop is very similar to the asp classic days where we would create a cdonts object to send mail or createobject() to throw a message into msmq. When working at this level you will not have intellisense we all love, and debugging will become more difficult. However as the saying goes "with great power comes great responsibility". So for example in the following code snippet we will create a dynamic object, and start working directly with the Skype4Com api.



    Pretty simple, lines of code wise. The difficulty comes from the lack of discoverability via intellisense or reflector. Which as a developer will put you at the whim of the dll developer. Luckily Skype releases great docs (https://developer.skype.com/Docs/Skype4COM) as does the Microsoft Office team (http://msdn.microsoft.com/en-us/library/bb726434.aspx).

    All in all though were very happy with this solution to bridge the sandbox divide. So many of our customers are looking for this type of integration particularly with products like excel or outlook that we had previously had to find less than desirable approaches to resolve. Even with the com development model, this is still 500X easier and more stable than the alternatives, and will open allot of doors and great rich desktop experiences. To learn more about this functionality check out the great session by Joe Stegman at pdc from this week http://microsoftpdc.com/Sessions/CL20

    Posted by michaelwolf | Nov 20 2009, 09:11:31 AM EST

    20091119 Thursday November 19, 2009

    Silverlight 4 Drag from desktop

    One of the exciting announcements made at pdc 09 was that silverlight 4 will support drag and drop from the desktop to both the web and out of browser. Whats great too is how similar the process is to WPF, the object properties are exactly the same, the only difference is 1 line in the actual file opening. Thus by sharing a common code, you can leverage this functionality in a full desktop experience as well as a silverlight experience with the exact same code.



    The key difference being that in WPF you get as the drop data the filenames as a string[] and then you need to open the file, where as in silverlight what you get is a FileInfo[] ready for you process. The code snippet below shows this in action, and 2 routes to process the drop, one using conditional compilation the other simply looking at the type of data being provided.



    Whats exciting about this is how this really helps bridge the web and desktop divide in the browser. In the out of browser scenario it will give our experiences a more true desktop feel that you are currently able to provide in true desktop apps in wpf or adobe air. Looking forward to all the bluing the lines experiences we will be able to create using silverlight 4.

    Posted by michaelwolf | Nov 19 2009, 12:15:07 PM EST

    20091118 Wednesday November 18, 2009

    Silverlight 4 beta and web cam support

    I'm here at PDC 09, where I'm very excited about all the possibilities in Silverlight 4. When we jumped into 1.1/1.0/WPFE several years ago, we never thought silverlight would evolve so quickly, but here we are. One of the most exciting features, which allot of users have been asking for since the bad old Silverlight 1.1 days is webcam and mic support like they had known in flex. Now with Silverlight 4 you will have direct access to both mic and webcam. This opens up allot of possibilities for creative and collaborative work, everywhere from Ribbit on silverlight for voip phone calls in the browser, to using silverlight to do fun things like Elf yourself.

    The video below shows the webcam support in action (as well as drag and drop to be covered tomorrow). This is a silverlight 4 application utilizing the new VideoCaptureDevice to create a simple stop action animation application.



    The code is very simple. The first thing you need to do is request use of the web cam. The webcam use must be user requested, and can be automatic, say on a loaded event.



    After which if you would like to take a capture, you need to fire the async capture event.



    Later tonight we will be posting the live application , so watch for updates via facebook and twitter. Over the coming weeks I will be posting about other new silverlight 4 features starting tomorrow with the new drag and drop from desktop features. Plus look out for videos Rick and Myself did with Pete Brown at PDC 09.

    Posted by michaelwolf | Nov 18 2009, 12:28:34 PM EST
    XML