UPDATE: visit rob relyea's post on more mime types for all xaml supported apps including xaml browser apps as well.

i've been seeing some discussion lately about hosting .  maybe i can take a moment here to help clarify some things and show some options.

there are hosters out there that are promoting as silverlight hosters.  while i think that is great, i think some of the messaging has confused others.  for example, if you go to a hoster that doesn't list silverlight support, are they incapable of hosting silverlight?  no.

in fact, a windows server isn't even required for straight-up silverlight hosting.  of course the caveat here being if your silverlight application is embedded within an asp.net application, then yes, of course, windows would be needed.  but lets assume simple lame examples here.  i took 10 minutes (longer to find a good rated one) and setup a free linux host account.  the particular host i selected is running apache 1.3.37 on some unix blend (read: no windows).  i created a silverlight 1.0 application and a silverlight 1.1 application.  i logged in to my free account, uploaded the files, and voila.

so there you have it, no windows and still silverlight.  why?  well the server just needs to deliver the assets to the browser (where the plugin is) -- as silverlight is a client technology.  apache is even just serving up the windows media file as a progressive download.

so in 10-15 minutes i created 3 lame applications, a totally free *nix/apache host and put up some silverlight.  proof enough?

now what about windows you ask?  some of you may have listen to the most excellent .NET Rocks! podcast.  some of you may have even heard the recent silverlight discussion with shawn wildermuth.  in that show carl mentioned to shawn that he had to install .net 3.0 on his windows server to get silverlight to work.  as i was listening to this (as i'm sure shawn was) i was confused.  it was a time i wish .NET Rocks! was live so i could call in talk some smack.  but carl's not a dumb guy and although they didn't debug the situation on his show, he did bring out a point.

you see, your typicall windows server installation these days with iis6 is pretty locked down.  so much to the point that unknown file types are served 404 style from the server (which i believe what was happening to carl).  it's been pointed out a few times in the forums as well.  what is going on you ask?  well, likely it is the .xaml file.  iis6 doesn't know this file type and there is no wildcard mime types set up to just allow freestyle.  if you find yourself in this situation, don't panic.  simply add the mime type (file: .xaml; type: application/xaml+xml -- or you can even use text/xml -- there are reasons you might want xaml+xml for XAML browser apps, etc.) and you are fine.  in fact if you are in a shared host environment and they don't have that setup, you can't get to it, whatever then guess what: just rename your xaml files to .xml -- or heck .txt.  now this may pose some annoyances in your dev toolset, but it is a workaround.  where do you change MIME types you ask?  when you start the iis manager, you can right click on the server name, choose properties and you'll see a mime types button -- go there.  this will change it globally.  you can also just add on a per site basis if desired, just look in the site properties.

so why did carl think .net 3 was required and it was working after he installed it?  well, .net 3 supports XAML browser apps (xbaps).  the installation of the framework adds the supported types for you if iis exists.

what about other hosting options.  well, there is also silverlight streaming services, a free service from microsoft enabling you (currently) 4GB of space and will essentially host your silverlight application for you and enable various ways of streaming it out via code or through simple iframe calls as well.  this requires no server on your part :-).

so let's replay our options here for silverlight hosting:

    • windows required: no
    • must be silverlight enabled: depends on how locked down the server was, possible mime type change is all that is needed
    • *nix/osx/pick-your-os: yes as long as a web server can respond to HTTP GET
    • silverlight streaming services

i hope this helps clear things up and at least not make them more murky waters for you.  if so, drop a comment and lets clear it up.  i think it is great hosters are recognizing silverlight and are noting it as a feature for their customers to look for, but just remember that any web server can serve up silverlight content.

well, you've seen the flurry of no doubt (at least if you are a regular subscriber to things silverlight).  i'm not here to say "go check it out" and add another post to the flurry, but instead to perhaps look at why is important.

you see, when i look at the site, i think it is cool, interesting, unique, <insert-favorite-word-here>.  but at the same time i'm a little opinionated about the ui design choice.  i should be clear that i'm no professional designer at all, and all of this is my opinion of course.  but i look at the home page of tafiti and i see a lot of things going on and elements that i'm not sure interact with each other.  there seems to be a theme of some type of desk/drawer.  maybe i'm just not a fan of woodgrain :-).  now because my mom is a librarian and i grew up singing family songs about the dewey decimal system (ah, good times), i can visually see that this drawer emulates a card catalog box (hence the single hole punch in the search box area), but are those elements matched with the other experiences?  i feel like i'm looking at a card catalog sitting in an ocean scene.

perhaps i'm being too picky (and i'm sure i am).  but one of the most unique features of tafiti is not being demonstrated in the user's face enough IMO and maybe should be a default view given this experimental project.  that's the tree view i'm speaking of.  what?!  you haven't seen it?  do a search and then in the top there is a link to "tree view" -- click it now.

and there in lies the importance to me of tafiti.  a different experience on search.  you see, the default search results are just that -- default.  they give me a header and some initial text sorted (apparently in relevant order).

SIDENOTE: when i do a search in tafiti that is powered by live search (i thought) the search results are different then when i go to live.com.  hmmm...

here's where i think rich internet applications (beyond rich media experiences) have a real opportunity to excel...different visualizations of data.  why is that important?  well, i'll take it from my perspective as not to assume i speak for the rest of the human race.  for me, tafiti is good and there are some demonstrations of the platform of silverlight, etc. -- but for me at the end, it still is search.  until you see the tree view.  here's a look:

you see the tree view "grows" a tree out of the results (i'm still trying to understand the sort order, but for this purposes this is irrelevant).  each branch becomes a result and sways in the wind in front of you.  one could argue (i'll be that one) that this might not be the best demonstration of this visualization (because you want to see relevant data in searches displayed more prominently), but the point is that it is a different twist on an existing problem domain.  i find myself going back and playing with the tree view for the silverlight aspects, but also to see if it does make some sense from a presentation sense for the results...either way it has kept me engaged on something that is old hat: search.   and to me, that's where rich internet applications can excel.

