<body>

Blankenthoughts

These are my thoughts. Nothing more.

How About Some Code? Simple Scaled Resizing In Silverlight 2 Beta 1

Saturday, April 05, 2008

I've been talking technology for a while here, but it's about time I start adding some value. I already mentioned the JUXtapose blog, so get over there for podcasts on User Experience and the technologies I use to make my UX and UI better.

Today, I want to talk about Silverlight 2 (Beta 1). One of the things that always frustrated me when creating a new application is that nobody ever wrote a good example of how to get my Silverlight application to scale with the random sizes of my user's browsers. As long as I stay vector based, this application should look the same at 640x480 and 1280x1024. And if it makes sense to have it on a mobile phone, then let's use the same application there too.

Today, my friends, I've got the simple steps you need to make your Silverlight 2 application scale effectively. I'll start this tutorial after you've created your default application (there's a great walkthrough on that here by Jesse Liberty).

I am using Visual Studio 2008, and Microsoft Silverlight Tools Beta 1 for Visual Studio 2008. My .entire solution can be downloaded here, so you can compare the changes I have made to a default project.


Step 1


If you followed the usual steps, your project should look something like mine.
Solution Explorer for this project.
We're only going to be working in two files for this: Page.xaml, and its code-behind file, Page.xaml.cs. First, let's take a look at the Page.xaml file, because more of our work will be code, not markup. Below is a shot of the entire XAML file (click to enlarge).
page.xaml contents
The only additions I have made to this file are the entire <canvas.rendertransform> section. I've also made the rootCanvas red, so that we can see it. One other thing that I have to credit Matt Casto for finding...you MUST define an initial size for your RootCanvas. Mine is 800x600, but you can use any size you'd like.


Step 2


Now we've got a little code to write, but it's honestly pretty straightforward. We've got four things to add:

  1. an event handler for when the browser is resized.

  2. a Page_Loaded method to intialize everything.

  3. a proxy method for resizing our Silverlight control initially.

  4. a Resize() method for doing the heavy lifting.


Here's a screenshot of my entire application namespace within the page.xaml.cs file (click to enlarge).
page.xaml.cs contents

First, we need to create a couple of variables. primarily, I need variables for the original height and width of my control before I get started. You'll see why in a moment, but it's basically to retain the "aspect ratio" of our control.

Second, in my "main" method, Page(), I route a new RoutedEventHandler to my Page_Loaded method when the XAML loads.

this.Loaded += new RoutedEventHandler(Page_Loaded);


Third, I have to create my Page_Loaded method. Here, I need to capture the original height and width, and I also add a new event handler to my application when the "host.content" = browser is resized. Finally, I call my Resize() method.


void Page_Loaded(object sender, RoutedEventArgs e)
{
_originalWidth = RootCanvas.Width;
_originalHeight = RootCanvas.Height;
Application.Current.Host.Content.Resized += new EventHandler(Content_Resized);
Resize();
}


Fourth, now that I have a new event handler pointing to Content_Resized(), I should probably write that method too. It just passes the call along to my Resize() method.


void Content_Resized(object sender, EventArgs e)
{
Resize();
}


Fifth and finally, I need to write my Resize() method. This is slightly more complicated than you might expect, but there's a reason. We need to capture the width and height of the new browser size. That's what currentWidth and currentHeight are for. uniformScaleAmount is what makes this complicated. We want to scale this thing uniformly, that is to say, if the application was originally 800x600, we want to keep a 4:3 ratio at all times, rather than stretching the app to fill the space allowed. Once we have determined the appropriate scale constant, we then also want to keep this app centered both vertically and horizontally in the browser as well. The last 4 lines of the code handle this, by altering the size of the overall control.


double currentWidth = Application.Current.Host.Content.ActualWidth;
double currentHeight = Application.Current.Host.Content.ActualHeight;

