LiveBlog - Mix08 Keynote

March 5th, 2008

MixB01Sniiiiiiiiiiiiiiiiiiiiiiiffffff…smell that?  Nerds.  Thousands of them!  Wait…are developers even considered nerds anymore?  I know when I look in the mirror I don’t see…well…it doesn’t matter.

If the logo to the left didn’t give it away, I’m at Microsoft’s Mix Convention.  Which is actually pretty exciting, because I haven’t really been working with WPF lately nor following Silverlight closely.  This is a chance to get caught up on all the things I’ve missed.  And what better way to drag you, kicking and screaming, through the experience with me than with a live blog!?!?  (I got the idea while following the primaries via a NYTimes live blog.)

Why?  Because I need  something to do when my mind starts to wander.  It’s getting close to Keynote time so while I try to find a seat, here’s a picture to help you ponder the ramifications of a rock band stage set up in the foyer for anybody to play with.

9:20 AM

Found a seat.  There’s nothing like being squished shoulder to shoulder with two other guys while we all balance our laptops on our laps.  It reminds me of my plane ride in.  I wonder if Microsoft is going to show “Alvin and the Chipmunks” too. 

Wait…we all have laptops!?!?  I thought I’d be the only one getting precious Keynote news out to you “unattenders”!!  I’m so disillusioned. 

Uh oh…dude on my left (who we’ll now call “IBMVistaLaptopGuy”) just noticed the glowing apple on my laptop lid.  Things could get ugly.

9:35 AM

Ooops…missed the introduction and applause.  I was too busy opening and closing Visual Studio over and over so IBMVistaLaptopGuy would see I’m running BootCamp and Vista and stop giving me the stink eye.  I promise I’ll pay more attention from this point on.

9:45 AM

Oooooo…he keeps saying things like “Device Mesh”, “Social Mesh” and  “new service”.  Sounds like he’s setting us up for something big.

I’m a little distracted by the guy on my right (IronicUnfunnyTShirtGuy) who keeps leaning over to read what I’m typing while trying not to be obvious.  Yeah…I saw you dude.  Like what you see?

9:55 AM

He lost me.  He went into a tangent about “utility computing” and a bunch of

business related products. Started thinking about how awesome Halo 3 would be on those giant screens and completely zoned.

10:20 AM

Now Scott Guthrie’s on stage.  Brought out people to show us some demos.

Here’s a quick overview of some of the things they dragged on stage.

IE8 - Basically it sounds like the goal of IE8 was to try and create a better experience for developers more than anything.  Were people having issue with IE7?  (I have to admit…when he showed us a webpage that worked in FireFox and Safari working in IE8…wow.) 

You can download the beta later today if you want to play.  The built in debugging stuff is cool though…seems like a more advanced “Firebug”.  I also think the built in Activity and WebSlices features have potential.  Though I’m not a big fan of “indicators” popping up all over the page I’m viewing.

10:40 AM

Soooo…Silverlight 2.0.  They talked about a lot of stuff.  It was really cool too.  I’d tell

you about it but IronicUnfunnyTShirtGuy saw my Halo3 comment while reading over my shoulder.  Now he just wants to talk about how he powns noobs.  He lost it when they showed the Silverlight Halo Advertisement demo.  Some people are so sad.  I should challenge him to a Halo3 game.  Good thing I brought my Xbox with me to Vegas.

11:00 AM

Missed the last 20 minutes.  I went to the restroom and was distracted when I started a conversation with an Elvis impersonator.  He really likes his job but mostly does it to “pick up chicks”.   Love it.  Got back in time to

hear the phrase “…Silverlight controls, all released as open source.”  Damn…sounds awesome.  Stupid distracting Elvis and his glittering attractive clothes. 

11:10 AM

AOL built a nice Halo 3 silverlight version of their online mail client.  Very cool.  Makes me almost wish I still got AOL cd’s in the mail.

 

11:20 AM

Another very cool Silverlight 2.0 demo done by Hard Rock.  Instead of writing about it you can check it out right here.   It’s pretty impressive how far you can zoom in on the images.  Very responsive.

11:30 AM

Aston Marton came on with a Silverlight 2.0 demo that’s pretty typical of car

demos.  A 3d experience where you can paint it, change things like the rims of your wheels, brakes etc etc.  Only cool because of the level of detail you can see.  They also whipped out a UMPC and remotely painted a virtual car pink.  They ended by showing a wpf app inside an Aston Marton car.  It was a dashboard screen that…i’m not sure what it did.  But it had a nice glassy interface which pretty much means I’m going to bankrupt myself buying an Aston Martin.