let's take another example using this same paradigm, family trees.  i'm huge into genealogy.  i've researched my family as far back as i can take it without digging out old documents in libraries that i don't have access too.  my tool of organization for this has historically been personal ancestry file (affectionately referred to as PAF).  for the most part, PAF is an excellent tool and gets the job done.  pedigree charts can be rendered just like any other pedigree chart in every other online/offline application.  then came mix07 and my friend scott stanfield and his team at vertigo.  what did they do?  they took a different look at an existing problem domain.  the result?  family.show.  you see, they didn't re-invent genealogy nor the pedigree concept, but the provide me a new visualization of the information...keeping me engaged and wanting more as a user.  take a look:

they are showing my family tree as real people, not flowchart lines.  oh, and they give me instant clues as to what i'm looking at: the star is me, the line connecting my wife, the fact that we have children, my sister and the fact she has children.  oh, and bill, my half brother -- they even provide a view on that challenge of representing multiple lineages that intersect.  (note: i don't have a half brother, but added that here to show a point.)  another cool feature vertigo added was the timeline snap.  curious what the family tree looked like years before?  move the timeline:

notice the grayed out areas -- they aren't gone, but filter out in the background showing what the pedigree looked like at any given time.  sweet.  family.show has provided a new experience on an existing problem domain.  and in doing so has made it a rich experience, an engaging one, and one that gets me excited again about the topic.

so what's my point?  who knows really :-) -- in a nutshell it is bravo vertigo and tafiti, for providing some unique differences on existing scenarios.  thanks for helping me understand that "rich internet application" doesn't have to always mean "new idea" all the time.

as i've found myself doing more editing these days for podcasts, screencasts, whatever, i've been using a mix of tools.  i've been really liking camtasia lately for most as it has provided me with what i've needed...after all i'm no professional.

one thing that it wasn't doing for me was allowing me to put overlays on top of video frames.  actually it does, but i was just an idiot looking for it in the wrong place.  camtasia calls these "custom callouts" and are hidden underneath the add callout features.  i wouldn't have thought to look there as all the callouts i've seen basically are used for arrows, balloon boxes, etc.  but nonetheless i found them and it does exactly what i wanted for my scenario.  perhaps it will add value for yours as well so i recorded a rough video (no editing, sorry for the audio and super loud keyboard clicks, i lost my headset, new one en route) demonstrating where this feature is.  it's useful for me, so i thought i'd share.  of course other video editing tools do this for you as well, but if you aren't a pro (or like me want the one-click, produce to many file formats) and have camtasia, this may be handy.

hope it helps.

i've suddenly (well okay, not suddenly, but now i've had the time) realized that twitter is pretty good at keeping in touch, especially at conferences, etc.  i wish that some partnership with facebook and twitter would occur.  i'm using both of them and wish there was only one place i could update my status that nobody cares about.

one thing is annoying me about twitter (and thankfully hasn't happened over at facebook yet ... at least with my circle of friends).  that is the one-sided conversation.  you know what i'm talking about.  the one where someone you are stalking following on twitter sends out a message in reply to a person you aren't following and you have no idea what it means.  here's an example from the last people who replied to me (names altered to protect the innocent -- note, i'm not innocent either...i'm just as guilty but am going to try to stop):

billygoat: @timheuer add more people heh

fuzzybunng: @timheuer: ever get to see them live?  the best show i ever saw was live

blippity: @timheuer business or pleasure?

as you can see, unless you were following the same people i was there is no context here, yet the messages were sent to anyone following you.  so what gives?  why do we feel the need to instant message the world of our followers with replies that aren't relevant or in context to them?  i plead with you, start using the "d" command...

now on to facebook... you see i never got into myspace.  i don't know why, perhaps it was the UI that just turned me away...i just never did.  but facebook i've been sorta diggin' -- probably because they have an API and the geek in me can't resist the code crack. 

but i did an expirement based on my research of myspace.  you see, in myspace i've learned (through my research with tweens in my family and neighborhood) that the 'currency' is friends.  even if people didn't know each other, there was something to be said about having 8 zillion friends on your profile.  so my curiosity got the best of me with facebook.  does this same currency exist in facebook?  would people accept me not ever have even crossed any relevant path in life and more than at least six degrees of separation even if there is any connection?  let the expirement begin.

i went about a quest trolling through friends of friends of friends.  i started to find a list of models (female) in los angeles.  perfect.  i picked about 5 of them (all with profile pictures that would make my wife question what i was doing on facebook -- note: she did.) and requested friend status.  within the day all accepted.  unbelievable.  i had never ever had any of this association with these people.  not even remotely.  i've since removed them all (sorry anastasia, it was fun while it lasted...was it good for you?) but am still astounded.

will social networks every be really valid and not just a breeding ground for trolls like myself?  how will we rid ourselves of this currency?  are friends the euros of social networks?

following up in part 2, we build upon part 1 of our demonstration of using user controls in our silverlight applications.  in part 1, we created our user control in xaml using expression blend and then wired it up in our silverlight 1.0 application using javascript as the code.

in part 2, we take the same xaml, but this time compile it into a managed assembly for consumption in a silverlight 1.1 application.  the result is that we now have a modular approach to reusable components in silverlight and the user control in managed code also affords us familiar implementation style similar to asp.net user control syntax.  rather than only relying on code, we can implement the control directly in the xaml using syntax like <mynamespace:mycontrol />.

the code for part 2 is found here: Screencast.SilverlightControls.zip.  as always, feedback and more suggestions for future screencasts are appreciated!