double uniformScaleAmount = Math.Min((currentWidth / _originalWidth), (currentHeight / _originalHeight));
RootCanvasScaleTransform.ScaleX = uniformScaleAmount;
RootCanvasScaleTransform.ScaleY = uniformScaleAmount;

double scaledWidth = Math.Min(_originalWidth * uniformScaleAmount, currentWidth);
double scaledHeight = Math.Min(_originalHeight * uniformScaleAmount, currentHeight);
RootCanvasTranslateTransform.X = (Math.Min(RootCanvas.ActualWidth, currentWidth) - scaledWidth) / 2d;
RootCanvasTranslateTransform.Y = (Math.Min(RootCanvas.ActualHeight, currentHeight) - scaledHeight) / 2d;
}


Please give this a try on your next application. You should be able to use this on any size Silverlight application, and as long as your creative assets can handle scaling to any size (read: vector), your application should look great at all sizes. Please leave me a comment if you give this a try...I want to know that I helped someone out!

Labels: , , , ,

posted by Jeff Blankenburg, 8:42 PM | link | 3 comments |

JUXtapose

Thursday, April 03, 2008

I know I've talked about this podcast series before...but it's growing. And it's got a new home. http://www.juxtaposeblog.com



JUXtapose stands for Jeff on User Experience, and the podcast series is about exactly that. My thoughts on UX, and the tips and tricks you can use in your applications to make them more effective for your users.

I'm starting a whole set of videos on creating Silverlight 2.0 applications. These will center around creating a NCAA-tournament style site, with user management, a slick interface, and plenty of data and web services to make everything happen. I hope you'll check it out.

You can subscribe to my RSS feed here: http://feeds.feedburner.com/juxtaposeblog/KnIR

Labels: , , ,

posted by Jeff Blankenburg, 11:53 AM | link | 0 comments |

Columbus Lightning Talks

Thursday, February 28, 2008

Tonight at the Columbus .NET Developers Group (CONDG), they are having 8 lightning talks as their presentation. Lightning talks are basically 10-15 minute presentations that go one after another, with 1 minute breaks for setup/teardown.

Here are the subjects that were presented:

Steve Horn - ADO.NET
Matt Casto - Silverlight (consuming ADO.NET)
Amanda Laucher/James Bender - F#
Steve Harman - Rhino Mocks
Brian Sherwin - Log4Net
Jon Kruger - LINQ to SQL
John Vottero - PowerShell 4 Devs

These presentations were also videotaped, and will be made available on the CONDG website.

Also, in the early housekeeping, there were two major announcements made:

1) Brian Prince has accepted the Architect Evangelist role with Microsoft. He'll be working alongside me in the Heartland.

2) Carey Payette was elected the new president of CONDG. Congratulations Carey.

Labels: , , , , , , , , , , ,

posted by Jeff Blankenburg, 6:32 PM | link | 1 comments |

JUXtapose - Episode 3: Popfly: Creating Your First Mashup

Monday, January 28, 2008

posted by Jeff Blankenburg, 3:49 PM | link | 0 comments |

CodeMash Speaking Update

Thursday, January 03, 2008

In an unfortunate turn of events, Jesse Liberty (Senior Program Manager, Silverlight Development Team) fractured his shoulder a few weeks ago. He and his doctor were optimistic that he would still be able to make the trip to CodeMash (like I'm sure all of you are). His surgeon is now extremely reluctant to have him in full-on travel mode just yet, so he has been forced to cancel his trip.

Due to these circumstances, there is a gaping hole in the Silverlight content at CodeMash. I have been fortunate enough to be asked by Jesse to replace him in his absence. I'm a bit honored, and a bit panicked (I wasn't on the slate to speak until now). So there you have it....I'll be the speaker in Jesse Liberty's stead. The topics will still be the same, there will be an Intro to Silverlight and an Advanced Silverlight session at the normally scheduled time.

So, if I haven't met you, and certainly if I have, here's when I will be speaking at CodeMash.

