Melbourne Silverlight Code Camp Thoughts

Over the weekend I attended the Silverlight Code Camp held at the NAB training facilities in Docklands, Melbourne. It was fantastic that a bank showed an interest in a developer event, in particular Silverlight. The NAB has a flagship product built in Silverlight with future software projects planned. NAB are on the lookout for developers so if you’re interested in Silverlight, they have a large budget for development and have been spending big according to their who welcomed us before the keynote, so contact them if interested. Also thanks to the other sponsors such as Readify.

I’m a day late in the game for my thoughts, I was exhausted Sunday afternoon after 2 very early mornings and lot of sessions. For a comprehensive review of the event check out Alex Mackey’s blog Silverlight Code Camp Review. He makes a lot of great points that I agree with, in particular a little bit of polish missing on a few of the advanced topic sessions weakened the experience for those on the advanced track. As a first time event and being free, I give it an A- (minus).

I enjoyed the keynote presented by former Silverlight product manager Scott Barnes, even tho as all keynotes go was a bit flashy (silverlighty?) with a bit of marketing spin. What was nice to hear was in fact Microsoft are really backing Silverlight, and it’s one of if not the fastest iterating units inside Microsoft, with a very short release cycle. Other notes included the push (through demonstrating Silverlight’s usefulness, not by mandate) inside Microsoft for other business units to adopt using Silverlight on their public facing sites.

The experts panel was great, we do see these kinds of sessions for example at TechEd. Panel sessions are always great where experts are fielding questions from the audience and just carrying on a formalised discussion. This session was very entertaining and informative, the discussion on HTML5 was great with the key take-away being standards are slow to propagate (adopt) where-as Silverlight is iterating fast to accomplish rich web experiences right now. Other recommendations from the panel, make use if WCF RIA where possible. Also the need to be in a different mindset when building Silverlight applications; which by nature function asynchronous with the back-end (this message was repeated in several presentations).

My top 5 sessions were:

One thing that topped off the event personally for me was winning a licence to some Silverlight controls from Component One, looking forward to getting that soon. Should help get me motivated into constructing more complex Silverlight side projects, which if #SLCC ’11 goes ahead I can present. If you have the opportunity to attend any future Silverlight code camp in Melbourne, don’t hesitate to sign up.

Check out the sessions schedule on my previous post.

Finally the Silverlight community in Australia links are:

Melbourne Silverlight Code Camp – January 2010

The final weekend in January 2010 is the Melbourne Silverlight Code Camp.

I will have a summary post of my take on the event and topics covered, but this is a very quick post to have a plain text schedule up on the web (in particular for iPhone access).

View here as 46kb PDF (wordpress doesn’t allow for .txt uploads!).

Schedule:
Day 1
9:00 – 10:00
Keynote

10:15 – 11:15
s – Navigation Framework
a – MEF In Silverlight

11:30 – 12:30
s – Expression blend for dummies
a – Silverlight & IronRuby

12:30 – 1:15
BBQ Lunch

1:15 – 2:15
Q&A Experts

2:15 – 3:15
Lightning Talks

3:15 – 3:45
Coffee break

3:45 : 4-45
s – Developer Meets Designer
a – Automated UI Testing from simple to deep dive

5:00 – 6:00
s – Sketchflow
a – RIA Services / SQL Azure

Day 2
9:00 – 10:00
s – Sharepoint 2010 – Overview
a – Bing Maps

10:15 – 11:15
s – Creating Silverlight Controls
a – From object to MEF

11:30 – 12:30
s – Security in Silverlight
a – Sharepoint 2010 – Implementing SL controls as web parts

12:30
Lunch

1:15 – 2:00
Lightning talks

2:15 – 3:15
s – Common pitfalls in enterprise apps
a – Smooth Streaming

3:15 – 3:30
Locknote

Using SketchFlow First Impressions

I’m kicking off a new personal project, and I thought this would be a good opportunity to plan out it’s flow of operation using SketchFlow (get a 60 day trial of Expression Blend 3 here). I intend to develop the application in ASP.NET MVC, not Silverlight. So what I will be outputting from Blend will only be used to refine the UI and get initial feedback from colleagues and friends.

The power of SketchFlow is to create quick informal sketches of screens and to start mocking up interaction through animation (transitions, visual effects). It’s not designed to create final polished artifacts, existing tools already do this well, such as Adobe PhotoShop. So far it seems to be working well.

So I thought I would summarise some initial tips and issues I’ve already had to deal with in the form of questions (and answers).

What if controls in design mode aren’t behaving as you expect?
This was a simple issue, I had forgotten I had placed a transparent rectangle (factor 20%) over a a few groups of controls. Once I adjusted their z-order using Order.. send backwards/forwards, it was working fine. I chalk this up to it having been a while for me in using a tool like this. When controls overlap, you can select controls behind them but not perform all the actions you would like via mouse actions, i.e. resizing is blocked. So either un-overlap them to resize, or use the property windows.

How do you set the default screen size in SketchFlow?
The screens I’m sketching are for a website, I wanted to sketch them down the page so needed a larger Y pixel range. I wanted to adjust the default size of new screens so I wouldn’t have to manually change each new screen. I was unable to find a setting that is per project, only an application wide setting via menu: Tools… Options…

Setting the Default Screen Size in SketchFlow

Setting the Default Screen Size in SketchFlow