11:40 AM

Holy Crap, right when I was about to fall asleep they

brought out Cirque Du Soleil!!!…who totally disappointed us by talking about their business and demoing a “casting” application.  Watching Scott Guthrie juggle was fun though.  I’m starting to get claustrophobic here between IronicUnfunnyTShirtGuy and IBMVistaLaptopGuy. 

11:50 AM

Silverlight for mobile.  Now that could be fun.  Demo shows a social app that allows friends to find out which bars other friends are hanging out at.  Has video, images.  etc etc.  Kind of a silly demo but the concept is very hip.  Dig the “shared information” the mobile silverlight demo is hinting at.

11:58 AM

During the WeatherBug demo (shown on a Nokia S60 device running silverlight to emphasis the partnership Microsoft and Nokia have that will put silverlight on future devices) IBMVistaLaptopGuy shot me one last dirty look as he and a lot of others start sneaking out early.

12:00 PM

After a quick summation.  We’re done. 

So there you go.  A deep and informative description of the Keynote here at Mix.

It was like you were totally here…right?  Well, I felt like you were here. 

Honestly, I don’t know how these live bloggers do it.  It’s pretty exhausting task.  Ok…enough typing. My hands and brain hurt.  Time for lunch.

UPDATE: If you want to play with any of the new technologies Tim has some good links for you.


Build Your Own Times Reader

January 20th, 2008

Like Times Reader? Well now you can build your own! Follow the link below and you can start building your own…Syndicated Client Application! They even give you the source so if you don’t want to build your own News Reader it’s still a great source for some good wpf examples.

Syndicated Client Experiences Starter Kit


Testing Yahoo! Shortcuts

December 16th, 2007

Just installed the Yahoo! Shortcuts plugin for Wordpress. Thought I’d give it a test post.

Let’s see…

I first read about Yahoo! Shortcuts while reading a co-workers del.icio.us feed in my Google Reader on my Cingular 3125 smartphone while sitting in my cheap Ikea chair in my apartment in Brooklyn, NY.

While the plugin downloaded I started watching/listening to a Google engEDU Tech Talk on YouTube. After downloading I uploaded the plugin to my site server while enjoying the cool refreshing taste of my 23.5 fluid oz can of Arizona Iced Tea (with lemon flavor) that I picked up from my local bodega for a smashing low price of 99 cents.

I decided to write this test post while letting Geoffrey Hinton’s tech talk continue running in a separate FireFox browser window on my Dell Latitude D410 laptop. Technically it’s not my laptop as The New York Times provided it for me so I probably shouldn’t use it for non-work related things like Facebook, YouTube, Google Reader, Live Messenger, Twitter, etc etc.

So what do you think? Has this post, which started as just text written by myself, Nick Thuesen, been enhanced by Yahoo! Shortcuts?

What! No shortcut magic for my name! The nerve!

Updated: This looks totally different in Google Reader, so make sure you click through to the site for the full experience. And lastly…is that map above showing Brooklyn, NY closer to Buffalo than Manhattan? My morning commute is going to be a killer.


Poor Neglected Blog

December 6th, 2007

So I’ve recently drifted away from wpf development. As a result, I’ve had nothing for my blog. This does give me a chance to clean house a bit though. I went through all my old blogs as well as this one and choose what I felt were the more interesting posts. (Not surprisingly, the number was small.) I created a link on the left hand side (WPF TOC) which points to a page where I’ve collected these posts. So essentially I’ve taken a page from sitcom tv and created a “best of” post. A new low, I know…but it’s ok, I hit new lows almost daily.


LayeredStackPanel

August 5th, 2007

I inadvertently created this custom panel a month ago. I wanted my objects to be grouped together in a way similar to the way Media Player groups items…or so I thought. My first implementation just had an x and y offset. It also lets you specify the number of items you actually want to show. (This is in the event you bind to a collection with a huge amount of items. Looks silly.)

Today I opened Media Player and saw it doesn’t actually offset the items but rotates them. So I threw in an item rotation property. Of course the panel had already met my original requirements, so adding the rotation aspect was pointless…unless I blogged about it. Maybe somebody else can use it. So here’s some screen shots.

 

As you can see, you can get some pretty interesting layouts. If you think you could make use of this you can download the source from the link at the bottom of this post. (It’s about 1.5 MB because of the images used in the example app.)

I should let you know that the contents of the panel resize to fit available space when the horizontal and vertical offset are used. This is what I needed from the panel. Unfortunately, things aren’t as nice when you apply a rotation value. This is because I used RenderTransform instead of LayoutTransform on the items.