01/09/07 9:30 AM - Coding In Silverlight
01/10/07 2:10 PM - Advanced Silverlight

Head over to the CodeMash Session Scheduler (built in Silverlight) and get me on your agenda!

Labels: , , ,

posted by Jeff Blankenburg, 9:42 PM | link | 2 comments |

Party In Cleveland!

Tuesday, December 11, 2007

UPDATED: Here is the link to the presentation.

I'm heading up to Cleveland tonight for the .NET SIG meeting.  They are deviating from their standard meeting type (speaker, pizza) to more of a holiday party style.  I'll be bringing 3 XBoxes, projectors, and a decent selection of games to play, including Halo 3, Guitar Hero III, and Project Gotham Racing 4.  But that's not really what I'm most excited about for tonight.

I'll be giving a short presentation on some of the cool things that Microsoft is working on.  I've given this a few times in the past, but it always generates more discussion and "WOWs" from the crowd than any Silverlight or WCF presentation I'm going to give.  The reason is because people haven't seen this stuff before.  And it's amazing.

For those of you not coming to Cleveland for the meeting tonight, here's a rundown of what you're going to be missing:

 

image

Microsoft Popfly - A mashup engine.  Imagine having the power to create a map with all of your Facebook friends on it.  Oh yeah, and you didn't write a single line of code.

 

image

Tafiti - I call it a research engine.  It's a new search engine interface, based on Windows Live Search, which is built entirely in Silverlight.

 

image

Microsoft Surface - a completely new model for computing.  Take one coffee table, add 400% innovation, and you've got an amazing new way to interact with files, the internet, and more.

 

image

Photosynth - Let's say you wanted to take a virtual tour of Seattle.  You could certainly look for pictures on the web, of if you really wanted to see a bunch, maybe you search on Flickr for Seattle.  Photosyth allows you (eventually) to take a set of photos from the web, and visually "stitch" them together to create a 3-D model of the space.  If you check nothing else out from this post, make this the one.

 

image

Seadragon - the technology that Photosynth is based on, Seadragon is primarily focused on showing immense amounts of image data at one time.  Their philosophy is that the only thing [in this technology era] that should restrict your ability to view large [we're talking TB] sets of images should the be number of pixels on your screen.

Labels: , , , , ,

posted by Jeff Blankenburg, 8:17 AM | link | 5 comments |

Memphis Day of .NET!

Friday, November 09, 2007


I had the opportunity to spend this past weekend in Memphis, TN. I was attending/speaking at the Memphis Day of .NET.

It started innocently enough. I arrived in Memphis (MEM), and drove to my hotel room. There, I joined up with Josh Holmes, where we headed to the speaker's pre-game dinner. It was at a location chosen by Colin Neller (the primary organizer of the event, though he had a very efficient team). We got to eat Memphis-style BBQ at a place called Central BBQ. It was outstanding. Seasoned, homemade potato chips, and some BBQ sauce to lick from your fingers. Excellent choice.

The next morning, I arrived at the FedEx Institute of Technology, and was immediately blown away by the facility. Open spaces, curves, glass & metal. Gorgeous. Then I got to see the room that the Charles Petzold's keynote would be delivered in (as well as my talk on Silverlight.) It's called The Zone, and it absolutely is. I was so inspired by what a conference facility should be that I took a short video just to show it off.

The Zone
Click here to see my video tour of The Zone




Finally, after my talk, there was a GOURMET lunch provided. We're not talking about upscale sandwiches here, either. It was roast beef, potatoes, vegetables...in short, excellent.

My hat's off to the organizers of this event. Very well done. I wish you future success in next year's event as well. (Please let me know how I can assist, if you'd like.)

Included in this post are links to the slide decks and demos that I used during the presentation.

Thanks to everyone that attended!

Silverlight 301 Deck & Demos

Innovative Microsoft Stuff Slide Deck

Labels: , , ,

posted by Jeff Blankenburg, 9:38 AM | link | 0 comments |

Looking for Stars!

Several of you have had an opportunity to catch the first couple of episodes of my video series that I am calling JUXtapose. I'm working on the next few videos here, and was thinking that I'd like to make some of you famous.

If you've done something cool, something innovative, something that when you built it, you thought, "Man, that's awesome!," then I'd like to get you on camera talking about it.

I want to capture your passion on film. I want to help you tell the world about your ideas. If it has a user interface, let's talk about it. If you found a way to take an action in your application from 32 to 2 clicks, perhaps you've been hiding in the shadows too long.

Call me, email me, comment on this blog. Whatever. Just remember, if nobody raises their hand, I'm going to start calling on people.

JUXtapose Episode Guide
11/02/2007 - Episode 1: Simple Animation Using Expression Blend
11/05/2007 - Episode 2: ComponentOne Sapphire Interviews
Coming Soon - Episode 3: HTML Controls As Silverlight Tools
Coming Soon - Episode 4: Getting Web Service Data Into Your Silverlight App
Coming Soon - Episode 5: Expression Studio Overview (Design, Blend, Web)

Labels: , , , ,

posted by Jeff Blankenburg, 9:37 AM | link | 1 comments |

You're Probably Not Interested...


1) Keynotes by Steve Ballmer and Scott Guthrie.
2) 3-4 days in Las Vegas, at the Venetian Hotel and Casino.
3) An opportunity to immerse yourself in the technologies that make up "The Next Web," and participate in a 72-hour conversation about the future of web technologies.

