Archive for the_time('F Y')

New WPF & Silverlight Blog
29 June 2007 in Blogging & Windows | Comments (0)

While at Remix I met up with a fellow Kiwi, Nas, who works at Infinity here in Wellington. Certainly a cool person, she is trying to help move the WPF & Silverlight community in New Zealand forward, about time I say! I’ve been a little underwhelmed with what people have done so far with WPF especially given the power it provides. We use WPF a bit at Mindscape however I don’t often blog about it as I don’t consider myself a designer and would likely just put egg on my face by trying to show what I’ve built!

Nas has setup her first blog (http://naskhan.com/) and she’s going to be posting about what she’s doing and about the community in general. Worth keeping an eye on if you’re interesting in WPF/Silverlight.

Also check out TheWPFBlog by Lee, fantastic resource and really friendly guy that was speaking at ReMix (also Nas’s personal hero – never seen somebody act like they were meeting the Queen before).

Anyway, just thought I would share mention of her site to try and stimulate some interest in some of these cooler yet under-utilised bits of the Microsoft stack.

UPDATE: Looks like she picked a dodgy provider (bluehost) who terminated her account and wants her to fax copies of her credit cards etc to them to un-terminate it. She’s in the process of moving to a new provider so it will be a couple of days until she’s back. Talk about hard luck and shit service from bluehost.

– JD

Remix part III
26 June 2007 in Events & Microsoft & Mindscape | Comments (1)

Today is day two of Remix so lets recap what has happened so far. Yesterday was my first presentation which I felt went pretty well and I got some good questions at the end of the session. There seems to much more interest in developing Web Parts with .NET 2.0 so most of the questions revolved around that. Thanks to everyone that came to that.

The evening brought about WebJam at Galactic circus. This was a fun event more for meeting people and I got the opportunity to meet and talk with Nick Hodge. Nick’s business card reads “Professional Geek” which was quite cool, apparently a lot of work had to be done to get Microsoft to print a card with a title like that.

WebJam was fun and the time at Galactic Circus wasn’t too bad although it didn’t take too long for most people like myself to jet off to the Casino and to explore. Clock up another $10 lost at the Casino last night. Stayed out until about 12ish but sadly decided to be responsible given I had another presentation to deliver today.

The presentation went off without a hitch and I think that people all picked up something new from it. The WatiN content seemed to be the most popular, I’ll have to demonstrate it as a user group session sometime (I did for Christchurch but not in Wellington yet). The audience for this session was also very good, had quite a few questions and people come and ask me things at the end – always a good sign.

So now the event is winding down and I think it’s been great. I’ve had the opportunity to meet with quite a few Microsoft folk that I know only from their blogs which has been great. People overall seemed to enjoy the event and the sessions. The event has certainly be a success and I hope the feedback shows that. Hopefully they’ll let me back for Remix next year :)

Tonight is one more dinner with some of the speakers and then I’m free to explore until about 6pm tomorrow when I fly back to Wellington :)

– JD

Remix part II
25 June 2007 in Events & Microsoft & Mindscape | Comments (0)

This morning is the first official day of Remix and we’ve just completed the key note and first round of sessions. The content presented so far has been top notch and certainly things are looking bright for UX in the Microsoft space based on what I’ve seen.

The keynote was enjoyable, good spread of speakers showing what has been done with Silverlight and Brian Goldfarb seems more than comfortable with himself when speaking and did a good job of holding audience attention. I stayed for the following session by Lee Brimelow from Frog Design and while his content wasn’t overly technical (this is a dev & design conference mind you :) ) his presentation style was relaxed and his candour was much appreciated. He’s the guy behind sites such as www.thewpfblog.com which I’ve always enjoyed.

My first presentation isn’t until later today (around 3:15 Melbourne time) so I’m just waiting for that to roll up. I’ve been talking with a few people here and it seems many people are quite positive about how things are going. Everyone attending is getting a free copy of Expression Web that is valued at considerably more than the admission price so there is no surprise that I’ve spoken to a couple of people who are only attending a couple of sessions but otherwise are collecting the giveaway only. That’s a bit of a shame because it seems quite short sighted given the quality of the content and the speakers taking part. I wonder if perhaps rather than announcing the giveaway beforehand if it might be better to just mention it in the keynote? That would ensure people come from content and then get a nice surprise.

Overall there is approximately 300 people attending Remix and it seems to be a good size as the audiences aren’t too intimidated to speak up and ask questions. Always nice to interact and feel a good vibe rather than you’re just talking at people for an hour. The mix based on a straw poll at the keynote showed about an 80/20 mix for developers to designers. Microsoft and trying to get into that designer market and my feel is that those sort of numbers aren’t too bad for the first event of this type that they have put on.