For my use I would have liked to see new screens spawning off an existing screen set to match it’s height and width, tho a feature like that may upset users who want default setup screens every time.

How do you create reusable components in SketchFlow?
The approach I’m using is to create “Component Screens” that can then easily be dragged onto other screens. I’m doing this initially for my heading/navigation. But instead I’ll demo creating a reusable login component (the steps are identical).

Create the components on any screen (new or existing), and select them individually via the “Objects and Timeline” window or on the screen itself (if a new blank screen CTRL+A works the fastest).

Objects and Timelines window

Objects and Timelines window

Then right click on the collection either on the screen or in the “Objects and Timeline” window and select “Make Into Component Screen…”

SketchFlow right click action - make into component screen

SketchFlow right click action - make into component screen

That brings up a dialog, so just give your component a name:

Make Into Component Screen Dialog

Make Into Component Screen Dialog

Now you have a new “green object” on your SketchFlow Map, you can simply drag it onto other existing screens, or use the little drop down menu below it to select “Insert a Component Screen” which will add it to the existing screen you drag it to.

SketchFlow Map Insert a Component Screen

SketchFlow Map Insert a Component Screen

Am I enjoying using SketchFlow… Will I keep using it… Will I keep blogging about this…

Yes

Sketching an actual solution.

It’s been a while since I’ve posted, project commitments have been drowning me. But the tide has now receded.

Last night (Tue 30th of June) I attended the Melbourne Silverlight Designer and Developer Network (SDDN) event, always great fun and interesting and always has free pizza (if you get there early).

With presentations from Mahesh Krishnan @ blogesh.wordpress.com about new features in Expression Blend 3. The most interesting to developers of business systems being; sample data generation, and IntelliSense support.

Which was followed by a great demo of SketchFlow – A rapid prototyping tool (that works) by Shane Morris a User eXperience (UX) guru from Microsoft.

SketchFlow looks to fill a gap well for designing something that can actually be played with and fine tuned by designers, users and business analysts. Having been involved in projects where UI’s left up to the control of developers have resulted in lots of rework when clients begin to use them as part of UAT such a tool if used properly should improve the process greatly.

Some of the great uses for SketchFlow are to quickly explore possible flow paths in an application, screen layout design and actually begin to setup associated actions such as animations and transitions. The deal-maker being it’s ability to create actual, usable code. Without the designer/business analyst writing code. This code can then be “harvested” out when development begins. It also includes a feature designed for testers and other lovers of long documents, it can output a word document of the screen designs, annotations and possibly feedback elements. The feedback element of the system allows a redistributable (via silverlight package or central web location) for users to navigate around the application screens, and draw and add notes. With the most typical example of a “simple request” – *big circle around logo* with the text: “can we make our company logo bigger?!”.

There should be a Beta release coming soon, so get a hold of it to actually witness it’s potential. It’s worth checking out the AU Remix 09 videos including the key note where SketchFlow is mentioned.

I won a copy of ‘Sketching User Experiences: Getting the Design Right and the Right Design’ (Interactive Technologies) available at Amazon. I hope to get a chance soon to start reading parts of this, and may make a post out of it.

I won the book by raising a question about how one could go about using SketchFlow to help design a “Version 2.0” of an existing system. Attempting to incorporate actual real world looking components from the real operational system side by side with new additions, including mixes and matches for modifications/overhauls on existing system screens. The flexibility of the tool seems to lend itself to using it in a variety of scenarios and project types.

Update (10 Jul 2009): Download Blend 3 RC & SketchFlow Release Candidate here.
Update 2: That link isn’t a wise choice… Stay tuned to : seethelight.com

Why WCF

UPDATE 9-July-2010:
This entry gets a lot of random hits, so I thought I would update the information as of July 2010, just to give links to newer areas relating to WCF.

WCF – Windows Communication Foundation, has become in fact more of a foundation for a larger set of abstractions on top it. Simply put WCF is a set of fundamental plumbing components with powerful extensibility features. But is not the easiest of things to use and configure.

The options now for more out of the box ready solutions that wrap and exist on top of WCF are:

These frameworks/abstractions/concepts are intended to simplify creating and deploying your web accessible service offerings.

Original post as it was 24-Feb-2009…

To quote the MSDN front page for WCF:

“It unifies the capabilities in ASMX, WSE, Remoting, COM+, and MSMQ; therefore developers need to learn only one programming model.”

Simply put “it’s where we are with Microsoft.NET framework”, if you’re going to build .NET applications it’s the right choice. Service Oriented Architecture is currently the most practical approach to build robust, distributed and maintainable applications. WCF allows you to simply and easily build such services according to an industry standard, with the intention to achieve a high level of interoperability. WCF takes care of: service interactions, marshalling, type conversions and other protocols allowing the developer to focus less on plumbing and more on delivering application value.

Key WCF notes:

  • Most messages are SOAP messages.
  • Not only for HTTP (can have: TCP, NamedPipes).
  • Can therefore communicate:
    • same machine
      • same app domain
      • cross process
    • cross machine
      • intranet
      • internet
  • Interoperable with other non-WCF services.

What I will attempt to demonstrate in subsequent posts is how simple it is to get the application plumbing working right and smoothly. Also down the track demonstrate some of the more complex scenarios you can setup with WCF especially the capabilities to further extend the framework.

Next up is “The WCF Run-Down“.