OK, since I'm sure that list appeals to very few of you, I'll be brief.

I'm describing Microsoft's MIX 2008 conference. I had the good fortune to attend last year, as an attendee, and had an amazing time. Silverlight was announced, for one. I had an opportunity to meet some incredible speakers, technologists, and Microsoft influentials those days. I had an opportunity to give over $200 of my own, hard-earned money to complete strangers at the poker tables.

In short, it was the best conference I have been to. My expectations are riding pretty high that v2008 will not disappoint. With that, registration is now open.

So, mull it over with your Manager. Blackmail your Boss.* Persuade your Project Manager. Discuss it with your Director. I'd love to have a posse to hang with in Vegas this year.

Are you going? Let me know!


* I do not, in any way, actually endorse blackmailing anyone. Please take it for the alliteration it was meant to provide, and nothing more.

Labels: , , ,

posted by Jeff Blankenburg, 9:36 AM | link | 1 comments |

JUXtapose Episode 2: ComponentOne Sapphire Interviews

Monday, November 05, 2007



JUXtapose - Episode 2: ComponentOne Sapphire Interviews
JUXtapose - Episode 2: ComponentOne Sapphire Interviews


Oh, and the timing is perfect...they just released the Alpha version of Sapphire today. Just register on their site, and download the installer!

http://labs.componentone.com/Sapphire/

Labels: , , , , ,

posted by Jeff Blankenburg, 12:03 PM | link | 0 comments |

Introducing JUXtapose

Friday, November 02, 2007


So I'm sure I'll be posting these everywhere, but I want my blog to at least be the starting place.

JUXtapose is the name of my new webcast series, and it will be primarily focused on the technologies I am most passionate about. This includes user interface technologies like Silverlight and WPF, as well as more general stuff like Javascript and CSS. It will also feature interviews from notable (and soon to be notable) developers in the field that have an opinion to lend on user experience.

The name JUXtapose comes from the subtitle: Jeff on User Experience.

Please leave comments, I'd love your initial thoughts on this, as well as recommendations and volunteerism for future shows.

Labels: , , , ,

posted by Jeff Blankenburg, 1:12 PM | link | 4 comments |

Central Ohio .NET Developer's Group Recap

Friday, October 26, 2007

I had an opportunity to speak at the October CONDG meeting last night, and had a great crowd. It was a great talk on Silverlight and some of the other cool things that Microsoft is up to, including Popfly, Surface, and Photosynth.