Last night there was a speaker’s dinner at The Brasserie in the Crown Casino which was enjoyable – I far prefer chatting over a meal with people than feeling like you’re hijacking them after an event. The food was nice although I’ve decided I don’t like chicken heart all that much which was part of my entree :) The location was nice however I never did work out where the huge fireballs that kept exploding outside the window were coming from!

In terms of Casino losses, clock up another $4… not sure why I keep having that figure so low, clearly I’m not going to find myself in the high rollers room on this trip :)

– JD

Remix part I
24 June 2007 in Events & Microsoft & Mindscape | Comments (2)

Today we kicked off the rehearsals for Remix that’s happening here in Melbourne on Monday and Tuesday. The event so far is shaping up really well, I’ve had a chance to meet with some of the other speakers and the content so far looks to be right up there.

Yesterday I had to depart from Wellington at 6am as it was the only direct flight and arrived in Melbourne at about 8:30am local time. This is my first time visiting Melbourne but I’d heard more than a few stories about it from Lena as she grew up here. It was nice being able to see the places she has spoken about and see exactly why she loves the place. I met up with a friend who guided me around for most of the day which was great – I got to see far more places than I would have stumbled onto myself. I can really see why so many people rave about this city and it makes sense, given the strong culture here, that Microsoft selected the city to hold a conference about bringing design and code together to create beautiful systems (yeah, I bet you were wondering how I could pull my rave about Melbourne back to Remix ;) )

Managed to make my way to the Casino yesterday but only for about 30 minutes (so no attempt at poker) and walked out about 4 dollars worse off, not too bad. Tonight is a speaker’s dinner so perhaps I’ll be able to convince some folks to lose some money with me at the tables.

Today the rehearsals have gone well and all the technology seems to work. Touch wood it works again tomorrow and Tuesday though! I really can’t wait to get on with the conference and meet the attendees – I always enjoy that the most. Especially after they’ve seen me speak and want to ask some questions. So if you’re reading this and attending then mention this post and I’ll shout you a drink :) ) hopefully this offer will result in some great nights out drinking.

Anyway, I’d better get back to it,

– JD

Howto: Write a PowerShell Drive Provider
21 June 2007 in Code & Tools | Comments (2)

Earlier this year I was tooling around with PowerShell and generally having a fun time with it and, based on a comment from Andrew, decided to see how difficult it would be to write a PowerShell Drive Provider. A drive provider is a mechanism of allowing you to navigate any store with the same commands as navigating the file system. PowerShell ships with several providers already, a registry and certificate store. This means you are able to “cd” into your registry and write commands like “dir” or “ls” on a node and get a list of all the children for example.

The attached download includes working commented code and a detailed tutorial PDF on how to write a drive provider that will enable you to mount a zip file as a drive and then navigate through it. This is powerful for removing the need to extract and then navigate files quickly and easily. I’ve implemented it in a simplistic manner and there is plenty of room for additional features but I wanted to keep it simple for educational purposes. Note that you will need PowerShell installed to even compile as it relies on several assemblies that ship with PowerShell.

So if you find yourself lying awake at night wishing you could mount zip files as drives within PowerShell (don’t we all?) or just want to learn more about writing drive providers or managed plug-ins for PowerShell then check this out.

Download the PowerShell Zip Drive Provider and Tutorial

Hope this helps people have more of a poke at PowerShell,

– JD

BackgroundMotion.com is live!
19 June 2007 in Microsoft & Mindscape | Comments (2)

We flipped the big switch earlier this week to launch backgroundmotion.com! We spoke a lot about this website at the technical events hosted by Microsoft earlier in the year and how we developed it within three weeks (excluding some subsequent additions as things such as SilverLight popped up on the radar :) ).

So what is BackgroundMotion?

It’s a site where you can go and share you favourite desktop images, and videos for use with Windows DreamScene. However it is a lot more than just that – it’s also a living breathing open source site where you can download the code and check out how we did certain things. You can learn about technologies and design principals used in the site such as:

  • ASP.NET AJAX
  • LINQ for SQL (in a .NET 2.0 project no less!)
  • The MVP and Repository patterns
  • How to integrate with Flickr, SilverLight, Virtual Earth, Windows Live Space
  • How to write Vista Gadgets
  • How to write secured Vista Gadgets using WCF
  • How to use the Web Client Software Factory (Composite Web Block)
  • How to work with RSS
  • How to write a basic search engine using Lucene.NET
  • Heaps more!

It really is quite an action packed sample application (and real world application). I’d strongly urge you to pull it down off codeplex and have a play.

I’d also like to urge you all to go and put at least a favourite desktop image or video onto BackgroundMotion.com. It’s a great resource and is getting a good amount of traffic right off that bat (all you need to do is link to the media you want to download. Nigel has an example if you want to host a video).

