Silverlight release candidate (RC0)

Things are hotting up for Silverlight 2 as Microsoft have release RC0 for download for developers but not for the general public. The idea is that when Silverlight 2 goes live (must be soon, PDC anyone?) then those of us that have developed applications using Beta 2 have a chance to test and fix any breaking changes. I just spent the last 6 hours installing both Visual Studio SP1 and the new Silverlight tools (oh and uninstalling all the previous Silverlight installs). A couple of tips, if you have Blend then uninstall that too, and when you insall VS SP1 it may reboot after installing .net 3.5 Sp1. If that happens then it appears that VS Sp1 has installed (cause VS says so) but in fact in my case it did not. So you may have to re-run the install to complete it (Vista issue?).
 
After installing RC0 you do get a few new goodies, the most obvious of these is a combo box, hurray!!!
 
Happy installing, but prepare to lose your dev machine for a few hours if you’ve not already installed VS Sp1. Here’s waiting for general release Hot
  

Inspired by Remix – a designers view of creating a Silverlight game

After a recent trip to reMix UK my designer friend finally published their process of designing the graphics for a Silverlight game. Have a read, of course this means I’ve got to get my thumb out and write the developers version now!

remix uk day 2

Day 2:
Understanding the ASP.NET Model-View-Controller – Scott Guthrie
The ASP.NET MVC project
is a strange one for me. A few months back I read up on it and thought
it looked really good but I’ve not actually had the time to try it out.
Scott’s presentation was excellent. What I especially liked was the way
he showed the warty way of doing something and then showed the simpler
method. This is excellent because the warty way makes it obvious what
the code is actually doing, whereas too many people only show the nice
clean method which makes it far harder to understand what is happening
under the covers. Some of the features I haven’t seen before were just
excellent, the validation messages were really well handled. I’m very
impressed by MVC, I don’t have a lot of love for the ASP.NET psudeo
event model/page life-cycle. Well worth attending the dev-based
presentation. 10/10.

Computing power, screens, and networks: Impact on authored content – Tim Regan
Tim
was, by his own admission, a little nervous presenting but he shouldn’t
be. I would group the mobile part of the presentation in the, ‘ways to
visualize data’ presentations with a specific focus on analysing
literature. I found it very interesting but since I don’t have a need
to analyse patterns in literature the specifics are of much to use to
me directly. But again it re-enforced my interest in thinking about
different ways to present data. Good presentation but some difficult
for me to use in my every-day role – 7/10

Beauty & the Geek – The Perfect blend of left & right brain – Conchango
Following
in the MS Expression wave of designers & developers working
together Conchango shared their experiences. I’ve worked in this area a
bit and it was interesting to hear how they were getting around some of
the problems, e.g. no version control for the designer. I thought it
was interesting to make someone the owner of the xaml. I was a little
surprised to hear that the developer spent so much time in Blend. I
think that the separation of Blend and Visual Studio is a great way to
ring-fence the responsibility. I agree that Visual Studio does need
better basic handling of xaml in the design, at least to be able to
navigate around the visual tree and highlight the xaml, but apart from
that leave Blend well alone unless you really are a designer! It was
also interesting to hear the pair-programming style of working (even
more reason for the dev to leave Blend alone) as in my experience there
is usually a fair amount of delay between the developer and the
designer re-synchronizing their efforts. Interesting presentation and
it’s nice to hear the experience of others. I think the developer vs.
designer jokes are a little weak these days but I can forgive
that…oooh get me 😉 8/10

Behind Every Great Site There is Great Data – Eric Nelson
I’ve
had the good fortune to attend a number of Microsoft seminars hosted by
Eric over the years, yes I do remember him joining (good grief).
Although obviously Eric works for Microsoft but I’ve always thought his
presentations are from the point of view of their customers, i.e.
telling us as it is rather than as it should be. To be honest I nearly
didn’t attend this as I’ve had some exposure to these technologies and
had written some of them as too imature, but I thought it would be good
to hear Eric’s impression. In this presentation Eric did a good job on
untangling the differences between Linq to SQL and Linq to Entities (he
has a great diagram for this on his blog) and although I still remain sceptical about the EDM I certainly feel more comfortable understand
how keep the path to it open. I would have liked a few min’s about
where this fits into a n-tier design, e..g where to put the business
rules but overall I’m glad I attended. 9/10

