# Sunday, March 04, 2007

Darren Strange tells a delightfully honest story about a presentation gone horribly wrong, and getting back on the horse again. It illustrates something most veteran presenters can tell you: it takes more than one huge mistake to completely wreck a presentation. But the trick is that each mistake you make increases the chances of making more, because you get tense and worried and panicked as things go wrong. The comments to Darren's post are very helpful, pointing out that the failed demo was in some ways a smaller problem than the tone setting at the very start of the presentation. Something for all of us to learn from this one.


Sunday, March 04, 2007 8:18:42 AM (Eastern Standard Time, UTC-05:00)  #    
# Saturday, March 03, 2007

Recently I was driving to a demo at a client site when I remembered that one particular test of my app had not been run. This is a web app with a smart client providing a secondary interface for intense users, and is therefore designed for a connected situation. But I was about to demo on a standalone laptop -- web server, SQL server, browser client and smart client all happily together on a single box. What's more, the laptop doesn't quite have everything -- I don't run an SMTP server on there, and some parts of the app send email as workflow progresses. Sure enough, when I got to their parking lot I tested and the email-sending code throws an exception if it can't find the mail server. This calls for a quick edit - throw in a try-catch-swallow along with a TODO comment saying that we should be gracious if the mail server is unreachable.

OK, fine. I open the project and attempt to change the code. The checkout, of course, fails, because I'm offline. And I'm not able to edit the file. Throwing caution to the winds, I browse with Windows Explorer to the file, take away the read only attribute, and carry on. The demo works beautifully and life goes on.

If only I had already found the patterns and practices guidance for VSTS over on CodePlex! It includes answers to questions like "how do I work offline?" (answer: do what I did, and use the Power Tools to sync up when you get back to the office) and much much more. Worth some time reading and internalizing.


Saturday, March 03, 2007 8:39:30 PM (Eastern Standard Time, UTC-05:00)  #    
# Friday, March 02, 2007

Intellisense has been around a really long time. According to Wikipedia:

IntelliSense was first introduced as a feature of a mainstream Microsoft product in 1996, with the Visual Basic 5.0 Control Creation Edition, which was essentially a publicly-available prototype for Visual Basic 5.0. Although initially the primary "test bed" for the technology was the Visual Basic IDE, IntelliSense was quickly incorporated into Visual FoxPro and Visual C++ in the Visual Studio 97 timeframe (one revision after it was first seen in Visual Basic). Because it was based on the introspection capabilities of COM, the Visual Basic versions of IntelliSense were always more robust and complete than the 5.0 and 6.0 (97 and 98 in the Visual Studio naming sequence) versions of Visual C++, which did not have the benefit of being entirely based on COM. These shortcomings (criticized by many VC++ developers since the 97 release) have been largely corrected in the post-.NET product lines. For example, one of the most requested capabilities missing from the pre-.NET products was support for templates, which is now fully implemented.

So that's over a decade. And now, in the March CTP of Orcas, JavaScript joins the club. Jeff King blogs:

The March CTP of Visual Studio marks the debut of a much-requested and long-awaited feature: improved JScript IntelliSense.  We’ve been working on this for almost a year now and I’m pretty excited to finally be able to share it with the public. 

It's actually a much harder problem in a language that doesn't do strong typing.


Friday, March 02, 2007 8:20:38 PM (Eastern Standard Time, UTC-05:00)  #    
# Thursday, March 01, 2007

Something really weird started happening on my buddy list:

What's this i'm thing? Well I went to my new search start page... and didn't even need to search, because the link was there. This is another charity initiative. You put a string in your Messenger name and one of nine charities gets money when you have conversations. It's "aimed at those living in the United States" but I'm not letting that stop me... I chose Unicef. Start a conversation?



Thursday, March 01, 2007 8:11:56 PM (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, February 28, 2007

My talk will be Thursday morning... you should register. Look who is speaking at this thing! Look what you can come and learn! Montreal is a lovely city, and it's easier to get your boss to send you to Montreal than Barcelona, isn't it?


Wednesday, February 28, 2007 7:59:49 PM (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, February 27, 2007

While our new projects are on VSTS / TFS, we have some older projects on source safe that we aren't migrating. If you're in the same boat then you need to pay attention to the DST change that is coming up very soon. You could lose a checkin (possibly even the entire project history) if another one occurs within an hour of the first. Now, which is easier - banning all checkins on the DST change day, or reading a knowledge base article and following some simple instructions?



Tuesday, February 27, 2007 7:52:42 PM (Eastern Standard Time, UTC-05:00)  #    
# Monday, February 26, 2007

Joey deVilla pointed out these cool sites for making origami out of money.


I couldn't help but notice they featured American money... since loonies are really hard to fold, and toonies not much better, I tried a five:



Monday, February 26, 2007 7:27:18 PM (Eastern Standard Time, UTC-05:00)  #    
# Sunday, February 25, 2007

One of the things that C++ can do that C# can't is MSIL linking from the IDE. Normally when you have a solution with two projects, a build creates two assemblies (one .exe and one .dll) for you to deploy. Sometimes you want to deploy only a single file, but you want two projects. Sometimes you want the advantages of static linking while you're creating MSIL and deploying onto the CLR. So how do you do it?

I created a tiny little solution with two projects, both in C++. One is a console application and the other is a library. I set the library to compile as /clr:safe and the console app as just plain /clr. In the console app I added a reference to the library.

At this point if I build and run I will have HelloWorld.exe and Library.dll.

Now I went to the Library project settings and made a few changes. First, on the Advanced tab of Linker options, I turned off assembly generation:

This gets the linker to make an assembly fragment called a .netmodule rather than an assembly. Next I changed my output file name:

Then I deleted the reference in the console application, and re-added it but this time to Library.netmodule instead of Library.dll. One more thing, the linker inputs in the console application need to include the .netmodule:


At this point I can build the solution, and delete Library.netmodule, Library.dll and the like and HelloWorld.exe will run just fine. I don't need to deploy Library because it's actually inside HelloWorld.exe - that's MSIL linking.

I have a mentoring client who is using this right now. They have an MFC application with a mix of native and managed code and it can't be compiled /clr:pure. They want to add some WinForms controls to that application, and the designer can only work with verifiable assemblies. So now one project is the user controls, and it's /clr:safe, and the the main exe is a mixed assembly. Yet they only deploy a single file in the end.


Sunday, February 25, 2007 7:18:55 PM (Eastern Standard Time, UTC-05:00)  #    
# Saturday, February 24, 2007

Man, the hits just keep on coming at Channel 9. This time it's Rico Mariani, nominally on performance but in my opinion really on how to have a successful career. Reminiscing about the University of Waterloo, computer stores in Toronto, the amazing Ontario Science Centre, and a Commodore PET (all things from my past though I didn't work at these places I just visited them) he somehow works into every sentence how being a nice person and wanting to help is a recipe for success. Later he starts talking about creative leaps and eventually about how to make your programs faster.

Want to be seen as an expert? Want to be put in charge of something? Want to make a difference in someone's life? Watch it! It's a huge download - over 800 meg - but so worth it.


Saturday, February 24, 2007 6:37:15 PM (Eastern Standard Time, UTC-05:00)  #