We also cleaned out the "swag closet," giving away a total of 16 items. This included some rubberized, roll-up keyboards (for typing in the bathtub), some 32MB flash drives, some 128MB flash drives, a few books, and a copy of Vista (congrats to Aaron Ponzani!).

Included in this post are links to the slide decks and demos that I used during the presentation.

Thanks to everyone that attended!

Silverlight 301 Deck & Demos

Innovative Microsoft Stuff Slide Deck

Labels: , , , , ,

posted by Jeff Blankenburg, 10:05 AM | link | 1 comments |

Silverlight 301 (and some other cool stuff)

Monday, October 22, 2007

I'm going to be talking on Thursday at the CONDG (Central Ohio .NET Developer's Group) meeting. I've been asked to speak on a higher level about Silverlight and the things you can REALLY do with it.

I'm going to be covering web service interactions, user controls, and event handling in Silverlight. In addition, we're going to be looking at some of the other cool stuff that we at Microsoft have been up to.

This includes: Popfly, Photosynth, SeaDragon, and even the new Surface. (No, we won't have an actual Surface device...at least NOT YET.)

I hope to see everyone there!

Labels: , , ,

posted by Jeff Blankenburg, 12:30 PM | link | 0 comments |

Adobe Illustrator to XAML

Wednesday, October 03, 2007

Some of you, my dear readers, have asked how I got over that magical step in my Silverlight Animation Tutorial. The step where I had an Adobe Illustrator file, and then, POOF!, I had the XAML to start working with it.

No, I didn't recreate the logo in Expression Blend. Mike Swanson created an AI->XAML Exporter. You will need:

* Adobe Illustrator CS2
(I don't know how they did it, but every trial version of this software on the web has disappeared. There used to be a 30 day trial...now you can only find Illustrator CS3. This is why I save all of my installation files.)

* Mike Swanson's Export Plug-in

* The rest of his instructions.

One quick thing to remember, however, is that there are a couple of quirks with the XAML you get. The syntax is good. No issues there. But it is creating XAML for WPF, not Silverlight. WPF has a much larger set of tags to work with, and as such, most WPF XAML may not be directly compatible with Silverlight.

Not in a "these are totally different" way, more in a "the opening and closing tags for WPF are different than Silverlight." WPF uses <window> as its top level tag, and Silverlight uses the <canvas> tag. Window is meaningless to Silverlight, because you don't have a window for it. It's only part of a web page. You can see this illustrated below:

Default code generated for a WPF application:
<Window
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     x:Class="UntitledApplication1.Window1"
     x:Name="Window"
     Title="Window1"
     Width="640" Height="480">
     <Grid x:Name="LayoutRoot"/>
</Window>


Default code generated for a Silverlight application:
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="640" Height="480"
Background="White"
x:Name="Page"
>
</Canvas>


So, in order to use the XAML that is generated by this tool in Silverlight, you're going to have to chop the "middle" of the XAML out and paste it into your new Silverlight app. Everything else should be the same. Ta-da!

Labels: , , , ,

posted by Jeff Blankenburg, 8:19 AM | link | 0 comments |

TUTORIAL: Creating A Simple Silverlight Animation

Monday, October 01, 2007

Silverlight has to be one of the easiest things I have ever worked with.

Last year, I was asked to put together a logo and site design for a new type of technology conference: CodeMash. (As a sidenote, registration just opened for the 2008 Codemash. For the price, it is by far one of the best conferences you'll attend this year.)

I designed the logo in Adobe Illustrator CS2, knowing that it would be used for print materials, the website, t-shirts, etc. It only made sense to create it using vector graphics. Little did I know at the time, it would also be the way that I turned that logo into an animation for CodeMash v2.0.0.8.

This post is meant to be a tutorial on what it really takes to create a simple Silverlight animation.

First, you are going to need to install some software (I am including links the newest stuff, but you should be able to do this with v1 of expression, and no Silverlight):
* Silverlight 1.1. Alpha
* Microsoft Expression Blend 2 September Preview (This version is good through June 1, 2008)

Once you've got those installed, you're also going to need some base XAML (eXtensible Application Markup Language) to work with. Download the CodeMash logo here. All this markup is at this point is the design. Just save this .txt file down, and we'll use it momentarily.

OK, now on to the tutorial:

1) Open Expression Blend 2, and create a new project.

2) Choose Silverlight Application (.NET)

3) By default, Page.xaml will be open. Choose the XAML view.