Web 2.0?
Part of what we wanted to show with BackgroundMotion is not just how to do some cool stuff but to show how you can leverage Microsoft technologies to create really compelling Web 2.0 style applications quickly and easily. We purposefully looked to simply leverage other services on the internet and provide our own services to aid in building BackgroundMotion faster.

Open Source?
This project was built using Microsoft technologies and we did work with folks from Microsoft (Mainly Darryl and Nigel with occasional appearances from Sean McBrean :) ) however this project is designed for developers to have a poke at and to play with. I’d be really excited to see some people pull it apart and add new features and submit them back to us so that we can look at integrating your changes into the codeplex project.

If you do have some patches then please email me.

Not big on downloading source? That doesn’t matter! We have integrated a way of viewing the key bits of code for each page so you can view it on the site. Of course I’d always suggest you dig a bit deeper and download the source – you will learn a lot :)

– JD

Google Alerts for better customer support
16 June 2007 in Business & Google & Tools | Comments (2)

As your business develops it’s always interesting to see what people have to say about you and your products. Sometimes this is easy because people post it directly to you or link to your blog and you get a track back however that only gives you a partial view of the world. I wanted to be able to see what people were saying about Mindscape, LightSpeed, BackgroundMotion and more anywhere on the internet.

Enter Google Alerts

I was reading through Simple and Loveable (great blog btw, I’ve been a long time lurker) a couple of months ago and noticed that Nat mentioned that she found a comment by somebody through an alert so I decided I’d have a look into it some more myself (and only just got around to “passing it forward” by writing this post…).

Overall I’m impressed, you can simply sign in, enter a term that you want to be notified about and have Google email you. You can select if you want updates “as they happen”, daily, weekly etc so you’re not overrun with email notifications and you can also configure what you want monitored – do you care if the name crops up in google news? blog search? web index? Of course you want to probably monitor all of the channels to get the best picture.

You can quickly see the benefits here. As an investor in a company (say, Xero) I can monitor the entire internet for the term “xero” and pick up what the online vibe is. This is probably quite an effective measure of the companies marketing being that they’re trying to be a Web 2.0 style organisation.

The upside to this is I can see if somebody blogs about our products or about our company and quickly go and follow up if they were having a technical issue or problem. It’s about taking that service to the next level – you should always make it as easy as possible for people to seek help but by going to the customer when they have an issue is priceless.

Of course it’s also useful in reducing the amount of time you spend ego-surfing by just having Google let you know when you or somebody else says something about you ;)

Sign up for Google Alerts here

– JD

Basic querying with LightSpeed
12 June 2007 in .Net & Code & Mindscape & Tools | Comments (2)

In my previous post about LightSpeed I discussed setting up a very basic LightSpeed instance but didn’t go into any detail about working with the data once we had configured it. In this post we’ll have a look at some basic ways of performing CRUD actions on our database through LightSpeed.

Creating Objects

To create an object we simply need to create an instance of our model class and assign the properties that we want set. This isn’t complicated and not LightSpeed specific so this isn’t a difficult mechanism to understand.

ConfigurationItem item = new ConfigurationItem();
item.ReferenceName = referenceName;
item.ValueType = type;
item.DisplayName = displayName;
item.Description = description;
item.Value = value;
 
Repository.Add(item);
Repository.CompleteUnitOfWork();

The important part here is at the end where we add the item to the repository and then tell the repository to complete the associated unit of work.

Retrieving Objects

There are many ways to retrieve objects in LightSpeed but I will detail two basic queries here. Retrieving my primary key and retrieving by a single field.

// Find the configuration item that has a primary key of 2
ConfigurationItem configItem = Repository.Find<ConfigurationItem>(2);

Here is a query by the DisplayName property which is just a normal property, not a primary key.

// Create a query to get an entity where the property "DisplayName" is equal to "Example"
QueryExpression query = Entity.Attribute("DisplayName") == "Example";      
 
// Get a collection of items that match that query from the database
IList<ConfigurationItem> items = Repository.Find<ConfigurationItem>(query);

Queries certainly are a breeze when working with LightSpeed. In later posts we will look at more advanced queries that have multiple criteria.

Updating Objects

Updating an object with LightSpeed is an easy operation of just updating one or many properties on your entity and telling the repository to save those changes.

// Retrieve an object
ConfigurationItem configItem= Repository.Find<ConfigurationItem>(2);
 
// Update the display name
configItem.DisplayName = "My Updated Display Name"
 
// Save the changes to the database
Repository.CompleteUnitOfWork();

Deleting Objects

Last but not least we occasionally need to delete data from our database.

// Get a configuration item of primary key 2
ConfigurationItem configItem = Repository.Find<ConfigurationItem>(2);
 
// Mark the entity as deleted
Repository.Remove(configItem);
 
// Save the change, actually commiting the delete to the database
Repository.CompleteUnitOfWork();

Now we have walked through CRUD interactions through LightSpeed.

Hope that helps,

– JD