In vista - when you want to hook up a projector, there are several ways to get it going. If you're lucky, you might just plug it into your DVI or VGA output, and Vista will as what you want to do with the display output, and you can choose to share the screen, or extend your display onto the projector.
I'm not sure why, but for me this works about 80% of the time. Other times, nothing happens, and I have to find the mobility center. To do this - I would open the Control Panel, and use the search option at the top right, typing in the word projector - will find the Windows Mobility Center
Easy - but not the fastest way possible.
I just found today there is a keyboard shortcut to open Window Mobility Center
[WINDOW]+X - Open Mobility Center

I'm sure you've all seen by now that flickr supports video. I've been wanting this for a long time, and when my friend Tim Heuer sent me a Text message with the news, I was very excited.
After playing with this for a while, one of the things that I like, is that the video can be sized. Maybe other video services have this, but I haven't seen it. In fairness, I haven't used YouTube, or any other video hosting service at length.
For recording screens (which I'm trying to do more of), I wanted to be able to do a short little Camtasia screen cast(is it "screencast" or "screen cast") test, and see what it's outcome is. This video was recorded at the size of my browser window, which happened to be 912X820 at the time. I was hoping that the original dimensions of the video would be kept, but when asking for the player code, the "actual" size was registered at 499 wide. Maybe this means that the video is re-encoded on upload, so that it's max height and potentially max width are 500? Just a guess.
On the first go-round, I just encoded the video, and it was too small to read when playing back. Then I used the Camtasia tools for pan / zoom, and the video is now watchable, where I can get a quick point across. Although this video has no point, the pan/zoom work nicely.
One concern is that the video/screen cast is limited to 90 seconds in length - which could be viewed as a positive. I'll have to be a little creative to get my point across in 90 seconds - maybe that's better for everyone :)
Test Screen Cast with pan/zoom
Today, I ran across the Developer Express ASP.NET blog, where they have several screen casts about using their grid products with LINQ. I love screen casts. You can really tell a story, and show so much more than you could with just words and pictures. And the best part is, the right screen cast can highlight a feature in just a few minutes.
Seeing this makes me a little jealous. We've created so many screen casts and video products for other companies, but like more companies, we've not used our own goodness for our own products.
Anyway - my point of this post is simple to the software/support blogging community.
Please follow DevExpress and do more screen casts, they're good for everyone.
Have you ever lost your cell phone? Camera? Other pocket sized gadgets that can easily cost $500 or more? What about the other side, have you ever found a gadget, only to be helpless and not know how to return it?
Phones are a little easier due to phone books, last calls, caller id, etc. This has happened several times in my presence, most recently at Sea World. Find a phone, press redial and as it turns out, the phone owner and the last person called were together, and within a few minutes the phone was returned.
BUT ... what about your camera? If you know me, you know we recently had a baby girl, and you also know that I'm a **very** amateur photographer. My photos (all 15K plus on flickr) are all about capturing the moment, rather than getting the picture right. Disk space is so cheap, cameras are so small, and moments pass to fast, for me to worry about getting just the perfect photo. I'd much rather have 50 decent (even some not so decent) pictures to capture the moment, than one or two perfect pictures. ok ok back to the story.
Something you probably do not know is that we lost our camera with all of the first pictures of baby Courtney. These were the Day 0 pictures of baby Courtney, and capturing many memories of all the friends/family that visited us in the hospital that day. Just weird! How do you lose a camera in a hospital room? It was here a minute ago - I just took pictures of Grandma. Where did it go?
We finally ended up hoping that it fell into a bag (there were lots of those around) and someone accidentally took it home. What else could have happened? We'll wait a few days and someone will call with it. Waiting ... Waiting ... Waiting ... No Call. Four days go by, and we're now home from the hospital. What are we left to do? Give up? Call lost and found at the hospital - yeah right. They're like - umm, what does your camera look like? and I answer - it's a small silver Sony. Very descriptive right - but what else am I to say? Nothing.
Then two weeks later, I decide to call back just so I can sleep better at night. Jaw dropping news! They have my camera, and I identified the pictures on it. When baby Courtney was born, I snapped a picture of the clock in the delivery room, and that was the identifying photo. Who turned it in, how, when, where, why, will all go unanswered - but for some reason it was finally turned in and we were very happy.
Anyway ... this is an awful long non-technical story to talk about, what could have just been answer by looking at the photo. They say that a picture is worth a 1000 words, and they're right. By just looking at the photo you might say - why would anyone disgrace their camera like that - and now you have the answer :) If I ever lose it again, it's be mush easier to return.
All over the web people are raving about their success with Getting Things Done (or GTD). I read this article about using gMail labels for GTD, and I copied the idea. It's working really well, and I wanted to pass it along, so that others might take advantage of it as well.
The idea is simple. The inbox is for receiving, not for storage. When something comes into your inbox, you either ...
- Do it if it takes less than two minutes (no procrastinating here)
- File it, to be done at the appropriate time
The latter is very important, and requires discipline. If something could take 10 minutes, you might be tempted to side track and just do it, after all - what's 10 minutes? Well in developer time, that could easily turn into hours. So you need to finish the task at hand. Which is simply clear the inbox.
When I delegate an email, I flag it with @Waiting (it being the sent mail) - so I can easily follow up with tasks assigned to others, to make sure the "Getting" in GTD are really happening when I'm counting on others.
The other thing I like about the GTD filing system, is the rolling calendar months. When you have an email that pertains to something that will happen later this year, you simply flag it with that month. Then at the beginning of each month, you transition all the monthly items into actions, and change the month label to next year. You see in the screen shot that Jan/Feb/Mar are in 2009, and the rest of the year is in 2008, because Q1 has already rolled to 2009. I use YYYY Mmm format, so that they sort nicely.
I'm not using the exact GTD terminology, because I wanted to see the (XX) marked "unread" counts next to each label. The labels in gMail are sorted alphabetically - so from top to bottom, I conveniently came up with words that are in alpha order that make sense, and are very mnemonic. This is why @Action isn't used, but instead @Needs, simply because @Action would come before my @ASAP, which would be backwards.
As the links article talks about - i prefix the gMail labels with @ simply so they show at the top of the list of labels.
Lastly, the color labels are nice, but meaningless. Well I guess they serve a purpose when you do a search. The results that match your search criteria - will show the label - and that might draw more attention to the search result. As it is, when I "click" the label @ASAP - I see a list of all the @ASAP messages, and gMail is smart enough not to waste the screen real estate and restate the obvious. I do like the darker solid colors when they do appear (as aforementioned in search results) because then it's white font over a dark background, where conversely if you choose a light color, it's a dark font over a white background, which just doesn't stand out as much. I would like it more if gMail would let me pick my own colors, rather than from a limited color palette - buy hey - you can't have everything!
This has become a staple in my daily activity, and I'm very surprised how many people don't know about the service. So while this is a <repeat /> for many of you - others may still find it useful.
Jott.com is a free service that you can call (it knows you by the caller id - which you setup on your account) and dictate a message to. Then it sends you the message via X channels. My channels are SMS-Text, Email, and Twitter. There are many channels to choose from to fit your message lifestyle, but whatever you choose, you should checkout the service.
Today at Lunch, my friend Dan Wahlin recommended some DVD's for my two year old, and I sent a Jott (which is on my speed dial as "6") to myself. He was amazed at the speed which Jott sent me an SMS, and an Email.
Now that I'm home, I've ordered the DVDs from Ebay - Thanks Dan. Thanks Jott.com

