I’ve decided to write a couple of posts about the design and execution of a Silverlight application I’m working on. If you’re not familiar with Silverlight, here it is in one sentence: Silverlight is a downloadable subset of the WPF containing just enough of the framework to execute specialized WPF applications in a browser window. It’s a competitor to Flash, without doubt, but since I never really went in for doing games and demos in Flash I don’t really think about the positioning. Silverlight lets you animate, and play sounds, and do all that cool stuff that I think of when I think of Flash. But Silverlight also has everything you need to do lightweight, browser-hosted, net-delivered applications. I don’t know if people do many apps in Flash, but that’s the part of Silverlight that gets me excited. If you think about all the datacenter cycles that get spent pushing ASP roundtrips to update the front-end, Silverlight starts to look pretty damn appealing.
The reasons for writing this up are twofold. First, I just spent several days pushing out some controls I needed and integrating them into some demo pages on this site. I didn’t feel like working on code tonight, so writing about working on code gave me an excuse not to. The two controls were a color picker, and a gradient editor. Check them out and let me know what you think. The second reason for writing is that I’m looking for a job, so I suddenly have time to work on some things that actually interest me and are fun, and worth writing about. If you knew what I had been working on for the last two years you’d know how pathetically needy I am in that department.
The application in question is a drawing program. It’s not an unobvious idea for a Silverlight app: WPF does a lot of the heavy-lifting for you, and has an object model naturally suited to moving and manipulating on-screen shapes. I’m sure Microsoft will have a SilverPoint somewhere down the road. My idea isn’t to compete in the drawing app space, though I have some ideas in that direction. At the moment I am working on a wholly different idea, about which I won’t say much now, that needs as part of its solution a drawing capability. Graphics applications are fun to do, and did I mention I am unemployed? It takes an hour to riff through Dice.com and email my contacts. What the hell else am I going to do with the rest of the day? So off we go.
My next post will talk about the overall design of the application, and some of the choices I’ve made, and the one after that will look at some handly classes that have come out of that work. Beyond that I am unable to predict, because I haven’t done the work yet. When I get back to work on the code tomorrow I hope to have the first three tools dropping and manipulating shapes, so there could be a demo in the near future as well.