Mobile User Experience – Inspiring new ways of design & development – Antony Ribot
Antony
talked about the issues of providing a quality and clear interface for
the various mobile devices out there. I felt the content was fine but,
for me, the presentation wasn’t as slick. This resulting in a slightly
muddled message, however Antony is clearly a smart person, perhaps a
bit of nerves. 6/10

Sneak Peak and end – Paul Foster
A few little demos and adverts and a Balmer-like burst from Paul 😉 He did re-enforce the importance of letting people have the time to be creative, something I yearn for in my current post.

For Day 1…

remix uk Day 1

I’ve just got back from reMix UK (Mix UK) in sunny (and it was) Brighton. As is my way I thought I’d provide a little mini-review of the event…

Day 1
Keynote: Bill Buxton & Scott Guthrie (and others)
Great start from Bill who gave a passionate talk about the importance of design and user experience, including his personal mantra of, Ultimately, we are deluding ourselves if we think that the products that we design
are the "things" that we sell, rather than the individual, social and cultural experience that they engender,
and the value and impact that they have. Design that ignores this is not worthy of the name.
He backed that up with a great advert from a mountain bike company showing a rider have an exciting ride through a stream but you cannot see the make (or model) of the bike he’s on.

Bill talked about Jonathan Ive the designer behind Apple’s IMac & Ipod. He explained that he was at Apple during the bad years and it was only when Steve Jobs took over was he given the chance. The important points I took from that are (well it was obvious)  a) the company needs to put design at equal importance as any other part of developing & releasing a product b) you need to free employees’ from the n+1 release treadmill and allow them to fulfil their potential. I really enjoyed Bill presentation.

Scott’s presentation didn’t excite me quite as much, to be fair there wasn’t a lot of stuff that was new to me. He introduced folks from ITV and (InnerAthlete???). Again the ITV presentation was all about streaming…again. Ok I can see that it’s important to application developers because it helps to increase the Silverlight user-base but for me streaming video is not where the value of Silverlight is. So it was good to see the application side represented by the Athletic training software. Although the application design wasn’t my cup of tea.

Overall I would have preferred to leave after the first part of the keynote, but I’m sure for members of the audience who haven’t been exposed to Silverlight before then it would have been a great keynote. 7/10

It’s not necessary to be understood – Brendan Dawes
As a developer these are exactly the sort of sessions that I attend Mix for. Brendan showed lots of interesting ways to visualize data, although I doubt I could actually use any of them directly it helps me approach showing data in a different way. It also encouraged me to play more with development rather than only create things with a specific business purpose. 9/10

Designing for the Wild: Sketching Experiences – Bill Buxton
More of the same from Bill, with some interesting views about how much detail you put into your early designs and how many proposed solutions you deliver early on. It certainly struck a cord with all too many prototypes making it into a product because they were the only choice rather than necessarily being the best solution. I did feel that Bill didn’t offer advice for smaller companies working on much tighter budgets where even if you provide the roughest sketches to a client you’ll have burnt too much money and time. For that reason it’s not a perfect score. 9/10.

ADO.NET Data Services for the Web – Mike Flasko
Although I tend to avoid the development track I felt I needed to hear a good presentation on ADO.NET Data Services because I felt very suspicious about the use of this. Mike did a good job of explaining it even though it was very similar to previous presentations. I feel I have a much better appreciation of how and when to use it. I still would like more to be said about the relationship with WCF, i.e. I want to switch to a faster protocol than http, how would I do that?  8/10.

