And then there was light – Xamling is born

May 16, 2010

So the news is if you missed it: I quit my job at Readify and started a new company with my brother Alex.

Our new company is called Xamling (pronounced Zam-ling) ! Holy crap it took us ages to think of a name, we even ran a help name us site – which turned up some awesome results, but most of the good ones were already taken!!

Anyways, we finally settled on Xamling. Alex and I invented “Xamlings” – little flying Xaml icons for Remix 2009.

I like to think of Xamling as an anecdote: Fred – “Hey dude, what are you doing?” Jonsey – “I’m Xamling up some mad awesome”. Fred – “Oh sweet – want some pizza?”.

For those that don’t know Xaml stands for eXtensible Application Markup Language and is the markup that is used to build Silverlight and WPF applications (and Windows Workflows and other stuff too).

So, here is this new company – so what?

Well you may also know that Alex, who is not only my brother, is a very talented designer, who also happens to be a Xaml gun. So we decided to quit out jobs and try out something new.

What do we do?

Well – Alex and I have *a lot* of experience. At the moment Alex is working on UX design for Cochlea, and I’m working on some sekret stuff for Microsoft (not bad for our first gig in the new company!)

We specialise in Silverlight, MS Surface, WPF and Azure. But that is not what differentiates us…

What makes Xamling special is that we have developed an amazing designer developer workflow technique that we employ on our projects. We’ve even presented on it at the Melbourne Silverlight Code Camp, Silverlight Designer and Developer Network, Web DU and soon at Remix Australia 2010.

So what can we do?

