Andrej Tozon's blog

In the Attic


My new virtual pal

... I added Encarta® Instant Answers <> to my MSN contact list today. It's very smart and always willing to talk to you. It can tell you pretty much about anything. Just ask, when Napoleon was born or how big is Mexico. Ask it to do some math ("solve 2x^2+7x=5", "add 1 and 1")... It also has a sense of humor:

Andrej says: how are you?
Encarta® Instant Answers says: I'm doing great. You?
Andrej says: super
Encarta® Instant Answers says: Super, huh? OK, good.
Andrej says: how are you?
Encarta® Instant Answers says: I'm doing well.
Andrej says: how are you?
Encarta® Instant Answers says: I'm doing great. OK, should we get back to the kind of questions I was designed to answer? :) I'm sure you've heard about Uzbekistan... but do you know where it is? Just ask me and I'll show it to you on a map.

... ;)

Now seriously... this automated service agents are great, and because they live inside your IM client, they are always at hand when you need help with something. Until now, I used Google for my "define"s and "calculate"s, but now, Encarta agent is my new best schoolmate.

Imagine this kind of an agent as your 24/7 online product support technician. Users don't want to read through dull help files, they want to interact with a kind, supportive "person". And it shouldn't be difficult to program: add some human relation skills to your search engine, and you'll get a new, invaluable member of your team ;)

I want my MSDN agent! I'd ask it questions like "what is StringBuilder?",  "list XmlReader members", "tell me more about generics", "show me ExecuteNonQuery examples". We'd have so much fun together...



[Found Encarta agent through Chris Sells]

JetBrains Omea Reader

I've recently replaced my existing RSS feed reader with JetBrains Omea Reader 2.0, which offers everything I need while working with my feeds: categorization, aggregation, comment support, efficient search and custom views (search folders). It's fast, can read newsgroups, and you get a free license! Certainly worth a look.

VS2005 Designer woes (bugspotting)

While VS2005 features a lot of tools and enhancements to boost your productivity, its bugs can sometimes just kill the time you saved using them. This one just took me some time to figure, although in the end, the resolution was universally trivial - restart the IDE.

Here's what happened: I tried to open my user control in the designer, and instead of visualizing the control, designer gave me the following message: "Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.", along with some pretty useless exception stack info. I haven't touched that control for a while so I was sure there's nothing wrong with it, and at runtime, it loaded and rendered without any problems. Cleaning and recompiling project didn't help. I was getting desperate and then tried the ultimate solution: I closed the IDE and reopened the solution. The problem went away.
[Update: there is a hotfix available for this one]

The other (known) bug I ran into the other day is with DataSet visualizer: fill DataTable with some records and delete one row. Open table with DataSet visualizer - deleted row doesn't render properly and accessing that row throws the "Deleted row information cannot be accessed through the row." exception.

The third one is related to the .suo file... I was working on my project while IDE suddenly crashed. No message, no nothing, the IDE just wasn't there anymore. Reopening the project resulted in a crash, before the project load was completed. Restarting computer didn't help. Deleting project's .suo file did... I didn't investigate this further, but I suspect it could be related to the fact, that I had *a lot* of code windows open while working on that project.

Oh, yes... and my toolbox window now looks like this (note the repeating icon):

There are a lot of other bug posts around the net, along with discussions, whether the VS2005 release was premature or not. I know MS VS team is working hard on these issues, but I would be more satisfied if MS started releasing monthly hotfixes, instead of waiting till summer for the first SP. [Update: Officially, Visual Studio 2005 Service Pack 1 will be released in Q3/2006]

.NET 2.0 and complementary technologies

After the launch of VS2005/SQL2005, new products, built for VS2005 RTM, are slowly popping in:

After installing VS2005 on my production box, I'm still stuck using my VM's :)


On a side note: the official Slovenian VS2005/SQL2005 launch event is being held on Nov., 30th in Ljubljana.

Free Win/Web controls from Infragistics

Infragistics has made some of their NetAdvantage Windows Forms/ASP.NET controls available for free.

The package, available for download through this special offer, contains the folowing Windows controls: WinTab, WinScrollBar, WinProgressBar, WinPrintDocument and WinToolTip. ASP.NET controls include WebCalendar and DateChooser.

Free controls are taken from NetAdvantage 2005 Vol. 3 and are built for .NET 2.0.

Read more about this offer.

Visual Studio 2005 RTM - not a myth

Great news... While I was away, giving a talk about ClickOnce at local SLODUG meeting, VS2005 Professional ed. and SQL2005 Developer ed., together with .NET Framework 2.0 have become available through MSDN subscribers download.

After all these years... VS 2005 finally here. And it's real.  Version numbers... 8.0.50727.42 (VS) or 2.0.50727.42 (Framework).

Make some noise!

The .NET Framework 2.0 finally makes it very easy for your application to play some funky music. First, there's the SystemSounds class, allowing you to play basic, ehm, system sounds like Beep, Exclamation, Question, ... For example: SystemSounds.Asterisk.Play() plays the sound you have selected for the Asterisk event in your active sound scheme.

A bit more interesting is a SoundPlayer class, which lets you choose a custom .wav file to play:

SoundPlayer player = new SoundPlayer(@"c:\Windows\Media\Windows XP Startup.wav");

SoundPlayer lets you load the and play .wav files from a valid URL or a Stream object, in a synchronous or asynchronous manner. And if you really want to annoy your users, then PlayLooping() method is all what you need.