I just got a tweet (follow me @ScottCate) from @SilverlightNews, about LINQPad.net, so I decided to check it out.
Jumping on the site - I see that this is a LINQ to SQL Windows App, that let's you write LINQ statements and execute them directly against SQL server, in a UI that resembles SQL Server Management Studio.
Then I see a bunch of samples built into a panel on the bottom left. These are pretty cool samples, and they execute right in the UI.
Finally, it hits me. This is the companion product to C# 3.0 in a Nutshell.
From the LinqPad.net site.
LINQPad is also a great way to learn LINQ: it comes preloaded with 200 examples from my book, C# 3.0 in a Nutshell. There's no better way to experience the coolness of LINQ and functional programming.
Had I noticed more than the nice screen shot on the home page, I might have noticed the blaring ad for the book on the home page.
I think this is great. So Great! What a great idea!
Build a very useful community application, using the technology he's written about.
Congratulations Joseph Albahari - What a great idea, a great job, and a great execution.
Jose Fajardo built a Windows Live Messenger Login with Silverlight / XAML, and has a great step-by-step tutorial on how things come together.
http://www.cynergysystems.com/blogs/page/josefajardo?entry=live_messenger_done_with_silverlight1
This post is worth taking a look at for two types of folks.
#1 - The Skimmer
Skim this post, and you can easily and quickly see how it all comes together, without engaging the finer details. This is possible because of the very nice graphics, and split XAML parts in the post.
#2 - The Repeater
Read it, Read it again, then open Visual Studio and try it on your own.
Good job Jose, this is a great tutorial.
www.AZGroups.com is the User Group association that I run, and in particular the ASP.NET User Group. For the last 5 years, we've gathered a crowd of at least 350 folks, and convinced Mr. Guthrie to come and chat with us. It started as just ScottGu coming out for a very large user group, in the evening, but over the years has advanced to a full day, free (boxed lunch included) event.
This year, we've rented the beautiful Scottsdale Center for the Arts theatre, and have room for just over 600 people.
If you can make it, here is the RSVP Link.
https://www.clicktoattend.com/invitation.aspx?code=125378
This years focus is Silverlight, and ASP.NET MVC. Most of the day is around Silverlight, and ScottGu ends the day talking about MVC. I focus the marketing on ScottGu because of his fame/name, but in fact we have 3 other very well known passionate speakers from Microsoft coming as well.
Here is the session / schedule Line up.
- 7:00 - Doors open for sponsors
- 8:00 - Doors open to Welcome / Please be seated
- Schedule and Sessions
This is a community sponsored event. Thank you very much to the Following sponsors funding to helped make this event possible.
www.Microsoft.com ( Special Thanks to Tim Heuer for his help )
www.GoDaddy.com Human Resources ( 1/2 Lunch Sponsor )
www.Telerik.com ( 1/2 Lunch Sponsor )
www.TEKSystems.com
www.AXOSoft.com
www.AKALTech.com
www.Kentico.com
www.DiscountASP.NET
If you can make it, here is the RSVP Link.
https://www.clicktoattend.com/invitation.aspx?code=125378
I love working with the new objects in JavaScript available in the AJAX framework. There is a new Sys.StringBuilder, which looks/acts/feels just like the server side StringBuilder does.
There is also an extention to String for a format(mask, [args]); method that let's you do a nice relacement of a string mask.
String.format("{0} is before {1}", "This", "That") give your a nice single string of "This is before That", just as you'd encounter on your Server side.
But Sys.StringBuilder doesn't have an appendFormat(mask, [args]) like String does, it only has a append, and an appendLine() method.
So let's create a new ScottCate.StringBuilder that inherits from Sys.StringBuilder, and prototype an appendFormat() on it.
I'm not very happy with the arg0....arg9 in the appendFormat() signature, but that was easier than reflection style code against the arguments.
Oh! And special thanks to my friend Michael, who helped me figure out the toString() problem I was having.
[UPDATE] Man-o-man you gotta love blogging. A few hours after I posted this, I received a tip about the Function.apply() method. I can't believe after all these years, I'm still finding these nuggets in JavaScript. apply() allows for the arguments that were passed into the method (err function) to be passed onto another method (I mean function). So now as many strings as I want to pass into appendFormat(), will all just get passed to String.format() and the whole thing is much nicer then when I started.
Type.registerNamespace('ScottCate');
ScottCate.StringBuilder = function(len) {
ScottCate.StringBuilder.initializeBase(this, [len]);
}
ScottCate.StringBuilder.prototype = {
appendFormat: function(mask) {
this.append(String.format.apply(null, arguments));
},
toString: function(delimeter) {
return ScottCate.StringBuilder.callBaseMethod(this,
"toString", [delimeter]);
}
}
ScottCate.StringBuilder.prototype = {
appendFormat: function(mask, arg0, arg1, arg2, arg3,
arg4, arg5, arg6, arg7, arg8, arg9) {
this.append(String.format(mask, arg0, arg1, arg2, arg3, arg4,
arg5, arg6, arg7, arg8, arg9));
},
toString: function(delimeter) {
return ScottCate.StringBuilder.callBaseMethod(this,
"toString", [delimeter]);
}
}
ScottCate.StringBuilder.inheritsFrom(Sys.StringBuilder);
ScottCate.StringBuilder.registerClass('ScottCate.StringBuilder',
Sys.StringBuilder);
function TestSB() {
var sb = new ScottCate.StringBuilder();
var mask = "{0} goes in front of {1}";
sb.appendFormat(mask, "This", "that");
alert(sb.toString());
}
More Posts
Next page »