Well, we can consult (UX, Design, Architecture etc), build (we have exclusive access to a development team with experienced developers, testers and project managers – which we manage and train, tailored training (SL!) and also pre-packaged/tailored architecture solutions to get your new project up to speed quickly (drop in architecture and training)…

Find us on twitter – I’m @jakkaj and Alex is @agkdesign.

Fun!


DigiGirlz, Deep Zoom and Azure

April 7, 2010

A few weeks ago I was tasked with coming up with something for the attendees at the first ever DigiGirlz event in Australia to play with. Something to get them a little excited about technology. Catherine Eibner came to me with some ideas that she thought would make for a compelling exercise and we came up with a cool Azure based Deep Zoom app!

We decided to take the Eventr (Codeplex | Blog | Blog) open source project I worked on last year for ReMIX Australia 09 and make it more accessible and dynamic (and brand it a little for the event).

What came out the other side was a dynamic Azure based DeepZoom creation application with auto updating Silverlight front end!

What does it do?

Firstly, check out the running application here!.

The Silverlight application shows a DeepZoom composition of all the photos that were taken at the DigiGirlz event.

The photos were all added to a Flickr Group which the Eventr application automatically scans. When new photos are added, the photos are downloaded in to Azure and processed in to a new DeepZoom composition.

The Silverlight client is notified that new images are available – it then highlights the new images and automatically reloads the DeepZoom composition from the server.

The system is configurable to scan a Flickr Group, perform a Flickr full text search or perform a Flickr tag search (or a combination of these).

The system has been designed to be “multi-tenanted” which means it can host more than one group of images… I.e. it could do DigiGirlz and another collection – all the images would be separated depending on the URL entered.

How does it work?

The application is hosted in Windows Azure and utilises a lot of what Azure has to offer.

  • It uses a WebRole to host the Silverlight application and services (which read from the DataBase).
  • All data is stored in a SQL Azure database. The data stored includes information about which images have been downloaded from Flickr, their metadata (title, description etc.) and their processed state (have they been included in the DeepZoom composition yet?).
  • Linq to SQL is used to access the SQL Azure database. You can access SQL Azure in the exact same way that you would access a normal SQL database. In fact when in development mode (local) I used SQL Express, and during deployment I changed my config to point to a SQL Azure instance… too easy.
  • WCF RIA Services was used to communicate from Silverlight to the server (where Linq to SQL is used to then go up to SQL Azure). The Silverlight client is very easily then able to get the metadata (title, description) from the database, as well as send data back (like view counts etc). All in all, it was a very simple task to get data from SQL Azure into Silverlight.
  • Azure Blob Storage is used to store the generated DeepZoom files. Blob storage is great because you can access the files directly using a URL, as well as get programmatic access to them to CRUD(create read update and delete) them.
  • To fire commands based on events from the user, the system uses Azure Queue Storage. Queues allow you to add an item in one place, and read it in another (only one thing can read an item)… so it’s great to fire a command once, and pick it up once to execute it. An example command in this system is “Clear”. Admins can clear out all the images/collections and data and start again.
  • To build the Deep Zoom collection, the system utilises an Azure Worker Role. The worker role polls the database every few seconds to get out the Flickr search configuration (i.e. which group or text search to scan). It then performs this search against Flickr. New images are downloaded and added to the SQL Azure database for later processing.
  • When the Azure Worker Role downloads an image, it is stored in a Windows Azure Drive. Once stored, it is processed using DeepZoomTools (a part of Deep Zoom Composer.

    Windows Azure Drive is important as DeepZoomComposer doesn’t work with streams (which is how Azure Blobs work)… it needs a drive letter. Azure Drive is great as it provides drive letter access to a special type of blob storage – meaning it will work in Azure!

    Once the composition has been built it is uploaded to Azure Blob storage for access from Silverlight (you cannot access Azure Drive files from outside the Windows Azure hosting platform – they are a special type of storage).

  • Can I test it out??

    Unfortunately at this stage I cannot release the code for this stuff, but – you can have a go at using this project yourself…

    Head over to the test Flickr group here. Add a photo the the group (KEEP IT CLEAN PLEASE!!).

    Then head over to the test URL and keep watching… your new images will show up in no time (under 2 mins)!

    Resources

    Azure Team Blog: http://blogs.msdn.com/windowsazure/
    Azure Storage Intro: http://msdn.microsoft.com/en-us/azure/cc994380.aspx
    SQL Azure Overview: http://www.microsoft.com/windowsazure/sqlazure/
    Windows Azure Overview: http://www.microsoft.com/windowsazure/windowsazure/
    WCF RIA Services Overview: http://www.silverlight.net/getstarted/riaservices/
    Get Started with Silverlight: http://www.silverlight.net/getstarted/
    Eventr DigiGirlz Demo: http://jak.cloudapp.net/Default.aspx?guid=764fbcd0-c15f-45f3-bda5-de3ed9081ce8

    Eventr Codeplex project: http://eventr.clodeplex.com


SDDN Tonight in Sydney

April 6, 2010

From Chris Anderson

“Just a reminder that the Sydney SDDN meeting is tonight at 6pm (for 6:30). If you haven’t done so, please register on the Facebook event here: SDDN Sydney on Facebook so we can order enough pizza. I’ll give a bit of a rundown of the outcomes from MIX10, and Jose will talk about developing for Windows Phone 7 (or the Zune Phone as I prefer to call it).

Oh, and bring your external HD / USB keys / laptops / (trying to think of something suitably silly for this entry, but got nothing at this time of night), as thanks to Justin King who consumed great slabs of bandwidth to download all the MIX10 videos (16GB worth apparently, so come prepared) will have them all available for download off an external HD. If Justin doesn’t make it then we have a backup of Ewen Wallace (aka @CADbloke) who has already grabbed them from Justin and will also bring them on an external HD. There is a ton of great content there, and is is your best chance to get them if you haven’t got them already and want to reserve your bandwidth for other potentially less reputable purposes.

And hey, if none of that got your attention, there’s free pizza! See you then!

Chris Anderson
Resident Sydney SDDN Rambler”


Readify Silverlight Training Course – March 10-12 2010, Sydney

February 28, 2010

Next week I am running the Readify Silverlight training course in Sydney from March 10 to 12.

The three day course takes you right through Silverlight from the basics right up to advanced topics.

Head over to http://readify.net/training-and-events/professional-series/professional-silverlight-workshop/ for more information!

Cheers,

Jordan.


Next SDDN Meeting – Thursday March 4th, Melbourne

February 26, 2010

The next SDDN meeting has been planned for Thursday March 4th in Melbourne. Head over to http://www.sddn.org.au to check out the details!

Cheers,

Jordan.


I’m a Silverlight MVP!

January 4, 2010

The other day I recieved an amazing New Year’s surprise in my email! I dicovered that I have been awarded Microsoft MVP in Silverlight for the 2010 year!

I am extremely honored to be recognised and included in this amazing group of people and send a massive thanks for all my supporters over the last couple of years – you know who you are!

Once again thanks to everyone and a wonderful 2010 to everyone!

Cheers,

Jordan.

P.S. for more information on MVP and what it is, have a look here.


Upgrading from .NET RIA Services to WCF RIA Services

November 30, 2009

I just had to go through the process of upgrading an app built with the RIA Services CTP code from a few months ago to the new WCF Ria Services beta that was released at PDC.

After the upgrade I was presented with a billion errors – I had one of those “OMG I wish I didn’t just do that” moments… but after some hunting around I found that the changes were not too bad.

Here is my report on what I did to get my project working.

In web project

I had a custom object being exposed via RIA Services, which meant I had to have a [Key] attribute on one of the properties. System.ComponentModel.DataAnnotations has been upgraded, but the reference in your project will have required specific version set. So remove the missing DLL and re-add it. Use the 3.6.0.0 version.

System.Web.DomainServices.Providers has been split in to two files – System.Web.DomainServices.LinqToSql and System.Web.DomainServices.EntityFramework. I’m using LinqToSqlClasses in my project, so I added the Linq version (and removed the old reference).

You’ll also have to update the name spaces in your DomainServices – Change “using System.Web.DomainServices.Linq;” to “using System.Web.DomainServices.Providers;”.

ServiceOperation has changed to Invoke.
Please note that it seems that in the VS2010 version of WCF Ria Services you can return entities from Invoke operations but not in the VS2008 version. Keep this in mind when you are designing your domain services – although you probably should use normal non Invoke style methods to return entities.

Also in your domain services on the server, “this.Context” has been changed to “this.DataContext”.

I had an enum that was exposed by a ServiceOperation (now Invoke) and it wasn’t being properly pushed out the client code. This appears to have been fixed, so I removed the .shared part of the file name to fix (it was doubling up on the client and getting a compiler error).

Silverlight Client

SubmitOperation is now in System.Windows.Ria namespace, not System.Windows.Ria.Data

If you are using RiaContext to get login information etc, then you’ll have to change RiaContextBase to WebContextBase.

IEditableCollection is gone… I use PagedCollectionViews mostly anyway (which use IEditableCollectionView) – IEditableCollection was in the SL3 Beta (but removed for RTW), and seemed to be included *again* in the older RIA Services stuff – but it’s gone again :)

ServiceContract() (which is in the auto generated files on the client) is now in System.ServiceModel.dll (so add it as a reference).

MergeOption has been changed to LoadBehavior with new options – KeepCurrent, MergeIntoCurrent and RefreshCurrent (much nicer!)

That’s all I had to do to get the app compiling, but at runtime I had a few problems with the RIA services requests getting 404. I fixed this by adding a temp domain service to the app – which updated the Web.Config for me…

It Added the following httpModule:

<add name="DomainServiceModule" type="System.Web.Ria.Services.DomainServiceHttpModule, System.Web.Ria, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

It Added the following module:

<add name="DomainServiceModule" preCondition="managedHandler"
    type="System.Web.Ria.Services.DomainServiceHttpModule, System.Web.Ria, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

It also added some WCF stuff right down the bottom of the file:

<system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
 </system.serviceModel>

Hope this helps you upgrade your projects!


New SDDN Site Live

November 26, 2009

The new Silverlight Designer and Developer Network site is live!

The site has information on upcoming meetings, any follow up code links from the presenters as well as general Silverlight community information.

It will also contain video of the events where possible – once we figure out some hosting (damn you Silverlight Live Streaming biting the bullet!).

The best part about the new site is that it now has RSS!! A long time coming I know – but go add it to your readers :)