4) Cut and paste the contents of the logo.xaml file you downloaded earlier IN BETWEEN the <canvas> and </canvas> tags that are currently provided to you.

5) Flip back to the Design view, and you should now see the CodeMash logo on your canvas.

6) You're probably also noticing that the white canvas we started with isn't really big enough for our design. We should probably make that bigger as well. It needs to be 650px x 777px. We've got two options with this one. This first is just to edit the XAML directly. Take a look at that initial <canvas> tag we started with. It's got width and height properties, so we can just change the values. The second option is much better for those of you that don't want to edit your XAML directly. Click on the element named "Page" (that's our primary canvas) in the "Objects and Timeline" panel. Then, click on "Properties" in the top right. This shows you, much like Visual Studio, the Properties that are available to the element you've selected. Finally, you'll see the width and height properties in the list. You can type the values there, or you can use the innovative "slider" interface to get to the value you desire.

7) Take a look at the Objects and Timeline panel. You should see a well organized list of all of the elements that make up the logo. Gears, glasses, etc. Each one of these elements is defined in the XAML we imported. We are primarily going to be working in this panel the rest of the way.

8) Press F7 on your keyboard. This will take us into the "Animation Workspace." It's not any different from the "Design Workspace" (F6) we were in, except that the panels have been moved.
9) Expand the elements in the Objects and Timeline panel, and look for:
Page > Orange_Gear > Orange_Gear_Teeth. Click on that element once, highlighting it.

10) Under the "Objects and Timeline" panel header, there is a drop-down list with "(No Storyboard open)" as the selected value. Click the ">" button just to the right of that list. This will bring up the storyboard search dialog. Click the "+" symbol to create a new storyboard. Name your timeline/storyboard (it's named Timeline1 by default), and click "OK." Since we're gonna be animating the gears, I named my timeline "GearSpin."

11) You will now see that a timeline has appeared next to our list of elements. Each number (1, 2, 3, etc.) represents one second of time. We will use these times to "schedule" our animations. For those of you unfamiliar with animation software, we are going to be creating keyframes that will do most of the animation work for us. Basically, we define the states we want our elements to be in at certain keyframes, and the software figures out how to get it from Point A to Point B without any other instruction. Please also notice that your canvas now has a red line around it, and in the top right corner, now says, "Timeline recording is on." This means that all of our future actions will be recorded and animated. When we want to make a change that we don't want to be part of the animation, we need to make sure to turn recording off.

12) Make sure that the element "Orange_Gear_Teeth" is still selected. Just above where ZERO seconds is on the timeline, there is an icon with a green "+" in it. Click it. By clicking this, we are creating a keyframe at 0:00 of our animation. This means that it will start as soon as the application does. We could move this to 1 second if we wanted a 1 second delay before our animation began, but for this demo, we want it to start at the beginning.

13) Next, we need to create a new place for these gears to be. So let's say we want to have them rotate 90 degrees in 1 second. Drag the yellow timeline indicator to one second. Click the "+" to set another Keyframe at 1 second. In the "Properties" tab in the top right of Expression Blend, find the "Transform" section, and click the "Rotate" tab inside there. You will see that the current Angle is set to 0 degrees. Let's change that to 90 degrees. You can either click and drag the box to the right, until it says 90, or you can just click on the box, which will allow you to type 90.