Becoming human; smiling like you mean it, & learning to say hello – Denise Wilton
A nice presentation from the Denise Wilton (Graphic Designer & Creative Director of moo) talking about fostering a friendly atmosphere for a site. By actively participating in a "community" the whole experience from the user to the staff fielding calls is improved. I lot of the talk was around community and public sites and was very interesting, perhaps a bit too long a session for the content but Denise is a very good presenter – I liked the humour and the accidental use of some…stronger language as it was heart felt rather than scripted. 8/10
[Edit] Forgot to mention the "canyon of despair" (smells too much like marketing speak for me 😉 ) which was a nice way of depicting the difference between a hold-you-hand easy application and an advanced bells-and-whistles application or rather that bit in-between the two where a lot of application want to live.

Day 2…

Silverlight game – Olop

Come play our really difficult (not) Silverlight (you’ll need the latest version) game.

 

Feedback welcome.

 

Controls, left/right cursor keys, space to fire, return to select power up (when lit)

Click to start (or resume when paused)

 

http://www.clearbreezedesign.com/olop.htm

 

I’ll post more about how it was created, the idea was really to try out Silverlight and the processes needed for a developer and a designer to work together. For now just go an help Olop save his Ice Flow 😉

 

Another gotcha using DataContract and Isolated Storage

When my Silverlight application is initialized it loads settings from isolated storage. Everything seemed to be going well when it suddenly started to fail, odd. What is nice is the isolated storage file object has a path property so you can easily navigate through the bizarre set of folder locations and take a look at the actual file. The settings were saved by serializing an object via DataContract and thus ends up as XML. Opening the file I spotted that there was an extra ‘>’ at the end of the file. Suddenly I realised that the problem was the settings were overwriting the data in the file rather than overwriting the whole file. So my last set of settings was one character shorter than the previously persisted set. Changing the isolated file storage settings from OpenAndCreate to just Create solved the problem.

Root element is missing when using DataContract

I’ve been using DataContract to serialize objects into IsolatedStorage when I received a "Root element is missing" error when trying to use ReadObject. Turn out it was a simple case of the file existing but with nothing in it, doh.
 

Internet Explorer (IE6 & IE7) fault in unknown module

Just been through a very frustrating couple of days with IE. A few days ago the machine had used an old dial-up connection to ftp to a site when the machine crashed. After the crash IE refused to connect to a web site. It just sat there not doing anything. Looking the Event Log it said there was a fault in an unknown module. After installing and running many anti-spyware tools nothing was found. So maybe it was an IE6 problem. So I upgraded to IE7 only for it to have the same problem. I upgraded to XP SP3, still the same problem. I reset all the IE options, disabled all add-ins, nothing. Interestingly looking at the settings in network connections also seemed to be a bit dodgy. I rebooted in ‘safe mode with networking’ and it worked!? So I disabled the same set of services, used sysinternals ‘autorun’ to remove all the start-up applications but still nothing. Something odd was going on. To make things even more confusing IE7 would *sometimes* work if you typed in a URL somewhere else, e.g. Windows Explorer or Start->Run. So it didn’t seem that it was the core IE components. I then tried to open an XML file that on my disk and again IE crashed but this time rather than freezing it displayed the old ‘send error information’ dialog. In desperation I tried to send. Then the old dial-up dialog popped up, ah that’s odd. I turned off all the dial-up settings from the dialog. After a reboot the IE now seems to be working. I’m not sure if it was the dial-up settings that were causing but they did seem to bracket the start and end of the problems.

DataContract missing a reference?

An easy way to serialize objects in Silverlight is to use DataContract and DataMember attributes to decorate the objects/properties you want to serialize. One little gotcha is that by default you can add the System.Runtime.Serializable namespace fine but DataContract doesn’t show as useable. You have to add a reference to the System.Runtime.Serializable library to get those features.

Problem playing wav sounds in Silverlight

I was playing around with sounds and Silverlight but kept getting;
—————————
Error
—————————
A Runtime Error has occurred.
Do you wish to Debug?
Line: 433
Error: Sys.InvalidOperationException: MediaError error #4001 in control ‘Xaml1’: AG_E_NETWORK_ERROR
—————————
Yes   No  
—————————
A quick look around the internet showed a number of people having trouble using the correct Uri or not using embedded resources correctly, I was sure I was coding it correctly. Then the obvious struck me, it doesn’t support WAVs. Sure enough once I change to WMA the code sprang to life.