Download Test Application Source Here


I Just Want To Be Friends With Your Window

July 4th, 2007

A proper application should have proper persistence of its windows state between sessions.  Ummm…yeah.  What I meant to say was…

Don’t you hate it when you close a window and the next time you start your application it’s not in the same place?  Or even worse: I have a laptop that sits in a dock connected to two twenty-two inch widescreen monitors.  Each monitor is 1680×900 and I like to splay all my applications across my 3360×900 pixels of screen.  This is great until I’m working in bed late at night and half my applications open far off screen.  (Good thing for alt+space+m or I’d have gone mad.)

The crazy thing is how easy it is to put together a smart window.  Normally I wouldn’t blog on such a simple topic but at last count I have twelve frequently used applications on my machine that drive me bonkers.  (Yes, Times Reader is one of them and yes I did receive your email and yes we’re going to fix it and no I don’t normally keep my head up there.)

After performing some major grueling research, I found that there are three typical ways applications on my computer remember their state. 

  • The Normal Lazy Way
  • The Kind of Smart Way
  • The Smart Way

There’s also a fourth way that I came up with while goofing around.

  • The Scaling Way

In case those weren’t descriptive enough I’ll go into further detail.

The Normal Lazy Way

This is when you don’t implement anything and just let the window run with it’s default behavior.

Below are screen shots of an app I put together.  The first image shows the state of the window on exit.  The second image shows the same application’s state right after it was executed.  The main difference being the first image is with my laptop docked to two enormous 1680×900 resolution monitors, while the second image is my laptop undocked and using its puny 1024×768 resolution screen.

The downside to using the default functionality is your window never remembers its dimensions, nor its placement on the screen.  On the plus side, your app never opens outside the dimensions of your screen…like it does with the next method.

The Kind of Smart Way

This is where the developer tries to be smart.  Upon exiting, the app somehow stores the windows dimensions and placement on the screen.  The next time the application starts, it uses these stored values to draw itself.  You can see an example of the load and save methods possibly used by clicking here.  If you haven’t already guessed, there’s one problem.

ARRRGH!  I know you’ve all experienced this, so don’t try to deny it.  ALT+SPACE+M…arrowkey arrowkey arrowkey arrowkey…

Because of this one limitation, I’d rather folks just left the default window behavior active instead.  Or better yet, implement it correctly!  Like so…

The Smart Way

Now the smart way actually takes a little bit of brain power.  Instead of just loading and saving settings, you actually have to perform some checks to make sure that when your window draws, it’s actually on the screen.  Before we get into details, I should introduce you to the Virtual Screen.

The Virtual Screen represents the combined dimensions of all connected monitors/screens.  For example, the dimension of my virtual screen when my laptop is docked is 3360×900, while my undocked laptop and its single screen have a virtual screen with a 1024×768 dimension.  (Same as my “Primary Screen”.) 

If you’re working in WPF you can find information on your virtual screen under the SystemParameters namespace.  (I believe WinForms folks can find the equivalent under System.Windows.Forms.SystemInformation.VirtualScreen.)  In my code I just use the values of SystemParameters.VirtualScreenWidth and SystemParameters.VirtualScreenHeight.  I use these two values to make sure my window placement isn’t outside of my visual screen.  I also make sure that the width and height values of the window are less than the dimensions of my viewable screen.  You can see the sample load and save methods here or just look at the pretty picture.

I know it looks like the window is outside the edge of the laptop screen but that’s because my code moved the window from the far left to the inside of the screen and placed it on the very edge.

I think this is probably the best method someone could implement.  Of course that didn’t stop me from fiddling and coming up with…

The Scaling Way

This is pretty much the same code as the “Kind Of Smart Way” except I don’t store the hard values of the window’s placement and dimensions.  Instead, I store the windows proportions relative to the virtual desktop.  So if you close your window and it’s taking up 25% of your vertical space and 75% of your horizontal space, the next time you open it (even on a smaller/larger screen) it will be proportionally smaller/larger to the change in screen size, but it will still be using the same percentage of screen space.  Did that make sense to you?  Yeah..me neither.   I did the same thing for placing the window.  If you really want to understand it, you can view my code here.

There’s one reason I don’t like this simple approach.  While it works great when you’re going from one resolution to another, it does look a little odd when switching from a dual monitor setup to a single monitor.  The following image illustrates the weirdness.

Since my width changes by 2336 pixels while my height only changes by 132 pixels, the ratios became a little skewed…and so did my window.