14) Whoa! You may have noticed that your gear teeth have derailed from their hub. That's because we didn't define the center of those objects appropriately. Press CTRL + z on your keyboard, to undo the change you just made. Also, because we don't want to animate moving the center of these objects, we need to turn off recording. You can do this by clicking on the red circle in the top right corner of the canvas.

15) Because you have highlighted the "Gear_Orange_Teeth" layer, you should see a blue box surrounding those elements, but probably a bit bigger than just those elements need. You should also see a white dot that indicates where the center of that entire box is. We need to move that. Click on it and drag it to the blue center of the orange gear. That's the point we want our teeth to rotate around, right? To be more exact, I recommend zooming in and placing your center point that way.

16) Once you're confident in your center point, turn recording back on, modify that angle again, changing it to 90 degrees. Now you can click the "PLAY" button (it's right above the timeline) to see your orange gear spin.

17) We've got one other thing to take care of to make this look great. We don't want to have the gears stop after 1 second. We want them to continue spinning forever. This is a simple change. We had selected Orange_Gear_Teeth from the timeline earlier, and now we need to expand it. Inside it, you will see a RenderTransform element. This was created when we changed that rotation angle. Expand it all the way, and you will see an "Angle" element. Right-clicking on this will give you the option to "Edit Repeat Count." We can set this to 1, 2, 100, etc. There's also an "infinity" option. Choose that, and our gears will spin forever.


18) Now, we need to animate the other two gears. We are going to follow the same steps for the Blue and Green Gears. So take steps 9-17, rinse, lather, repeat. The only difference for the other two gears is that they rotate in the other direction. So instead of 90 degrees, they will be set to -90 degrees.
19) You should now have a working Silverlight application, that has the gears spinning. Press F5 to run your project!

Labels: , , , ,

posted by Jeff Blankenburg, 2:32 PM | link | 4 comments |

--> This Guy <--

Tuesday, September 11, 2007

So, from time to time, I have been known to use the phrase "This Guy" while pointing at myself with my thumbs. Sure, it's tired. Sure, it's obnoxious. But it conveys my point effectively, and I use it only in the most appropriate instances:

"Who has two thumbs and loves him some Silverlight?"

--> THIS GUY <--

And that's the point of this post. I think this saying is worn out because people haven't had an effective way to communicate this electronically. Now you do. Go out into the world and use it, with discretion.

BTW, I cannot take credit for this syntax. The credit belongs to another brilliant blog.

Who loves reading Kiss Me Suzy?

--> This guy <--

Labels: ,

posted by Jeff Blankenburg, 6:57 PM | link | 2 comments |

Basking In The Moonlight

Wednesday, September 05, 2007

While I was at Mix 07 as a guest of Microsoft, I had an opportunity to witness some amazing products that were coming in the near future. The one I found the most impressive was a technology called Silverlight. The "canned" answer to what Silverlight is, is: Microsoft® Silverlight™ is a cross-browser, cross-platform plug-in for delivering the next generation of .NET based media experiences and rich interactive applications for the Web.

For the three of you that I haven't told about it yet, here's some cool examples to see what's capable:

Tafiti - Silverlight Search Engine based on Live Search

Halo 3 Trailers

Major League Baseball Video Streaming

Anyways, the point of this post is to announce that Silverlight 1.0 has been released! You can go to http://silverlight.net/GetStarted/ now to download the final release of the runtime and development tools.

In addition, Microsoft has also announced a partnership with Novell, which will be building a 100% compatible Silverlight runtime implementation called "Moonlight".

Moonlight will run on all Linux distributions, and support FireFox, Konqueror, and Opera browsers. Moonlight will support both the JavaScript programming model available in Silverlight 1.0, as well as the full .NET programming model we will enable in Silverlight 1.1.

UPDATE: Here's plenty more information on Moonlight.