Check it out at http://www.sddn.org.au.

Cheers,

Jordan.


.NET RIA Services Validation and Authentication Talk (Code)

November 26, 2009

Last month I did a presentation at SDDN in Melbourne on RIA Services and it’s in built authentication and validation features.

The code is posted here:

<Sample Code>

.NET Ria Services Authentication and Validation Demo Code

</Sample Code>

The talk started off by running through the UserDTO object – under Services/DomainObjects. This object is exposed through the UserRegistrationService under /Services.

Next you’ll want to familiarise with the LoginManager in the Silverlight project (under Model/LoginManager.cs).

I then added some custom validation to the UserDTO object.

Next I created a UserValitator.shared.cs file under Services/DomainObjects and applied a metadata attribute to UserDTO to connect the two. .shared.cs files will be automatically made available to Silverlight by RIA Services.

The login stuff is built using the standard ASP.NET membership SQL provider, and the built in RIA Services abilities around this.

Read through LoginManager.cs see how the forms authentication object is created, and how the system uses the AuthenciationDomainContext, which is created on the sever in Services/DomainObjects. AuthenticationDomainService on the server contains the goods to validate a user and also provides a User class, which you can extend.

There is also a UserRegistration context in LoginManager which allows you to create a new user. See UserRegistrationService.cs on the server (under Services/DomainObjects) to see how this works (by using the MembershipHelper class).

See the Web.config to note how the system is configured to use the SQL connection, and in the membership section note that it is configured to use this same SQL connection.
You’ll need to configure your SQL database as well – to create the ASP.NET membership tables… run aspnet_regsql.exe (in C:\Windows\Microsoft.NET\Framework\v2.0.50727) from an elevated prompt to start the wizard.

This should be enough to get you started.

BTW, there is some great doco on this in the .NET RIA Services PDF file…

Enjoy!


Silverlight Code Camp 30/31 Jan 2010 – Melbourne

November 24, 2009

The first Silverlight Code Camp is being held in Melbourne on the weekend of Jan 30 and 31 2010 in Melbourne!

Split in to two distinct tracks, Beginner and Advanced there will be something for everyone. Each track will contain 10 sessions split over the two days, for a massive total of 20 unique sessions all based on Silverlight!

For more information see http://sddn.org.au/news/silverlight-code-camp-30-31-jan-2010-melbourne/

See you there!