Finally…the Conclusion

So I’ve just broken my first rule of blogging: keep it short.  This probably means most of you aren’t even reading anymore.  But if that means my next favorite app has smart windows, it’ll be worth it.

UPDATE: 06/05/07

As Franz points out in the comment section below, there’s a flaw in my code examples.  Actually, there are two flaws.

First Flaw I discovered:  You don’t want to save the windows dimensions and position when it is maximized.  That makes as much since as saving it when it’s minimized.  You want the app to have the proper restore values for when they start the app and then “un-maximize” it.

Second Flaw Franz Discovered: If the window is maximized on a monitor that isn’t your primary monitor it will still load maximized on your primary monitor.  I believe this is because I load the window settings before it is drawn so it “technically” is on the primary screen when it is given the maximized value.  I see two ways of avoiding this. 

  1. You could not call the Load method until your window is loaded.  The downside being your window will load, jump across to the second monitor and then maximize.  Kind of trippy. 
  2. The other solution is to remove the line in the Load method that sets the WindowState and move it to the window’s Loaded event.  This has a better visual loading affect but really tears apart the elegance of having a single load method and a single save method. 

I choose the less elegant but better user experience for my code sample below.  If you have a better way let me know.

Here is a really big hyperlink that will allow you to view the code with the solutions to the two problems I just described.  You should not have any problems clicking here.


IPhone Mania

June 25th, 2007
So there’s already people lining up around the mac store frothing at the mouth for their iphone. I jumped on craig’s list and there are numerous people willing to stand in line for you…for about 250 bucks.

iPhone - I Will wait on line for you - $250

Will Wait in line for iPhone

$200 or Best Offer!! It’s sad but I know they’ll get a better offer.

There’s even people willing to take it farther.

I will be yours IPHONE bodyguard!!! - $1000 (East Village)

I’d only pay someone 1000 bucks if they were willing to take a bullet for my iphone. And they’d have to be willing to sing that Whitney Houston song from the Bodyguard movie whenever I asked.

And to wrap this up. Here’s a nice news video of apple lawyers bringing the smack down on a 3rd grader.

Feel the Corporate Pain Small Child!


Who Gets Todo What?

June 21st, 2007

So I just finished reading this article:

Microsoft to Alter Windows Vista

My immediate response was slight disgust. You know a ton of money is being spent on this issue. And reading all of the quotes of legal officers, attorney generals, janitors, etc each throwing in their comments…it’s a bit baffling. Then I read, “Richard Blumenthal, the Connecticut attorney general, said that as a result of pressure from the states, the Bush administration had taken a position closer to that of the states that found merit in Google’s complaint.” I have to admit, I really liked the idea of Cheney and Bush in a heated debate over Desktop Search.

In the end I asked, “Who cares”. And since I was alone I had to answer myself. “Microsoft and Google cares dummy.” And then it all made sense.

Usually I’m not one to use my blog to rant about real world situations, (just stupid things that make no sense), but immediately after reading this article I clicked the “open my email” button in Windows Live Messenger. Of course IE opened…despite FIREFOX BEING MY SYSTEM’S DEFAULT BROWSER! The caps were used to indicate how annoyed I am by this. Windows Live Messenger, Windows Live Mail (I’m testing out the app), and Foldershare are all apps that I frequently use that ignore my system default browser setting. So maybe there is something to this desktop search nonsense.


Back In My Day…

May 31st, 2007

So working for the New York Times has made nostalgic for things that were never even a part of my life.  Earlier today I caught myself thinking, ”Man, I wish I worked on an old manual typewriter.”  Of course I quickly realized any C# code written on a manual typewriter might have some problems compiling.  But a quick google, (I LOVE THE INTERNET!) turned up a few examples of people converting old typewriters into keyboards.  GENIUS!  Here’s a screenshot:

I can still see where playing a sweet game of Doom might be problematic but how fun would it be to take this sucker to work? 

P.S.  This blog post was written with the Beta version of Windows Live Writer.  I was amazed at how easy it was to set up with my Wordpress blog.


PC World’s Top 100 and Times Reader

May 21st, 2007

Who knew I could go so long without daily internet access. I’ve been away for two and a half weeks and I’ve come back to find a very pleasant surprise.

PC World apparently thinks Times Reader is a worthwhile application. It made number 24 on their “100 Best Products of 2007″. That will sure help me sleep at night.

For a full list click the following link:
http://www.pcworld.com/printable/article/id,131935/printable.html


« Previous Entries