The Webcast schedule has been updated slightly. You can find it here. You can always find it in the sidebar as well:
The key change is this
September 10 Silverlight Animation and Expression Blend
The Webcast schedule has been updated slightly. You can find it here. You can always find it in the sidebar as well:
September 10 Silverlight Animation and Expression Blend
[Temporary Notice – The video DataBinding and Data Templates in Xaml has been pulled due to a production problem that is expected to be resolved no later than Tuesday.]
I’m pleased to announce that we’ve posted three new videos on DataBinding and on DataTemplates (creating templates that control the display of a collection of data in a list control such as a list box)
I’ve received a lot of feedback from users who feel that we’re mired in introductory material; especially about data. I will at a later date write a longer blog post on this, but the short response is “I hear you and your wish is my….”
While balance is important (lots of folks are still just arriving) there is no reason we can’t dive deep as well. The Webcast schedule calls for a discussion of Creating Skinnable Custom Controls and From DB to Display in the Data Grid with Silverlight, but those are pretty far out on the calendar (Aug27 and Oct 15 respectively). I can certainly get tutorials and videos on those subjects out before then.
In the interim, let me know what other advanced topics you’d like to see covered and either Tim or I will try to make sure we add them to our list and give them high priority.
Thanks!
In the past few months, I’ve dramatically increased the number of channels from and to the community and since they are likely to cause some confusion, this post will briefly review and explain my intentions.
First, the list:
A large part of my job is to produce what we call “content” (though I bet I’m not supposed to say that out loud) which includes our Tutorials, Videos, Presentations and Webcasts. You can always find links tot he latest of these on the sidebar of my blog
In addition, Tim and I are under contract with O’Reilly to write the forthcoming Programming Silverlight 2 which has been embraced by Microsoft and is also (isn’t this cool?) part of our job here.
I try to keep my Blog reasonably focused on Silverlight, but I do include the occasional article on anything from technology rants to just rants. That said, if the signal to noise ratio falls too low, let me know!
In addition to the big 5 (Tutorials, Book, Videos, Presentations and Webcasts) I’ve created as many innovative connections as I can think of or steal from others. These include a few that require explanation…
O’Reilly Blog and author site is often neglected in favor of this one. However, it does contains links to book information, old articles and can be useful (at least to me) from time to time.
The Amazon Author Blog is mostly a “fan” site, with reproductions of blog entries from elsewhere, the occasional original entry and such compelling data as my wish list and my most recent purchases (a digital download of Brian Eno’s Fat Lady Of Limbourg)
Finally, I recently renamed my political blog to My Other Blog – it has had numerous names, but its focus has moved away from pure *** Politics and it is now where I write anything I feel the need to write that doesn’t belong here (perhaps this blog entry should have been put there??)
I’m quite ambivalent about posting my phone number and now I’ve added Instant Messaging to my blog, which is absurd.
With 1/2 a million readers of my books, and 200+ incoming emails a day, and working an average 70 hour week, it is silly to think that I can answer calls or take IM. But there is an endless internal psychic conflict in wanting (needing?) that personal touch; meeting the needs of the individual developer. Of course, the reality is that the only choice is to redirect callers to the excellent Silverlight forums or to my book support site, but this keeps alive my hope that I will, from time to time, be able to provide that personal answer that gets someone back on track.
It may not be completely accurate, but I would put my membership in Plaxo, LinkedIn, Facebook, Flikr, even DotNetSlackers and CommunityCredit under this heading. All of this is an effort to be “out there” as a presence, reaching out to the community. At the same time, participating in Technorati, Deli.icio.us and DiggIt is a way to let folks know about the Blog, and Wikipedia is not something I can control but it is a blast to be listed.
All in all, my goal, over time, is to provide access, community and, most important, useful information, with as little noise as possible.
Every day I get about 10-30 questions that I answer with a stock response (sorry) that says something like
Hello and thank you for writing.
I would encourage you to post your question in the Silverlight Forums. Be sure to include:
* which version of Silverlight you are running,
* which version of Visual Studio and/or Blend you are using and
* whatever else you can add to help reproduce the problem.Meanwhile I’ll try to look into this as well.
Thank you,
I hate this answer; but it is the right thing; I can’t possibly do my job and also dive deep into all the questions I get; the forums really are the right place and 1,000 brains are better than one. Oh, and I do follow and I do look into many (though not all) of them.
That said, some questions come up a lot, and today I received a note with 4 that I must get at least five times a week, so here are my quick responses (I’ve paraphrased some of the questions)
I'd like to make my website a bit more "rich" and a better UI experience for the users and I'm considering Silverlight. It currently uses…. What would be your advice?
Since you are new to Silverlight you probably want to work your way through a suggested learning path and then ask a lot of questions in the forums. I wish I could spend a day (or a week) working on the design with you
For this website, with respect to your multiple page example…Let's say I have 30 existing .aspx pages. Would I make page1.xaml, page2.xaml, page3.xaml, etc. that would correspond to each respective page that I currently have?
Not necessarily (and I hope you’d use better names <grin>). In fact, there is no reason you wouldn’t have a mixed model, using ASP.NET where it is working for you and Silverlight for enhanced (richer, faster, etc.) experiences.
Are there any resources that tell you how to convert a complex ASP.NET web site into a complex Silverlight site?
Not that I know of, but more information is coming every day. Be sure to keep an eye on silverlight.net and subscribe to Silverlight Cream, and Silverlight News.
4. This may sound odd, but how do I know that wanting to do this in Silverlight is not completely strange when it works and looks satisfactory now? Still make the change and why I guess is what I'm asking here.
If it is satisfactory now, go do something else <smile>. But maybe it isn’t completely satisfactory; maybe a faster richer experience, in at least some parts of the application would be valuable. Take a look at some of the showcase applications to get an idea of what is possible.
Hope that helps
I see my job as, in part, community building, and as part of that, lots of experimentation. Today, I’m pleased to announce the launch of a new (experimental) HyperMicroBlog named SLGeek (join now)
I will be blogging everything – all blogging all the time, at least while I’m working, often when I’m just thinking about work — though topics may range beyond work, and you are fairly warned that you may learn ore about me than you care to know.
(Intensive blogging begins later this morning and won’t stop for at least one week)
The goal is that I’ll be recording not only what I’m working on but what I’m thinking about what I’m working on; as well as who I’m talking with, what we’re talking about (when it isn’t confidential), and anything else I can possibly tell you about what is going on.
Expect the blogging to come in bursts, but there will be lots of it.
To keep this from being entirely absurd, in this blizzard of words you should (if this goes as I hope) find tidbits about what I’m working on that won’t be posted for a while, what my team is thinking about that isn’t a big deal secret, what I find interesting that you might (or might not) and most important, have a chance to feed back to me and even more important discuss with others where I’m nuts, wrong or just off the rails. To facilitate that, I’m setting up two places for community feedback:
NB: This is an experiment. We’ll see how it goes.
I used to work for a man named Larry Weiss at Citibank, who did a number of magical things (including creating the best ATMs in the world in the 1980s that still surpass anything I’ve seen other banks do yet!).
One concept that he talked about a lot (I have no idea if it was original) was the 5 levels of Technophilia, which he described as a pyramid but probably is better described as a bell curve and in fact a quick Live-Search turns up many such images.
Doesn’t matter; it was his labels, and more important his one sentence examples (which I’ve paraphrased and updated) that I cared about:
Technology for its own sake. Gotta’ have it. They’re the ones on line right now buying the new iPhone
“Show me any any good reason, and I’ll buy it.” These folks already have FIOS and HDTV and don’t understand why anyone thinks that is odd.
“If there is a good reason, I’ll buy it, but show me the reason. After all, there is some cost to learning, some hassle to maintaining, but if you overcome my hesitation then I’m happy to buy.” These folks are buying DVRs now and considering a GPS for their car.
“I don’t like it, I don’t want it, but if you can really convince me that I have to have it, I’ll complain a lot, but I’ll buy it.” This is my mom. Has a VCR, won’t take a DVD player as a present.
Forget it, they don’t even have answering machines.
I’ve found these quintiles to be totally arbitrary and inconsistent, and yet a guiding principle for the past 20+ years. The fact is, I’m a Quintile I, my wife is a Quintile III and most folks fit pretty easily into one of these descriptions.
Here’s how I know I’m a Quintile I. I leave my GPS on all the time, even when I know just where I’m going. Why? Because I am totally gassed by what it is. The fact that this tiny little box is sitting in my car is just too fantastic. Think for a moment about how it works (which I only know to a first approximation:
Satellites in the Global Navigation Satellite System continually transmits messages to the tiny box in my car.
Each of these messages encodes the time the message was sent, as well as the satellite’s precise orbit and the almanac of the orbits of all the other satellites. Given signals from four satellites, that tiny box not only computes its position in 3 dimensional space, but also the exact time so no precise clock is needed.
Consider that the calculations must take into account not only that the signal travels at the speed of light through space, but is slowed by the atmosphere, and, more, the on-board clock speed with relation to an earth-bound clock is altered both by the special and the general theory of relativity and this must be taken into account by the satellite engineers if the GPS is to be sufficiently accurate.
On top of all of that, once you have your position, you have only just begun, you next must include a complete mapping program, algorithms to compute getting from here to there, UI for describing where you want to go, and when you want a different route or to find a gas station on the way. And then it talks, and it does so usefully, giving good directions with plenty of notice, and reinforcing it by showing the alternative roads and clearly marking my path with an arrow.
Best of all it does not complain when I miss a turn but quietly reroutes new directions. And this box costs about $150 and weighs less than a book of maps.
My wife (Type III) is happy to use it. She agreed we need one for each car. But here’s the thing: when she doesn’t need directions she turns it off. It is a useful piece of equipment, a utilitarian device, but it has no aesthetic for her.
To me, it is a nearly inspiring work of technology. It is intrinsically fascinating. It is, I would say, pretty close to awesome.
Watch out if you identified with my ramblings above!
In the wonderful book Why Software Sucks, David Platt relates that he often asks (at his presentations), how many of the geeks in the audience drive a stick shift (or would if their spouse would let them). Some huge percentage does. But the rub is that only a tiny percentage of the overall population does.
His point, and it is a good one, is that we (that is geeks) tend to be type I or II, but we’re building software mostly for type III. That is well worth remembering, especially when confronting software like DeepZoom – software which can suck you into its own power causing you to lose site of the correct order of operations, which is this:
1. Figure out what is needed,
2. then figure out which technology can best be applied to the problem.
When we reverse that order, we die. And we should.
So… So… As Silverlight matures, and as we come to understand it better, we will go through phases in the tutorials and videos, etc.
Meanwhile the world is changing, other technologies arrive, promise, fail, surprises happen, opportunities come and go… the thing I find exciting about Silverlight is that it is not nailed to the deck; it swivels, it rolls and thus as things change, Silverlight should be able to morph into the tool that is needed. We’ll see, but I suspect we will look back at this not as the early period but as the very very beginning.
Should be fun.
I’m very pleased to announce a three part video series (currently listed in reverse order) as companions to my new tutorial).
The three videos are
The new Visual State Manager and Parts model are very exciting and I’ll be following this up with a good bit more, including two up-coming Webcasts:
I’m pleased to say that the accident of not recording my first (new series) Webcast led to the opportunity to reformulate it as a video, which is now available for viewing or download.
This is a brief, somewhat tongue in cheek overview of why I gave up a 15 year commitment to working in a single Integrated Development Environment and came to discover I do so Like Expression Blend.
I presented a live Webcast today on Databinding and Data Templates, and a few resources were mentioned. As promised, here are links to all of them
I have a tutorial specifically on data binding that is about to be completed, which should to be released in a few weeks, along with “How Do I” videos on the subject; I’ll post an update at that time.
Thanks for joining me, and be sure to check the schedule for upcoming Webcasts.
photocredit: istockphoto, all rights reserved
and thanking you all for your support and shared excitement as Silverlight evolves.
istockPhoto; rights reserved
I’m very pleased to announce that my latest tutorial, on Styles, Templates and the Visual State Manager is now available, in HTML, or as a PDF, and the complete source code is available as well.
The Visual State Manager is a very exciting part of the new Parts model that decouples the logic of controls from their UI, leading to the startling realization that every control is lookless and you are free to change the look of every control in the toolbox.
This tutorial examines the three fundamental ways you might modify the appearance of a control:
The Parts and State model is examined and I spend a good bit of time examining the ways in which you can significantly modify the appearance and state transition behavior of a control without changing its event handling.
This tutorial, however, is far from the last word (its not even the first word!). I posted an intro to this tutorial just a few days ago, and I’ll be posting a few videos very soon.
On July 23 I’ll be doing a Webcast: Visual State Manager: Transitions and Animation, and then on August 27 we’ll go deeper with a Webcast on Creating Skinnable Custom Controls (and you can, of course, expect videos and blog entries on these topics between now and then).
All in all, templates are an exciting and (to be honest, fun) aspect of Silverlight programming, and I’m not sure we’ve done more than scratch the surface of the creative possibilities.
![]()
I’m about to release a tutorial and a few videos on Styles and Templates. To set the stage, I wanted to discuss one aspect of templating in Silverlight that is in some ways revolutionary.
The designers of the Silverlight 2 control libraries established from the outset that there would be an absolute decoupling of the control logic (as implemented by event handlers) from the User Interface. This allows the UI to be dictated entirely by Tempolates, (and the Visual State Machine) and in turn that allows templates to be written entirely in Xaml and to consist of a combination of graphic primitives and story boards (transitions).
The appearance of all the controls in the toolbox is just the appearance provided by the “out of the box” template assigned to it by the control creator. It has no more intrinsic validity than any other skin you might put on the control.
That means you are absolutely and 100% free to use the button as is, or to make it look like a dog, and have it bark when pressed. Or, consider the images shown here. Both sets show buttons being before and after being clicked. Other than aesthetics and convention, there is nothing that makes one set more correct than the other.
Both “looks” are equally valid, and both buttons send exactly the same click event. Since the designer of the out of the box button was kind enough to embed all the button’s state information in the button’s meta-data (e.g., “I have the states Normal, MouseOver, MouseDown, Disabled, Focus and NotFocused), and since Expression Blend reads that meta data and makes editing the appearance and behavior astonishingly easy, it is not only valid to change it to a round, spinning, dipping shape, it is (to be honest) fun.
As you will see in the tutorial to be release within the next day or so, I distinguish among three ways to modify the look of a control:
1. “In line” attributes
2. Style objects
3. Templates
Very briefly, the first of these we all do all the time. This is as simple as adding such UI controlling attributes as HorizontalAlignment="Left" to the Xaml. It is fielder’s choice as to whether you set these attributes directly in Xaml or let Blend set them for you as you create your UI
The second is a more formal approach in which you create a Style object that can be applied to multiple controls to provide a uniform look to controls used in the same way. The cannonical example is TextBlocks used as labels.
You might decide that all labels in your application will be
Rather than having to repeat this for every TextBlock you can create a style (in the .xaml page or for the entire application in App.xaml) and then apply the style to each TextBlock used as a label like this:
<TextBlock x:Name="ProgMtl" Text="Pregressive Metal"
Grid.Row="2" Grid.Column="0" Style="{StaticResource LabelStyle}" />
<TextBlock x:Name="JazzLbl" Text="Jazz"
Grid.Row="2" Grid.Column="0" Style="{StaticResource LabelStyle}" />
In previous documents I showed how to set Styles by hand, but Blend makes this so easy and so much less error prone I’ve stopped hand-coding Styles.
Templates is the big enchelada. With the advent of the Visual state Machine, and the use of storyboards for transitions between states (giving a much more natural look to your application) templates simultaneously free you to create the most dramatic and impressive changes to your application while virtually (but not literally) forcing you to use a tool like Blend to do so (you can hand-code anything if you are patient enough).
Much more on the details of Templates to come.

More Templates and Custom Controls