This is an exciting day for user experience. If you want help getting started on your first project, or just want to tell me about the cool way you're using Silverlight, drop me a line!

For all the nitty gritty details about this release, I don't think I can say it as well as Scott Guthrie, so check out his blog post on this as well.

Labels: , , ,

posted by Jeff Blankenburg, 8:56 AM | link | 0 comments |

Silverlight Presentation

Monday, August 27, 2007

Just a reminder to all of you in the Southfield/Ann Arbor/Detroit area...I will be presenting the Silverlight DevCares event on Wednesday, August 29.

http://www.devcares.com to sign up.

See ya there.

Labels: , ,

posted by Jeff Blankenburg, 9:22 AM | link | 0 comments |

Free Web Hosting For All

Saturday, August 25, 2007

I just got an inside tip that Verio is offering free MS web hosting through 2010. So, if you've been meaning to get around to building the next killer app, here's your chance to do it for free.

They even support Silverlight, so if you've been meaning to try it out, GET TO IT!
I believe they are Windows Server 2003, with IIS 6. You don't even need a credit card.

All you have to do is call Verio’s 800-932-7483 to receive your free website. This offer is unfortunately not available online. Please pass it along.

Labels: , ,

posted by Jeff Blankenburg, 8:56 AM | link | 2 comments |

Mix '08...won't it be great?

Friday, June 01, 2007

They've already announced the dates for the Mix '08 conference. I'm really hoping to get an opportunity to go again. I'm still revelling in the knowledge and experience of the trip.

March 5-7, 2008. Venetial Hotel. Be there or be less than desirable.

Labels: , , ,

posted by Jeff Blankenburg, 4:01 PM | link | 0 comments |

Day 1: Holy Cow.

Monday, April 30, 2007

So it's been hyped for the past few weeks that we were going to see many new things announced by Microsoft this morning. The hype didn't keep up with reality.

It was WAY better than sold.

THe biggest highlight of this conference is the combination of Silverlight with the .NET framework.

We can actually write C# code to function like you would normally expect Javascript to do.

We can create vector based animations to run in a cross-browser, cross platform environment, with all of the instructions stored in XAML.

Designers can completely control the look and actions of these elements in a graphical interface, but that design is then translated down to XAML, which can be edited, updated, etc as a file on the server. This allows the designer to control the looks, and the developer to control the functionality.

Two demos during the keynote were flooring, however.

First, the CEO from a company named Metaliq demoed a new AJAX/Silverlight/.NET application they call Top Banana. It is basically a content editing application, all within a browser. The URL is http://silverlight.metaliq.com/topbanana
It appears they have taken their demo down, but as soon as I can get access to it again. I will post it. It was truly unbelieveable.

The other struck close to home. I'm a huge baseball fan. Mondo big. And having grown up in Cleveland, I've been forced to suffer with the Indians my entire life. THe C-something-something from MLB.oom was here demoing their new MLB.TV application. It acted as I expected. Showed every possible statistic available in an interface that also shows the live games streamed over the internet. All great, all what I would expect. It include a feature that allowed you to add your favorite players (think fantasy baseball) and it would alert you every time your player did something in any of the games. It would also serve up the specific video clip of that notable performance. (On a sidenote, thsi guy said that they generate 10 DVDs worth of data with every pitch of every game. That seems like a little bit. :))

Anyways, even the fantasy player list wasn't the coolest part of this demo. Oh no. He then pulled out his cell phone, and showed us a Silverlight application running there. It showed stats, game scores, even live score updates, and runners on base. Think about the graphics that show up during a TV broadcast. Minus the actual game video. Well, with Silverlight, it appears they are going to be successful in streaming actually live video to your phone, and remember that fantasy player list, statistics, and video feeds? That was all demonstrated as well.

Man, this has been amazing thus far. Thanks again to Quick Solutions for sending me here.

Labels: , , , ,

posted by Jeff Blankenburg, 6:34 PM | link | 1 comments |