﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Jani Järvinen's Personal Weblog</title>
    <link>http://www.saunalahti.fi/janij/blog/</link>
    <description>This is my personal weblog mostly about Windows software development. The views represented here are strictly my own, and do not necessarily reflect those of my employer.</description>
    <language>en-us</language>
    <pubDate>Sat, 30 Dec 2006 13:47:37 GMT</pubDate>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>360</ttl>
    <item>
      <title>Happy New Year 2007, and remember...</title>
      <link>
      </link>
      <description>&lt;p&gt;As the year 2006 is turning to an end, it is time to wish everybody Happy and Prosperous New Year 2007!&lt;/p&gt;

&lt;p&gt;As in the previous years, the URL for my latest RSS feed is going to change. I'm sorry about the inconvenience, but my ISP doesn't allow databases or dynamic file modification. So, the new RSS feed URL for the next year will be:&lt;/p&gt;

&lt;pre&gt;
http://www.saunalahti.fi/janij/blog/2007.xml
&lt;/pre&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;</description>
      <pubDate>Sat, 30 Dec 2006 13:18:21 GMT</pubDate>
      <guid>caa09471-04c2-4722-90eb-049d20b8ad05</guid>
    </item>
    <item>
      <title>Changing the default method stub generated by Visual Studio 2005's Generate Method Stub refactoring to use NotImplementedException</title>
      <link>http://blogs.msdn.com/ansonh/archive/2005/12/08/501763.aspx</link>
      <description>&lt;p&gt;You might have noticed while writing your C# code in Visual Studio 2005 that whenever you write a name of a method that doesn't yet exist in your class, Visual Studio suggest to generate a method stub for your when you press Shift+Alt+F10,M while your cursor (caret) is on the name of the (yet) non-existing method.&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_dec_vs2005_generate_method_stub.png"&gt;&lt;/p&gt;

&lt;p&gt;Now, the default-generated method uses the basic System.Exception class to throw an exception with the message "The method or operation is not implemented." because you haven't in fact yet written any code to the method's body. However, the .NET Base Class Library also contains a specific exception type for this purpose, named the System.NotImplementedException. This brings into mind an idea: would it be possible to change the default method stub generated by Visual Studio? Luckily, the answer is yes.&lt;/p&gt;

&lt;p&gt;About a year ago, Microsoft's Anson Horton (the Program Manager for the Visual C# IDE) &lt;a href="http://blogs.msdn.com/ansonh/archive/2005/12/08/501763.aspx"&gt;blogged&lt;/a&gt; about this, and showed how to edit the "MethodStubBody.snippet" file under the default directory "C:\Program Files\Microsoft Visual Studio 2005\VC#\Snippets\1033\Refactoring" so that the generated code will throw a NotImplementedException instead of a regular Exception.&lt;/p&gt;

&lt;p&gt;Having made the change myself, I quickly noticed that it would be great if the error message itself would display the name of the method in question, because the default error message shown is simply "The method or operation is not implemented." even with NotImplementedException, and thus requires you to check the call stack (or use the debugger) to see which method was not implemented. However, if you tweak the MethodStubBody.snippet file just a little bit more, you can easily get this feature done. By using the special "$signature$" macro (for a lack of a better word), you can insert the name of the method to the error message. So in the end, I ended up editing the MethodStubBody.snippet file like Anson Horton described, but also by changing the actual code to:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;Code Language="csharp"&amp;gt;
&amp;lt;![CDATA[$signature$
{
  $end$throw new $Exception$("The method or operation " +
  "is not implemented: $signature$");
}]]&amp;gt;
&amp;lt;/Code&amp;gt;&lt;/pre&gt;

&lt;p&gt;This change has proved to be just perfect for my needs. Try it and see what you think. Oh by the way, this suggestion has already been made to the Visual Studio Connect site with the &lt;a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=92654"&gt;ID 92654&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Fri, 29 Dec 2006 10:40:11 GMT</pubDate>
      <guid>3eff5956-f30d-487b-a0f9-0d55df08357a</guid>
    </item>
    <item>
      <title>Microsoft Expression Web is now ready</title>
      <link>http://www.microsoft.com/products/expression/en/Expression-Web/default.mspx</link>
      <description>&lt;p&gt;Microsoft's creativity product suite called Expression is finally ready for first product launches. The company just recently announced the availability of Expression Web, the firstly-finished member of the suite. Expression Web is a hybrid between FrontPage and Visual Studio's web design features, and allows your to write documents and develop web applications using technologies such as XML, ASP.NET and XHTML. A free trial version is now also available for the product with a suggested retail price of USD $299. Personally, I'm waiting for the Expression Design product, which would allow me the write XAML/Windows Presentation Foundation (WPF) applications. Expression Design  is currently available as a Community Technology Preview (CTP).&lt;/p&gt;</description>
      <pubDate>Fri, 29 Dec 2006 05:38:52 GMT</pubDate>
      <guid>5b992fbe-3209-4b44-801a-3a6b79a55df4</guid>
    </item>
    <item>
      <title>Could your application look like Office 2007?</title>
      <link>http://msdn2.microsoft.com/en-us/office/aa973809.aspx</link>
      <description>&lt;p&gt;After a Christmas holiday, it's again time to get on track with some development stuff. I'm sure you are aware of the new Office 2007 products that were launched in November. Word, Excel and PowerPoint all have the new "2007 look", which is something many, many software vendors try to mimic in the coming years, just like it happened with Office 2003. However, previously ISVs had to do much of the work themselves, but with the 2007 Office System this is changing.&lt;/p&gt;

&lt;p&gt;With the new Office version, Microsoft is offering to license the user interface (UI) to developers and ISVs. There's a &lt;a href="http://msdn2.microsoft.com/en-us/office/aa973809.aspx"&gt;site&lt;/a&gt; on MSDN devoted to this, and you can also &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E2DDD3FB-8635-4D54-8730-102B75C31DB6&amp;displaylang=en"&gt;download&lt;/a&gt; a document titled "2007 Microsoft Office System User Interface Licensing Program Frequently Asked Questions". The license is free to use, and does not contain any royalty fees. The license grants you access to "the intellectual property rights in the Office UI as well as Design Guidelines that describe the look and behavior of the UI" as specified by the FAQ document. No code is licensed, but the design guidelines should get you far enough on the path to Office 2007 like applications.&lt;/p&gt;</description>
      <pubDate>Wed, 27 Dec 2006 06:45:28 GMT</pubDate>
      <guid>99824f08-fd73-4b3e-b9c7-f1b11d3c6aa8</guid>
    </item>
    <item>
      <title>About IE 7, ClearType and custom searches</title>
      <link>http://www.microsoft.com/windows/ie/default.mspx</link>
      <description>&lt;p&gt;By now, you've probably started using Internet Explorer 7 even if you are still using Windows XP and not Windows Vista. I've used IE 7 starting from the early Vista beta versions, and although I was a bit skeptical at first (I always liked IE 6), I quickly found tabbed browsing and the new search facility very useful.&lt;/p&gt;

&lt;p&gt;Now, when I talk to people about IE 7, they often complain about the new interface (of course), but also about the font-smoothing &lt;a href="http://www.microsoft.com/typography/ClearTypeInfo.mspx"&gt;ClearType&lt;/a&gt; technology, which is enabled by default. I believe it is enabled by default because many (most?) users already are using LCD screens instead of CRTs, but I could be wrong, too. Then again, I noticed that I don't personally enjoy ClearType on my 1600x1200 Nokia CRT screen, and so switched it off. However, on my laptop, I found the results to be better than without it.&lt;/p&gt;

&lt;p&gt;Here's a tip if you are using LCD screens: download the free ClearType powertoy, which allows you to calibrate ClearType settings and thus improve the results. You can download it from Microsoft &lt;a href="http://www.microsoft.com/typography/ClearTypePowerToy.mspx"&gt;typography web pages&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;My second tip is about adding custom search providers into IE 7's search box at top-right. Firstly, click the down-arrow button next to the search button, and choose Find More Providers. Notice the yellow box on the righthand side. Here, you can easily add a custom search engine to your IE, for example MSDN. This can be very useful.&lt;/p&gt;

&lt;p&gt;A technical note about the custom search provides: these are specified using XML files (you guessed it) obeying the &lt;a href="http://www.opensearch.org/Specifications/OpenSearch/1.1/Draft_3"&gt;OpenSearch specification&lt;/a&gt;. For example, the custom search provider for MSDN would be:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;
&amp;lt;OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"&amp;gt;
  &amp;lt;ShortName&amp;gt;MSDN&amp;lt;/ShortName&amp;gt; 
  &amp;lt;Description&amp;gt;MSDN provider&amp;lt;/Description&amp;gt; 
  &amp;lt;InputEncoding&amp;gt;UTF-8&amp;lt;/InputEncoding&amp;gt; 
  &amp;lt;Url type="text/html"
  template="http://search.msdn.microsoft.com/search/
  default.aspx?siteId=0&amp;tab=0&amp;query={searchTerms}" /&amp;gt; 
&amp;lt;/OpenSearchDescription&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Because adding custom search providres is so easy, I immediately added &lt;a href="http://en.wikipedia.org/"&gt;Wikipedia&lt;/a&gt; as well.&lt;/p&gt;</description>
      <pubDate>Thu, 21 Dec 2006 15:26:41 GMT</pubDate>
      <guid>73472ff6-c68c-4320-8d3b-0c7a0cb10428</guid>
    </item>
    <item>
      <title>Why can't I run a Vista executable on Windows XP?</title>
      <link>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/image_optional_header_str.asp</link>
      <description>&lt;p&gt;Windows Vista contains many nice .EXE files, and it is tempting to copy those EXE files to your Windows XP box and to try run them there. Well, it turns out very quickly that this just won't work, because you will get a rather blunt error message in Windows XP saying:&lt;/p&gt;

&lt;pre&gt;
C:\Tests\Calc.exe is not a valid Win32 application.
&lt;/pre&gt;

&lt;p&gt;But why is this error message displayed? It is displayed by the OS application loader, and each PE file (Portable Executable) has a header which tells the OS the minimum OS version on which the application will run. In Vista, the version is 6.0, and on Windows XP 5.1, and so on. If the version stamped in the EXE file is larger than the current OS version, the application won't run.&lt;/p&gt;

&lt;p&gt;Now then, how would you check an EXE file's minimum version? By parsing the PE header, or more precisely the IMAGE_OPTIONAL_HEADER header and its MajorOperatingSystemVersion and MinorOperatingSystemVersion fields. Here's a quick and dirty C# code to return these fields given an EXE filename:&lt;/p&gt;

&lt;pre&gt;
private Version GetPEFileMinimumOSVersion(string filename)
{
  FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
  const int BUFFER_SIZE = 100;
  const int WORD_SIZE = 2; // sizeof(short) on 32-bit
  byte[] peHeader = new byte[BUFFER_SIZE];
  try
  {
    // read IMAGE_DOS_HEADER
    const int DOS_HEADER_LFANEW = 0x3C;
    byte[] peOffsetRVA = new byte[WORD_SIZE];
    fs.Seek(DOS_HEADER_LFANEW, SeekOrigin.Begin);
    fs.Read(peOffsetRVA, 0, WORD_SIZE);
    int peOffset = (peOffsetRVA[0] + (peOffsetRVA[1] &lt;&lt; 8));
    // read IMAGE_NT_HEADERS
    fs.Seek(peOffset, SeekOrigin.Begin);
    fs.Read(peHeader, 0, BUFFER_SIZE);
    string header = Encoding.ASCII.GetString(peHeader, 0, 2);
    if (header != "PE")
    {
      throw new Exception("The EXE file \"" + filename +
        "\" does not seem to be a valid " +
        "Win32 PE executable file.");
    }
  }
  finally
  {
    fs.Close();
  }
  // parse IMAGE_OPTIONAL_HEADER fields
  const int MAJOR_VERSION_OFFSET = 0x40;
  int pos = MAJOR_VERSION_OFFSET;
  int major = (peHeader[pos] + (peHeader[pos + 1] &lt;&lt; 8));
  pos += WORD_SIZE;
  int minor = (peHeader[pos] + (peHeader[pos + 1] &lt;&lt; 8));
  return new Version(major, minor);
}

private void button1_Click(object sender, EventArgs e)
{
  string filename = @"C:\Windows\System32\calc.exe";
  Version minimumVersion = GetPEFileMinimumOSVersion(filename);
  MessageBox.Show(minimumVersion.ToString());
}
&lt;/pre&gt;

&lt;p&gt;I won't go through the gory details of the PE (and MS-DOS) file headers here, but I can instead &lt;a href="http://msdn.microsoft.com/msdnmag/issues/02/03/PE2/default.aspx"&gt;point you to&lt;/a&gt; Matt Pietrek's two-part article on MSDN from 2002. Happy hacking!&lt;/p&gt;</description>
      <pubDate>Mon, 18 Dec 2006 15:40:03 GMT</pubDate>
      <guid>484efd20-a5e3-4a35-b688-2d22fab61ed7</guid>
    </item>
    <item>
      <title>Videos and even more videos from TechEd 2006 on MSDN Showtime</title>
      <link>http://www.microsoft.com/emea/msdnshowtime/techeddevelopers.aspx</link>
      <description>&lt;p&gt;This year's TechEd was held in November in Barcelona, Spain. Even if you weren't part of the 3700+ developers attending the event, not all is lost. The good news is that MSDN's Showtime has a compilation of videos from most (if not all) sessions that were held there. To see them, you can go to MSDN (link above) and search for the favorite product, technology or speaker, and then click the "Watch the entire show" link on the right to see a new popup window and your video. Cool, expect that I haven't found a way to see the videos without the popup (I want to see them in my Media Player and not in some tiny, non-resizeable popup).&lt;/p&gt;

&lt;p&gt;In addition to Showtime, TechEd also has the "Virtual Side", which is available at &lt;a href="http://www.mseventseurope.com/TechEd/06/pre/Live/DefaultDev.aspx"&gt;MSEventsEurope.com&lt;/a&gt;. For your convenience, I've compiled a set of direct links to the videos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;KEYNOTE: Windows Vista, 2007 Office System and AJAX - Eric Rudder: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/msdnkeynote.asx%20"&gt;Watch&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;.NET Remoting - where to use it?: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_IngoRammer.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AJAX Patterns with the Microsoft AJAX Library - Jeff Prosise &amp; Andre Sanabria: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/msdnjeffpr.asx"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ASP.NET AJAX Control Toolkit - Shawn Burke: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/msdnshawn.asx"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Announcement - .NET Framework 3.0: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_PaulAndrew.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Announcement - ASP.NET AJAX: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_KeithSmith.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Announcement - SQL Server 2005 Compact Edition Release Candidate: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_MarkJewett.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Announcement - Visual Studio 2005 Tools for Office for the 2007 Microsoft Office System: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_EricCarter.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bolstering knowledge in the Community: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_Richard_Costa.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chief Designer of C#: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_AndersHejlsberg.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Community Geek turns into Microsoft Geek: &lt;a href="http://www.mseventseurope.com/downloads/teched/liveitf/Daniel_Moth.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Connected Systems with Steve &amp; Clemens: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_SteveSchwartz.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Eric Rudder builds on the developer excitement: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_EricRudder.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Founder, Girl Geek Dinner: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_SarahBlow.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Innovation, Imagine Cup &amp; Student Partner Programme: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/simonbrown.asx"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Microsoft's youngest MVP: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_ArfaKarim.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Next Generation of Process: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_IvarJacobson.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;R2-D2 Robotic Enthusiasts: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_MartinCalsyn.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rafal on Windows Vista Security &amp; Microsoft Dynamics: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_RafalLukawiecki.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Scott Guthrie announces exciting releases: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_ScottGuthrie.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;User Account Control - Chris Corio: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/extract_user_account.asx"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wayne's view on Expression Web: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_WayneSmith.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;What's new in Embedded CE 6.0: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_Mike_Hall.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Windows Live Platform Service: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_DannyThorpe.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Windows SharePoint Services 3.0: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_TedPattison.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Windows SharePoint Services v3 - David Gristwood: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/msdnsharepoint.asx"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;XNA Games Studio Express: &lt;a href="http://www.mseventseurope.com/downloads/teched/livedev/vt_Rob_Miles.wmv"&gt;Watch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;</description>
      <pubDate>Sat, 16 Dec 2006 09:02:19 GMT</pubDate>
      <guid>64ded22b-e61a-466a-b002-04fabadf5839</guid>
    </item>
    <item>
      <title>C# tip: reading a shortcut's target</title>
      <link>
      </link>
      <description>&lt;p&gt;In the C# newsgroups somebody asked how to read the target of a Windows shortcut programmatically. That is, he wanted to get the name of the application/file a shortcut (.LNK file) points to. Here's the solution.&lt;/p&gt;

&lt;p&gt;But first some background. Shortcuts (or "shell links" as they are also called) can be 
manipulated using the COM objects in SHELL32.DLL, and there exists the 
IShellLink interface and the ShellLinkObject object, the latter of which is 
very useful. If you are using Visual Studio, you can simply add a reference 
to the COM library "Microsoft Shell Control And Automation" or to 
SHELL32.DLL directly, and then use the following code:
&lt;/p&gt;

&lt;pre&gt;
public string GetShortcutTargetFile(string shortcutFilename)
{
  string pathOnly = System.IO.Path.GetDirectoryName(shortcutFilename);
  string filenameOnly = System.IO.Path.GetFileName(shortcutFilename);

  Shell32.Shell shell = new Shell32.ShellClass();
  Shell32.Folder folder = shell.NameSpace(pathOnly);
  Shell32.FolderItem folderItem = folder.ParseName(filenameOnly);
  if (folderItem != null)
  {
    Shell32.ShellLinkObject link = 
(Shell32.ShellLinkObject)folderItem.GetLink;
    return link.Path;
  }
  return ""; // not found
}&lt;/pre&gt;

&lt;p&gt;Then, just call the code like this:&lt;/p&gt;

&lt;pre&gt;
private void button1_Click(object sender, EventArgs e)
{
  string shortcut = "C:\\Shortcut to notepad.exe.lnk";
  MessageBox.Show(GetShortcutTargetFile(shortcut));
}&lt;/pre&gt;

&lt;p&gt;One of the reasons I wanted to share this solution here also is that I found it difficult to find simple enough code to do the job. Most code I found defined the IPersistFile and IShellLink interfaces themselves, which I find somewhat ugly, especially all that is needed is a "quick and simple" solution like the original poster.&lt;/p&gt;</description>
      <pubDate>Fri, 15 Dec 2006 16:23:22 GMT</pubDate>
      <guid>d6d9c7ee-82f9-4781-8594-152efecddae2</guid>
    </item>
    <item>
      <title>Visual Studio 2005 SP1 now available</title>
      <link>http://msdn.microsoft.com/vstudio/support/vs2005sp1/default.aspx</link>
      <description>&lt;p&gt;Microsoft has earlier today announced the availability of Visual Studio 2005 (VS2005) Service Pack 1 (SP1). The update can be freely downloaded from Microsoft's web pages. There are over 70 fixes and improvements in the service pack, so it is worth downloading.&lt;/p&gt;</description>
      <pubDate>Fri, 15 Dec 2006 14:32:55 GMT</pubDate>
      <guid>f242502e-832a-4021-abe4-da9e9ee0a917</guid>
    </item>
    <item>
      <title>Starting Active Directory management tools from the command-line</title>
      <link>http://technet2.microsoft.com/WindowsServer/en/library/2218144f-bb92-454e-9334-186ee7c740c61033.mspx?mfr=true</link>
      <description>&lt;p&gt;I needed to manage a Windows Server 2003 member server, but the Active Directory management shortcut icons were missing from the Start menu and Administrative Tools group. If you run into a similar situation, it is helpful to know that you can still start the tools you need (such as Active Directory Users and Computers) from the command-line. These tools are Microsoft Management Console (MMC) snap-ins, and thus .MSC files (which are XML files in Windows Server 2003, by the way).&lt;/p&gt;

&lt;p&gt;Here's a list of the three Active Directory tools you often need:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Active Directory Users and Computers: &lt;strong&gt;dsa.msc&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Active Directory Sites and Services: &lt;strong&gt;dssite.msc&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Active Directory Domains and Trusts: &lt;strong&gt;domain.msc&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can easily launch these tools from the Start/Run command, or from the command-line. Here's another tip for you: if you want to quickly locate where a program is in the current Path, use the &lt;strong&gt;Where.exe&lt;/strong&gt; command. In the command-line, simply type:&lt;/p&gt;

&lt;pre&gt;where dsa.msc&lt;/pre&gt;

&lt;p&gt;This returns a simple line, such as:&lt;/p&gt;

&lt;pre&gt;C:\WINDOWS\system32\dsa.msc&lt;/pre&gt;

&lt;p&gt;The Where command also supports wildcards.&lt;/p&gt;</description>
      <pubDate>Fri, 15 Dec 2006 06:02:35 GMT</pubDate>
      <guid>40a9d2cc-bc22-427c-a25f-1e72d1d5685d</guid>
    </item>
    <item>
      <title>Hotfixes for Visual Studio now publicly available</title>
      <link>http://connect.microsoft.com/content/content.aspx?ContentID=3705&amp;siteid=210</link>
      <description>&lt;p&gt;Although Visual Studio 2005 is very usable out of the box, it isn't perfect. Previously, service packs became available seldomly, and to get fixes in between, you had to contact Microsoft's Professional Services (PS) and tell them about you issue.&lt;/p&gt;

&lt;p&gt;Now, Microsoft's Developer Division has started a new program, called the "Hotfix Public Availability Pilot Program", which means that from now on (or, at least during the pilot), you can download the current hotfixes and use them &lt;i&gt;at your own risk&lt;/i&gt;. It is important to note that the fixes are not fully tested, so mishaps can happen. Nonetheless, I think it is good to have the fixes available to all developers.&lt;/p&gt;</description>
      <pubDate>Wed, 13 Dec 2006 15:13:01 GMT</pubDate>
      <guid>8326255a-5822-4477-93f4-ae5e037bac16</guid>
    </item>
    <item>
      <title>Windows Photo Gallery database backups, how to do it</title>
      <link>http://www.microsoft.com/windowsvista/features/forhome/gallery.mspx</link>
      <description>&lt;p&gt;Windows Vista comes with a neat and slick little application called the Windows Photo Gallery, which is an utility aimed for showing and organizing your digital photos based on EXIF metadata and keyword or tags.&lt;/p&gt;

&lt;p&gt;Now, I have about 10,000 photos only with my year-old DSLR (which isn't a lot, even) and organizing them can be difficult. I'm thinking of using Vista's Photo Gallery (WPG) for this task, but them again I'm always worried about backups. So I did a little investigation, and found our that WPG stores its settings in the following path:&lt;/p&gt;

&lt;pre&gt;
C:\Users\Jani Järvinen\AppData\Local\
Microsoft\Windows Photo Gallery
&lt;/pre&gt;

&lt;p&gt;This directory contains two files: NavTree.state and Pictures.pd4. These files are both binary, and I don't know what kind of database files they are, but it seems that if you take backups of these files (and of course of your photos!) *and* the locations of the photos, you should be fine. Disclaimer: I haven't yet tested if this really works as I expect it to work.&lt;/p&gt;</description>
      <pubDate>Tue, 12 Dec 2006 17:31:10 GMT</pubDate>
      <guid>a2d8bd93-a001-482b-a7eb-9c2cd1e22a9b</guid>
    </item>
    <item>
      <title>Use Visual Studio's Code Definition Window to your advantage</title>
      <link>http://msdn2.microsoft.com/en-us/library/f5yx24a6(VS.80).aspx</link>
      <description>&lt;p&gt;When I'm developing C# code with Visual Studio 2005, I find the "Go To Definition" command very handy. By right clicking a symbol in the code editor, and then choosing "Go To Definition" from the popup menu, I can see the source code file (and line) where the symbol is defined:&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_dec_vs2005_code_definition_menu.png"&gt;&lt;/p&gt;

&lt;p&gt;Or, in the case of a .NET framework symbol, such as the EventArgs class, Visual Studio displays a read-only representation of the original source code, generated from metadata:&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_dec_vs2005_code_definition_metadata.png"&gt;&lt;/p&gt;

&lt;p&gt;This command is useful, but there's more especially if you find yourself using the Go To Definition command often. By selecting the View/Code Definition Window command, you can open up a window, which updates it's contents while you move your editor cursor or navigate your code. A very useful window indeed.&lt;/p&gt;</description>
      <pubDate>Mon, 11 Dec 2006 15:46:26 GMT</pubDate>
      <guid>b0c752e5-f539-4e8f-90b8-f6a5a9c6a43f</guid>
    </item>
    <item>
      <title>Elevating EXEs in Windows Vista with UAC on</title>
      <link>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shellexecute.asp</link>
      <description>&lt;p&gt;Windows Vista gives you two options for elevation: you can either start another process (EXE) with elevated rights ("admin rights") or you can invoke a COM object with a so-called elevation moniker. Now, sometimes you just want to launch a process elevated, the same way as you can right-click for instance a shortcut on Vista, and select "Run as Administrator" from the popup menu. But how would you do the same programmatically?&lt;/p&gt;

&lt;p&gt;The answer is the familiar ShellExecute API function, which supports certain &lt;i&gt;verbs&lt;/i&gt;, such as "open", "print" and "find". With Vista, it also supports a new verb called "runas", which is precisely what you need. If you use the "runas" verb, the screen will go blank, and the user is prompted for his or her concent for the operation. You cannot programmatically override or skip this step, it is how Vista works. Similarly, you cannot use CreateProcess API for this task. Here's an example code with C#:&lt;/p&gt;

&lt;pre&gt;
using System.Runtime.InteropServices;
...
public const int SW_SHOWNORMAL = 1;     
[DllImport("shell32.dll")]
static extern IntPtr ShellExecute(
  IntPtr hwnd,
  string lpOperation,
  string lpFile,
  string lpParameters,
  string lpDirectory,
  int nShowCmd);
...
private void launchNotepadButton_Click(object sender, EventArgs e)
{
  ShellExecute(this.Handle, "runas", "notepad.exe", "", "", SW_SHOWNORMAL);
}
&lt;/pre&gt;

&lt;p&gt;In this example, Notepad is launched, but of course the process could be any process you lile. Note also that the MSDN documentation of ShellExecute is not yet up to date, but will soon be.&lt;/p&gt;</description>
      <pubDate>Sat, 09 Dec 2006 13:44:23 GMT</pubDate>
      <guid>cf2eff4e-513a-4a4c-8ebc-9ed368542ab7</guid>
    </item>
    <item>
      <title>Office Open XML file format now an ECMA standard</title>
      <link>http://www.eweek.com/article2/0,1759,2069960,00.asp</link>
      <description>&lt;p&gt;This is a good day to all Office users: Microsoft's de-facto standard for business document creation has now an ECMA standard for the company's latest Office 2007 XML based file formats. I've heard that only IBM voted against the approval, but somehow I wasn't surprised. An ISO standard is also in the works.&lt;/p&gt;

&lt;p&gt;As for us developers, this means that it will be easier from now on to sell solutions that use Word documents and Excel spreadsheets as a document format/store. And for users, probably we can now stop converting those documents to PDF (or PDF/A) because we were afraid that those documents couldn't be opened in 25 years. The sad thing of course is that you will need to get Office 2007, but after five to ten years from now, probably most everybody (in business, at least) is using the new XML based file formats. Congrats, Office team!&lt;/p&gt;</description>
      <pubDate>Fri, 08 Dec 2006 04:55:48 GMT</pubDate>
      <guid>97efb119-ea93-4b69-a33e-08817d5f6dbb</guid>
    </item>
    <item>
      <title>Delphi IDE keyboard shortcut tips</title>
      <link>http://bdn.borland.com/article/33805</link>
      <description>&lt;p&gt;Delphi 2006 (or, Borland Developer Studio a.k.a. BDS) has tons of useful keyboard shortcuts, but not everybody master them all. BDN has published a list of useful, but less know keyboard shortcuts. Of these, I found &lt;kbd&gt;Ctrl+Alt+F12&lt;/kbd&gt; a new one to me. Which ones are new to you?&lt;/p&gt;</description>
      <pubDate>Tue, 05 Dec 2006 14:59:55 GMT</pubDate>
      <guid>1a6bff4f-9000-45be-81ce-a307cf1cba2f</guid>
    </item>
    <item>
      <title>An under-the-hood view to x64 development</title>
      <link>http://msdn.microsoft.com/msdnmag/issues/06/05/x64/default.aspx</link>
      <description>&lt;p&gt;When I two days ago reported about a rather light Intel FAQ, today I had the time to enjoy Matt Pietrek's x64 development article on MSDN Magazine. The article is originally from May, but somehow this has slipped me until now.&lt;/p&gt;

&lt;p&gt;Even though you are a C# managed code developer, this article is worth some study. It is always a pleasure to read Matt's texts.&lt;/p&gt;</description>
      <pubDate>Sun, 03 Dec 2006 15:21:20 GMT</pubDate>
      <guid>86787601-a096-4712-a5d3-2b097da1fbb1</guid>
    </item>
    <item>
      <title>A light but useful virtualization FAQ from Intel</title>
      <link>http://www.intel.com/cd/ids/developer/asmo-na/eng/recent/223724.htm</link>
      <description>&lt;p&gt;I noticed that Intel had posted a five-page FAQ about virtualization. The questions and answers are quite light from technical perspective, but nonetheless I found the FAQ worth browsing through. Maybe you do, too.&lt;/p&gt;</description>
      <pubDate>Fri, 01 Dec 2006 15:07:06 GMT</pubDate>
      <guid>12f233ad-0bf2-439a-a7ea-e3f26d53d943</guid>
    </item>
    <item>
      <title>Software development anti-patterns, not good for you</title>
      <link>http://en.wikipedia.org/wiki/Anti-patterns</link>
      <description>&lt;p&gt;The Gang of Four brought us &lt;i&gt;design patterns&lt;/i&gt; which are those familiar, (to some of us, anyway) time-tested building blocks of software applications. However, not all patterns are simply good, in which they are called anti-patterns or, in common language, pitfalls.&lt;/p&gt;

&lt;p&gt;I noticed that ever-expanding Wikipedia has a great link list to many project management, design, programming and organizational anti-patterns. Recommended reading.&lt;/p&gt;</description>
      <pubDate>Thu, 30 Nov 2006 14:52:00 GMT</pubDate>
      <guid>260265ea-e3f1-4419-96dd-267a6d95ad31</guid>
    </item>
    <item>
      <title>A good Visual Studio Team Foundation brancing/merging concept primer</title>
      <link>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/branchmerge.asp</link>
      <description>&lt;p&gt;I today noted on MSDN a nice verson control brancing/merging primer written with the Visual Studio 2005 Team Foundation Server in mind. Recommended reading if the version control concepts and/or Visual Studio Team System is new to you.&lt;/p&gt;</description>
      <pubDate>Tue, 28 Nov 2006 14:58:16 GMT</pubDate>
      <guid>dfc03652-a7ae-4c76-bd80-46a5af594fe3</guid>
    </item>
    <item>
      <title>Tracepoints in Visual Studio 2005</title>
      <link>http://msdn2.microsoft.com/en-us/library/ktf38f66(VS.80).aspx</link>
      <description>&lt;p&gt;If you are using Visual Studio 2005, you might have noticed that many features are enhanced and improved compared to the previous versions. Once example is debugging and especially breakpoints. With VS 2005, breakpoints don't necessary need to &lt;i&gt;break&lt;/i&gt; anymore, instead you can convert them to useful tracepoints, which can for example log information about current method, thread ID/name, variable values, etc. without stopping the execution of your C# application.&lt;/p&gt;

&lt;p&gt;To enable tracepoints, first add a regular breakpoint, right-click the red round button on the code editor margin, and select When Hit:&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_nov_vs2005_tracepoints.png"&gt;&lt;/p&gt;

&lt;p&gt;When you add a message to be printed into the dialog box that opens &lt;i&gt;and&lt;/i&gt; you have the "Continue exection" checkbox checked, you have effectively created a tracepoint (a "non-breaking breakpoint"). Note how the red round button now becomes a red diamond. Tracepoints can be very useful ad-hoc debugging aids, when you don't want to write code to do logging. Use them.&lt;/p&gt;</description>
      <pubDate>Sun, 26 Nov 2006 16:12:16 GMT</pubDate>
      <guid>f05b97d1-7963-4a08-823b-61c3b5107a87</guid>
    </item>
    <item>
      <title>The Delphi Magazine to stop</title>
      <link>http://www.thedelphimagazine.com/subscrib.php</link>
      <description>&lt;p&gt;After Borland's announcement to spin-off IDE tools like Delphi and JBuilder (and InterBase) to a new company called CodeGear, some people have seen this a rather negative end result to the month-long struggle to find a buyer. Although I share the view to certain extent, it is sad to learn that The Delphi Magazine (TDM) has decided to stop monthly publishing. TDM was the only magazine available that was devoted to Delphi, and just like the declining user base of Delphi, TDM saw the same trend in subscriptions, too.&lt;/p&gt;

&lt;p&gt;However, although sad news, all good things come to an end at some point. I want to thank TDM for the good years and excellent content, I've learned a lot about Delphi from the other authors. And those who are looking forward to my Vista article, yes, it is coming. The final issue of TDM will be the March, 2007 issue.&lt;/p&gt;</description>
      <pubDate>Fri, 24 Nov 2006 14:37:14 GMT</pubDate>
      <guid>bdb896e9-2945-4cc0-a06e-3366b9abc263</guid>
    </item>
    <item>
      <title>Get inside your EXEs and DLLs with Resource Hacker</title>
      <link>http://www.angusj.com/resourcehacker/rh_shot.html</link>
      <description>&lt;p&gt;Sometimes, you need a way to see what's inside the resource section of a Windows EXE or DLL file. The problem is that there aren't good tools available for this job, or at least so I thought.&lt;/p&gt;

&lt;p&gt;Previously, I had always used (since abandoning 16-bit development, that is) the ResXplor.exe utility, a sample application that comes with Borland/CodeGear Delphi. It is a nifty tool, but it's not very powerful and doesn't always get the job done. But so far, I've survived. However, I learned today that a better alternative is also available, and it is called Resource Hacker. Looks very good, so go and download your copy today. It is freeware also.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 23 Nov 2006 18:36:05 GMT</pubDate>
      <guid>649e7739-f7bd-4f2a-bc4e-0991d1aa5cb3</guid>
    </item>
    <item>
      <title>I need a 20 GB USB stick</title>
      <link>http://www.nextag.com/20gb-usb_-_stick/search-html</link>
      <description>&lt;p&gt;Now that I've had the chance to install Vista and Office 2007 onto several virtual machine instances (mostly under VMware Workstation), I can see that the virtual images truly take quite a lot of disk space.&lt;/p&gt;

&lt;p&gt;A basic virtual image of a Windows Vista Ultimate installation takes about 6 gigabytes of disk space, and about 2.8 GB in zipped format. Install Office 2007 on top of that, and you end with about a 12 GB virtual image, which zips back to little less than 6 GB. Wow. A DVD isn't enough anymore, nor are any of my USB sticks. How much did a 20 GB USB stick cost, again?&lt;/p&gt;</description>
      <pubDate>Wed, 22 Nov 2006 14:58:47 GMT</pubDate>
      <guid>9e8f772c-0781-428c-abea-17d7c0ecf0ee</guid>
    </item>
    <item>
      <title>Martin Fowler's take on Continuous Integration</title>
      <link>http://martinfowler.com/articles/continuousIntegration.html</link>
      <description>&lt;p&gt;Martin Fowler, the man behind important software development ideas such as patterns, refactoring, UML and Extreme Programming (XP), isn't slowing down. Instead, he's recently written an article about what he calls "Continuous Integration", or CI for short.&lt;/p&gt;

&lt;p&gt;No, I'm not referring to a certain &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/ConIntTmFndBld.asp"&gt;plug-in&lt;/a&gt; to Visual Studio Team Foundation Server, but instead of a software development methodology that helps development team communicate and integrate their code faster. Indeed, this a continuation to Fowler's agile development, and thus interesting reading if agile methods and for example XP are of interest to you.&lt;/p&gt;</description>
      <pubDate>Tue, 21 Nov 2006 05:06:42 GMT</pubDate>
      <guid>236ec4e9-4df1-4647-9038-dbf20a1fca2e</guid>
    </item>
    <item>
      <title>Windows Vista available on MSDN!</title>
      <link>http://msdn2.microsoft.com/en-us/subscriptions/default.aspx</link>
      <description>&lt;p&gt;Finally, the thing I've been waiting for: final Windows Vista bits are now available on MSDN. And, the SDK kit is also available &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7614fe22-8a64-4dfb-aa0c-db53035f40a0&amp;DisplayLang=en"&gt;here&lt;/a&gt;. And then there's Office 2007, too. The bits are flowing as I write. :-)&lt;/p&gt;</description>
      <pubDate>Fri, 17 Nov 2006 16:39:10 GMT</pubDate>
      <guid>5df99a3e-8f4a-4c87-8ca6-81d91e59c86e</guid>
    </item>
    <item>
      <title>Borland spins off CodeGear</title>
      <link>http://bdn.borland.com/article/33819</link>
      <description>&lt;p&gt;Finally news from Borland: they have decided to spin off the Developer Tools Group (DTG) as a separate company called &lt;a href="http://www.codegear.com/"&gt;CodeGear&lt;/a&gt; instead of selling the business unit. Of course, the non-technical Delphi newsgroup is full of discussion whether this is good or bad and whether there will be enough cash to do what the DTG has so loudly anticipated to do. As for myself, I think a totally new owner would have probably been a better bet if chosen right, but then again a spin off sounds to me a less risky venture.&lt;/p&gt;

&lt;p&gt;Now, what CodeGear needs to do is get some real action going fast. I need support for Vista, .NET 2.0/3.0 and mobile platforms. I hope Highlander will live up to its promise. Time is CodeGear's worst enemy.&lt;/p&gt;</description>
      <pubDate>Wed, 15 Nov 2006 04:47:31 GMT</pubDate>
      <guid>75d4003b-1cbf-420c-bc5a-cf2a9b5ab904</guid>
    </item>
    <item>
      <title>A web forum for Finnish software developers</title>
      <link>http://itpro.fi/Pages/Default.aspx</link>
      <description>&lt;p&gt;I'm happy to announce a new web forum for Finnish, professional IT people: ITpro.fi. There are dozens and dozens of web forums available on the Internet, and I'm generally somewhat skeptical when it comes to launching new ones. However, as I know the excellent team and other MVPs behind this new forum, I firmly believe there's lots of potential with the site. And, before this, there were no Finnish forums for professional IT people. Now there is one.&lt;/p&gt;

&lt;p&gt;And for us developers, what's even better is that I've managed to introduce a forum specifically for software developers on ITpro.fi. So you you are a Finnish software developer, you are warmly welcome to discuss, learn and share your knowledge on ITpro.fi. I'm myself leading this new software development group ("Ohjelmistokehitys" as it goes in Finnish), so if you are interested in sharing your skills with the audience, do let me know. Thanks!&lt;/p&gt;</description>
      <pubDate>Tue, 14 Nov 2006 16:07:13 GMT</pubDate>
      <guid>de15f078-372f-4f80-90da-7b94eb1da236</guid>
    </item>
    <item>
      <title>How to do Vista privilege elevation</title>
      <link>http://channel9.msdn.com/Showpost.aspx?postid=209647</link>
      <description>&lt;p&gt;MSDN's Channel 9 has a great video (or, "screencast") that shows how to elevate privileges in your Vista applications. Note the Full Screen link on the web page, which allows you to actually &lt;i&gt;see&lt;/i&gt; the video instead of a stamp-sized bitblt.&lt;/p&gt;</description>
      <pubDate>Mon, 13 Nov 2006 15:01:04 GMT</pubDate>
      <guid>a1761033-6456-4b8a-a137-1ca1d0f6772c</guid>
    </item>
    <item>
      <title>How to detect if you are running as admin in Vista?</title>
      <link>http://support.microsoft.com/kb/118626</link>
      <description>&lt;p&gt;If you are developing Win32 applications for Windows Vista, you will quickly notice that even though your user account is part of the Administrators group, but default you are just a normal user. This is the workings of &lt;a href="http://msdn.microsoft.com/windowsvista/prodinfo/what/security/default.aspx"&gt;UAC&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I used to have code that was able to determine if the current user is an administrator, but now with Windows Vista this doesn't work anymore. This is because for example solutions given &lt;a href="http://bdn.borland.com/article/26752"&gt;here&lt;/a&gt; depend on checking whether the current user belongs to the Administrators group. This used to work up to Windows XP, but not in Vista. Luckily, there's a Microsoft KB article 118626 that details a working solution in C/C++. If you are using Delphi, I'm currently working on an article that shares the Delphi code for this. Stay tuned.&lt;/p&gt;</description>
      <pubDate>Sat, 11 Nov 2006 11:57:48 GMT</pubDate>
      <guid>7561c247-e671-4870-b7c5-f484477dc31f</guid>
    </item>
    <item>
      <title>Process Monitor available from Microsoft's SysInternals unit</title>
      <link>http://www.microsoft.com/technet/sysinternals/processesandthreads/processmonitor.mspx</link>
      <description>&lt;p&gt;When Microsoft bought Winternals/SysInternals (and, should I say, &lt;a href="http://blogs.technet.com/MarkRussinovich/"&gt;Mark Russinovich&lt;/a&gt;) I thought exciting thing could happen. Now, I've used FileMon and RegMon for years to track down difficult software installation, security and development problems, and now these two utilities have merged into one utility called Process Monitor. Currently, the version is 1.01, but I expect progress in the former pace. It's now time to upgrade FileMon and RegMon to Process Monitor.&lt;/p&gt;</description>
      <pubDate>Fri, 10 Nov 2006 14:24:31 GMT</pubDate>
      <guid>29147757-2923-45d6-b3f2-5faef5d4abba</guid>
    </item>
    <item>
      <title>Windows Vista released to manufacturing</title>
      <link>http://www.microsoft.com/presspass/features/2006/nov06/11-08VistaRTM.mspx</link>
      <description>&lt;p&gt;It's official: Windows Vista is now ready (RTM). Congrats to Microsoft for the milestone! Next, we will see the 2007 Office System products roll out. I'm anxious to get my hands on the final bits on MSDN.&lt;/p&gt;</description>
      <pubDate>Wed, 08 Nov 2006 19:28:17 GMT</pubDate>
      <guid>8eb14510-4128-4c67-a39c-897027f8b718</guid>
    </item>
    <item>
      <title>Microsoft .NET Framework 3.0 is ready</title>
      <link>http://www.microsoft.com/presspass/press/2006/nov06/11-06MSVisualStudioPR.mspx</link>
      <description>&lt;p&gt;Microsoft has today announced the availability of the .NET Framework 3.0 libraries and the run-time. The free Redistributable Package is available from Microsoft's &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=10cc340b-f857-4a14-83f5-25634c3bf043&amp;displaylang=en"&gt;Download area&lt;/a&gt;. The .NET 3.0 framework (previously called WinFX) is an interesting set of new functionality for managed code developers, for example those using C#.&lt;/p&gt;

&lt;p&gt;.NET 3.0 includes the Windows Presentation Foundation, Windows Communication Foundation, Windows Workflow Foundation, and Windows CardSpace technologies. Thank you Microsoft for taking the .NET platform forward!&lt;/p&gt;</description>
      <pubDate>Mon, 06 Nov 2006 17:56:15 GMT</pubDate>
      <guid>27a5d551-8fae-4909-8737-febfe8043d70</guid>
    </item>
    <item>
      <title>Turbo Delphi Explorer fails to install on Vista RC 2</title>
      <link>http://www.microsoft.com/windowsvista/</link>
      <description>&lt;p&gt;I spent few hours today trying to install Borland Turbo Delphi Win32 into my Windows Vista RC 2 (build 5744), but I couldn't install the product because the installer runs into trouble with access rights to certain directories, which it however won't disclose. If you try to retry the operation, an internal error is raised. I give up; it's sloppy installation program authoring. But it just shows that developers need to pay attention to security.&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_nov_turbo_delphi_install_error.png"&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 04 Nov 2006 18:03:26 GMT</pubDate>
      <guid>4c09f234-342d-49a9-b8b6-be6c8089b839</guid>
    </item>
    <item>
      <title>Solving the Delphi 2006 web service application compilation issue</title>
      <link>http://qc.borland.com/wc/qcmain.aspx</link>
      <description>&lt;p&gt;If you are using Borland Developer Studio 2006 (aka Delphi 2006) and your want to quickly build a web service application in Win32 using the Web App Debugger (File/New/Other, then Delphi Projects/WebServices, SOAP Server Application), you might run into trouble if you installed your Delphi with the Indy 10 components. The reason for this trouble is that the library code that hosts your web service was written for Indy 9, and isn't fully compatible with Indy 10. So when you first try to compile your web service application, you might run into the following error message:&lt;/p&gt;

&lt;pre&gt;[Pascal Fatal Error] Project1.dpr(11): F2051 Unit SockApp was
compiled with a different version of IdTCPServer.TIdTCPServer.
&lt;/pre&gt;

&lt;p&gt;Although this can sound scary, this error is actually easy to fix: all you need to change is your Delphi's Library Path. This can be done by choosing Tools/Options, and then going to the Environment Options/Delphi Options/Library - Win32 tree. Here, you have the "Library path" setting which you need to edit so that it doesn't contain "$(BDS)\Lib\Indy9" but instead "$(BDS)\Lib\Indy10". That is, all you need to change is the nine to a ten. So the full, working &lt;b&gt;default&lt;/b&gt; library path would be (all in one line, of course):&lt;/p&gt;

&lt;pre&gt;$(BDS)\lib;$(BDS)\Imports;$(BDS)\Lib\Indy9;
C:\Program Files\Borland\BDS\4.0\RaveReports\Lib
&lt;/pre&gt;

&lt;p&gt;For your information, the issue is already in QualityCentral, and is probably fixed in Delphi 2007 i.e. "Highlander".&lt;/p&gt;</description>
      <pubDate>Thu, 02 Nov 2006 16:28:46 GMT</pubDate>
      <guid>6ed787ec-da67-464c-85ba-b72301b8f556</guid>
    </item>
    <item>
      <title>My new article in The Delphi Magazine</title>
      <link>http://www.thedelphimagazine.com/</link>
      <description>&lt;p&gt;The November 2006 issue of The Delphi Magazine has my latest article about the Windows Installer (MSI) technology. If you want to learn what Windows Installer is, how it works and how you can program for the MSI API with Delphi, grab your copy of the issue 135. The article is titled "Windows Installer Under The Hood."&lt;/p&gt;</description>
      <pubDate>Thu, 02 Nov 2006 15:40:16 GMT</pubDate>
      <guid>8c90f9a3-d83c-407c-97af-31fbb213ff08</guid>
    </item>
    <item>
      <title>E-mail behavior: the top 3 of how NOT to do it</title>
      <link>
      </link>
      <description>&lt;p&gt;As a professional IT/developer kind of guy, e-mail is my main communication method with many people and customers. Generally speaking, people tend to use e-mail properly and efficiently, but nonetheless there are certain irritating habits that repeat themselves all over again and make me see red. Here's my top three:&lt;/p&gt;

&lt;p&gt;1. Improper subject line. I get way too many e-mails with the subject saying "Hi!", "Offer" or "Web App". The subject line is (surpise!) about the subject of your message. Instead of "Offer", try something more descriptive like "Offer about C# ASP.NET web application development". Works wonders!&lt;/p&gt;

&lt;p&gt;2. People who sign all their mails with just "John" or "Joanna" or "Paul". That's fine if you're a friend of mine or a relative, but if we've never met and it's a business e-mail you are sending, I would expect at least your full name, company name, maybe your address and most importantly your phone number. E-mail doesn't always work, and I need an alternative communication method. Besides, some things are simply easier to discuss over the phone. Of course, you don't need to repeat your full contact details in each reply, but at least your initial message should contain the full contact details.&lt;/p&gt;

&lt;p&gt;3. Excessive (HTML) formatting and (re)sending of attachments. Plain ASCII mail does the stuff just fine for me, takes less bandwith and is more secure. In 95% of the cases, there is no real need to decorate your messages will all those fancy colors and moving GIFs. And what even worse, mail filters just think those mails are probably spam. Also, when I send you an 800K attachment and you politely reply that you got it, please don't again include the attachment in your reply.
&lt;/p&gt;</description>
      <pubDate>Wed, 01 Nov 2006 09:47:49 GMT</pubDate>
      <guid>4c31a1ff-c671-4727-ac6b-d17e0c5690f5</guid>
    </item>
    <item>
      <title>Borland runs a Delphi 2006 developer survey, take part!</title>
      <link>http://infopoll.net/live/surveys/s30110.htm</link>
      <description>&lt;p&gt;Borland has announced a developer survey for the year, and this time it is for Delphi developers. Your participation is warmly welcome, because not it is time to affect Borland's (and DTG's) future direction with Delphi.&lt;/p&gt;</description>
      <pubDate>Mon, 30 Oct 2006 14:50:50 GMT</pubDate>
      <guid>9b96833c-f556-4c5b-908a-49a8bfcfcb24</guid>
    </item>
    <item>
      <title>It's getting cold: garage time!</title>
      <link>
      </link>
      <description>&lt;p&gt;Just for my future records: this year, it was late October that I had to ride my bike to the garage to wait for the warmer spring season. It's not yet snow on the ground, but since next week looks like it's going to be cold, there aren't probably going to be any rideable evenings anymore, so it's time to close the season and return to car-only driving.&lt;/p&gt;</description>
      <pubDate>Sat, 28 Oct 2006 13:46:26 GMT</pubDate>
      <guid>a1f03bcb-e207-4129-b5aa-7e9b0d9633cd</guid>
    </item>
    <item>
      <title>Getting information about the system in .NET</title>
      <link>http://msdn2.microsoft.com/en-us/library/system.windows.forms.systeminformation.aspx</link>
      <description>&lt;p&gt;If you have programmed .NET with C# or Delphi, the chances are you have had the need to get information about the operating system that your application runs on. Depending on the information you are looking for, there are several classes in .NET BCL that help you get the information you need. For basic information, there's the System.Environment class. However, if you are interested in information about the Windows user interface and graphics setup, such as screen size, number of mouse buttons, and so on, you can use the System.Windows.Forms.SystemInformation class.&lt;/p&gt;

&lt;p&gt;This class has over 100 properties that you will find especially useful in WinForms programming. This is the reason this class is part of the System.Windows.Forms namespace. However, it is worth noting that some of the properties duplicate functionality in the System.Environment class. From this perspective the differentiation between "WinForms useful information" and "generally useful information" isn't clear, but the idea is that if you choose to use the SystemInformation class, you can get most of the information you need from one place.&lt;/p&gt;</description>
      <pubDate>Sat, 28 Oct 2006 07:25:44 GMT</pubDate>
      <guid>aca74dca-683b-44e7-8672-7655af863717</guid>
    </item>
    <item>
      <title>Meeting with the Finnish MVPs and IT pros in Nuuksio</title>
      <link>http://itpro.fi/Pages/Default.aspx</link>
      <description>&lt;p&gt;I had the chance to attend the Finnish MVP meeting yesterday in Nuuksio. I was once again fun and informative to meet other MVPs and community activists. Microsoft also demonstrated us a new portal for IT professionals called &lt;a href="http://itpro.fi/Pages/Default.aspx"&gt;ITPro.fi&lt;/a&gt;. It is currently geared towards IT professionals and not software developers per se, but I'll see what I can do about it.&lt;/p&gt;</description>
      <pubDate>Fri, 27 Oct 2006 19:44:32 GMT</pubDate>
      <guid>921c31a4-f68e-4432-946e-f73d568198cd</guid>
    </item>
    <item>
      <title>Correction about Virtual PCs .ISO image support</title>
      <link>
      </link>
      <description>&lt;p&gt;I wrote on Saturday that Virtual PC doesn't support .ISO images for DVDs, only for CD-ROMs. I found out today that I was mistaken; Virtual PC indeed does support DVD .ISO images.&lt;/p&gt;

&lt;p&gt;So when I previously tried to use DVD .ISO images, they had to be either corrupted, or, there's some kind of limitation within Virtual PC that doesn't like very large files inside .ISO images. If you know the answer, let me know, as I probably don't have the time to investigate the issue since I still use VMware primarly.&lt;/p&gt;</description>
      <pubDate>Wed, 25 Oct 2006 13:37:54 GMT</pubDate>
      <guid>4acdc75d-b249-4dc8-aebc-cb631e4d0ce1</guid>
    </item>
    <item>
      <title>A new type of SQL attack surfaces, beware!</title>
      <link>http://msdn.microsoft.com/msdnmag/issues/06/11/SQLSecurity/default.aspx</link>
      <description>&lt;p&gt;I read with great interest from the latest MSDN Magazine article about a new type of (to me, at least) SQL attack that is similar to the famous SQL injection attack. This time, it is about using the single quote characters ' in input strings. So if you are using Microsoft SQL Server as your database, or other databases that do similar things with quotes that SQL Server does, be sure to read this article, and check out your code.&lt;/p&gt;</description>
      <pubDate>Mon, 23 Oct 2006 15:06:22 GMT</pubDate>
      <guid>e75631c5-5ff2-468b-bd61-5a7e4dac7398</guid>
    </item>
    <item>
      <title>A solution to Vista RC 2 install error</title>
      <link>http://download.microsoft.com/download/7/b/6/7b6abd84-7841-4978-96f5-bd58df02efa2/winxpvirtualcdcontrolpanel_21.exe</link>
      <description>&lt;p&gt;Last week, I tried installing Windows Vista RC 2 to my PC, but it failed under VMware Workstation because of a missing CD/DVD driver, or at least so the error message said. Today I had more time to test, and I found a solution to my problem by using Microsoft Virtual PC 2004 (now free) instead.&lt;/p&gt;

&lt;p&gt;However, even using Virtual PC didn't directly solve the problem, but I got around the problem and wanted to share my findings. Firstly, I had downloaded the Vista RC 2 .ISO image from MSDN, and since (unlike VMware) Virtual PC doesn't support using DVD .ISO images directly, I had to burn the .ISO image to a DVD+RW disc. Then, I fired up a Virtual PC virtual machine, only to find out that Vista failed to install:&lt;/p&gt;

&lt;pre&gt;
Windows cannot open the required file D:\Sources\Install.wim. The file may be corrupt
or missing. Make sure all files required for installation are available, and
restart the installation. Error code: 0x80070570.
&lt;/pre&gt;

&lt;p&gt;Oh well! My first thought was that I would either have a corrupted .ISO image download, or a corrupted DVD burn. The latter seemed more likely, so I reburned the DVD, but that didn't help. Since I didn't want to wait another 8 hours to download the .ISO image again, I instead went browsing for the error message on TechNet forums, and found that there's a nifty little utility called "Virtual CD-ROM", a freebie written by Microsoft, and only 32 KB in size.&lt;/p&gt;

&lt;p&gt;Now, this tool does what it promises. It's a bit obscure to use, but you get a ReadMe file with the instructions. The files you need are (in addition to the instructions, that is) VCdControlTool.exe and VCdRom.sys. These very small files (the device driver is only 9 KB!) are downloadable from &lt;a href="http://download.microsoft.com/download/7/b/6/7b6abd84-7841-4978-96f5-bd58df02efa2/winxpvirtualcdcontrolpanel_21.exe"&gt;Microsoft's web site&lt;/a&gt;. I don't know if there's a link available that isn't directly to the EXE file, and the only place on Microsoft's web site I could find a reference to this utility was in the &lt;a href="http://support.microsoft.com/kb/916902"&gt;KB article 916902&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now, by downloading this utility and following the instructions (the utility isn't something what I would call really easy), I could mount a virtual CD drive from my MSDN .ISO image, and then use that as the physical CD/DVD drive for Virtual PC. And suddenly, I could easily install Vista Release Candidate 2. Rock on!&lt;/p&gt;</description>
      <pubDate>Sat, 21 Oct 2006 08:31:29 GMT</pubDate>
      <guid>16d00da7-3141-4c65-bee0-129cbbaad819</guid>
    </item>
    <item>
      <title>Column in Prosessori magazine</title>
      <link>http://www.prosessori.fi/</link>
      <description>&lt;p&gt;The Finnish Prosessori magazine has published my column about Borland's future in their "Vieraskynä" section.&lt;/p&gt;</description>
      <pubDate>Fri, 20 Oct 2006 15:57:26 GMT</pubDate>
      <guid>b0cc190a-0212-443b-a61d-2a9b43adb52e</guid>
    </item>
    <item>
      <title>Internet Explorer 7 is here</title>
      <link>http://www.microsoft.com/windows/ie/default.mspx</link>
      <description>&lt;p&gt;Seven. Why, I didn't even think one would need so many version of a seemingly simple piece of software, a web browser. Well, today a web browser is much more than an HTML visualizer, it is an personal information processing solution and a highly programmable platform for running applications.&lt;/p&gt;

&lt;p&gt;So the news is out: IE 7 is now ready to be downloaded for your Windows XP SP2 system. eWeek has a &lt;a href="http://www.eweek.com/article2/0,1759,2033704,00.asp"&gt;review here&lt;/a&gt;. Tabs, better security, RSS support and slicker user interface are here for you to enjoy!&lt;/p&gt;</description>
      <pubDate>Wed, 18 Oct 2006 14:22:38 GMT</pubDate>
      <guid>761e93fa-9daa-4566-834e-2734c57225f8</guid>
    </item>
    <item>
      <title>Vista UAC architecture information</title>
      <link>http://msdn.microsoft.com/windowsvista/reference/default.aspx?pull=/library/en-us/dnlong/html/wvduac.asp</link>
      <description>&lt;p&gt;To me, Windows Vista's User Account Control (UAC) is still something I cannot say I'd fully master. For this reason it's important that Microsoft publishes the details about this technology that soon (in few year's time, anyway) affects most of us. As part of the Vista Developer Story, there's an article titled "Windows Vista Application Development Requirements for User Account Control". Highly recommended reading for any Win32 or .NET developer!&lt;/p&gt;</description>
      <pubDate>Mon, 16 Oct 2006 14:12:06 GMT</pubDate>
      <guid>f0801c8c-1e1d-4e43-b385-4f39f3539c6a</guid>
    </item>
    <item>
      <title>Vista RC 2 fails to install on my PC :-(</title>
      <link>http://www.microsoft.com/windowsvista/</link>
      <description>&lt;p&gt;Just when I wanted to test the newly-downloaded Windows Vista Release Candidate 2 (build 5744) on my VMware Workstation, I noticed it failed to install. :-( The problem is a missing CD/DVD driver which sounds a bit odd in my opinion, but that's what Vista keeps telling me:&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_oct_vista_rc2_install_problem.png"&gt;&lt;/p&gt;

&lt;p&gt;"A required CD/DVD drive device driver is missing." Hopefully, the RTM version will work better. Until then, I'm going to stick to my RC 1 version.&lt;/p&gt;</description>
      <pubDate>Sun, 15 Oct 2006 05:22:49 GMT</pubDate>
      <guid>85501236-53e9-4623-b3a8-463d685febef</guid>
    </item>
    <item>
      <title>My Visual Studio tip in CodeZone.fi</title>
      <link>http://www.codezone.fi/Artikkelit_Jani_Jaervinen2.Codezone</link>
      <description>&lt;p&gt;The local Microsoft CodeZone web site has published my latest tip of using the Code Analysis feature in Visual Studio 2005. The article is titled "Automaattinen koodin analysointi" and is obviously in Finnish. Enjoy!&lt;/p&gt;</description>
      <pubDate>Thu, 12 Oct 2006 16:12:22 GMT</pubDate>
      <guid>833f169c-1bfe-44ff-acad-65dd815a0f32</guid>
    </item>
    <item>
      <title>Two new C# FAQ entries available on MSDN</title>
      <link>http://blogs.msdn.com/csharpfaq/</link>
      <description>&lt;p&gt;Two new of my C# FAQ entries are now on-line at the MSDN C# FAQ Blog. This time, the entries are titled "How do I send out simple debug messages to help with my debugging?" and "How do I calculate a MD5 hash from a string?".&lt;/p&gt;

&lt;p&gt;Hope you find the entries useful. Of course, feel free to comment on them on the blog page.&lt;/p&gt;</description>
      <pubDate>Tue, 10 Oct 2006 13:56:11 GMT</pubDate>
      <guid>21733fd0-ded9-4b65-83cd-5196feda9702</guid>
    </item>
    <item>
      <title>.NET development info from Yahoo!</title>
      <link>http://developer.yahoo.com/dotnet/</link>
      <description>&lt;p&gt;Did you know that Yahoo! has it's own .NET developer center at their Developer Network? I didn't, and it's good to see that Yahoo! is helping .NET developers to get forward with their stuff. Often both C# and VB.NET code is given.&lt;/p&gt;

&lt;p&gt;Of special interest to me is their &lt;a href="http://developer.yahoo.com/dotnet/howto-wpf_xaml.html"&gt;topic/sample code&lt;/a&gt; about using Windows Presentation Foundation (WPF, aka Avalon) to access their information. The example given shows how to use a XmlDataProvider to accress one of Yahoo!'s RSS feeds to read information about the current weather, and sunrise/sunset times for the day. Looks good!&lt;/p&gt;

&lt;p&gt;PS. A couple of new photos are available for your enjoyment at my &lt;a href="/janij/photos/"&gt;Photos page&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Sun, 08 Oct 2006 13:45:26 GMT</pubDate>
      <guid>2d2d17a9-8e74-4819-a4d1-1416620e958d</guid>
    </item>
    <item>
      <title>Reading list of users from an Active Directory domain with C#</title>
      <link>http://msdn2.microsoft.com/en-us/library/system.directoryservices.directoryentry.aspx</link>
      <description>&lt;p&gt;I needed to write a simple C# application that reads me the names of user accounts in an Active Directory domain (Windows Server 2003 based domain). The .NET class library contains a whole namespace dedicated to directories: System.DirectoryServices. This namespace contains a class called DirectoryEntry that you can use to read the user accounts in a given organizational unit (OU). Here's the example code:&lt;/p&gt;

&lt;pre&gt;using System.DirectoryServices;

private void ReadActiveDirectory()
{
    string path = "LDAP://OU=ChildOU,OU=TopLevelOU,DC=mycompany,DC=local";
    DirectoryEntry entry = new DirectoryEntry(path);
    foreach (DirectoryEntry child in entry.Children)
    {
        textBox1.Text += child.Name+"\r\n";
    }
}
&lt;/pre&gt;

&lt;p&gt;Here, the most important thing is of course the LDAP "URL", which starts with the string "LDAP://". Note: it is &lt;strong&gt;very important&lt;/strong&gt; that you write the word "LDAP://" with upper-case (capital) letters. If you don't, you will get a binding error at runtime.&lt;/p&gt;

&lt;p&gt;To help you solve this problem, here are the details what happens if you type in for example "ldap://" by accident. The error is:&lt;/p&gt;

&lt;pre&gt;{"Unknown error (0x80005000)"}
{System.Collections.ListDictionaryInternal}
ErrorCode -2147463168
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
&lt;/pre&gt;

&lt;p&gt;In short: don't do it! Other than that, using the Active Directory from .NET is quite simple. And if you are using .NET 2.0 (you should), then you can also utilize the new namespace System.DirectoryServices.ActiveDirectory. Happy ADSI (Active Directory Service Interfaces) programming!&lt;/p&gt;</description>
      <pubDate>Sat, 07 Oct 2006 09:48:00 GMT</pubDate>
      <guid>d12b5cf6-8014-44ff-a076-0333f49c537d</guid>
    </item>
    <item>
      <title>No news is inexcusable for Borland</title>
      <link>http://community.devexpress.com/blogs/ctodx/archive/2006/10/02/351.aspx</link>
      <description>&lt;p&gt;Since Borland announced in February that they are going to spin off their IDE business (including Delphi and InterBase), the Developer Tools Group (DTG) has been busy doing stuff and preparing for the spin-off, but none that energy has gone into informing the current customer base what is happening. Good news have always been available just "next week", but now that it's already October, I'm growing a bit impatient about Borland DTG and their ability to actually deliver what thay say the would.&lt;/p&gt;

&lt;p&gt;But, I'm not the only one complaining. Check out the Borland Usenet newsgroups, or see the &lt;a href="http://community.devexpress.com/blogs/ctodx/archive/2006/10/02/351.aspx"&gt;blog entry&lt;/a&gt; from DevExpress. Or, check the response to &lt;a href="http://blogs.borland.com/NickHodges/archive/2006/10/04/27823.aspx"&gt;latest&lt;/a&gt; Nick Hodges blog post.&lt;/p&gt;

&lt;p&gt;What especially Delphi developers need is a clearly and loudly communicated, official information what the company is doing for it's products (Delphi) and how the spin-off is doing. Customers are looking for .NET 2.0 support (heck, .NET 3.0 is soon here and Borland doesn't even have a Delphi .NET 2.0 beta out), the 64-bit compiler, and support for mobile development (Windows CE/Pocket PC). In this situation, a no-news strategy is inexcusable, if Borland DTG is willing to keep its current customer base. Otherwise, those left will rapidly move to Visual Studio. With the current state of things, I don't think many look back.&lt;/p&gt;

&lt;p&gt;So Borland, get your act together!&lt;/p&gt;</description>
      <pubDate>Thu, 05 Oct 2006 15:11:34 GMT</pubDate>
      <guid>c86ebed3-2c09-4b74-b3a9-28f94cc78ba9</guid>
    </item>
    <item>
      <title>Google Code Search helps you find the source code examples you need</title>
      <link>http://www.extremetech.com/article2/0,1558,2024796,00.asp?kc=ETRSS02129TX1K0000532</link>
      <description>&lt;p&gt;Interesting stuff boiling in Google's labs: eWeek today reports that Google is preparing to launch a search feature called Google Code Search. As the name implies, this search will only look for source code.&lt;/p&gt;</description>
      <pubDate>Thu, 05 Oct 2006 14:04:20 GMT</pubDate>
      <guid>48824a3a-1511-4e89-b826-ca9396300065</guid>
    </item>
    <item>
      <title>Speaking of photography, good DNG vs. Your-RAW-Format comparison</title>
      <link>http://www.openraw.org/node/1482</link>
      <description>&lt;p&gt;Stuart Nixon has written a detailed comparison between Adobe's Digital Negative format (DNG) and camera vendors' native RAW formats, like .CR2 from Canon. The basic message is: "DNG Is Not The Answer". He also gives insight into the file formats themselves, educating reading even if you are just interested in programming. His article appears on the OpenRAW site.&lt;/p&gt;</description>
      <pubDate>Tue, 03 Oct 2006 14:03:14 GMT</pubDate>
      <guid>cd913512-8311-43e7-addf-9c8715e6141e</guid>
    </item>
    <item>
      <title>Lucky me, lenses from B&amp;H arrive on time</title>
      <link>http://www.usa.canon.com/consumer/controller?act=ProductCatIndexAct&amp;fcategoryid=111</link>
      <description>&lt;p&gt;Christmas time again: UPS bought my packet from B&amp;H today. I ordered it on Thrusday evening, so one can't complain about delivery times at all.&lt;/p&gt;

&lt;p&gt;Mr. Postman brought me my Canon EF 17-40mm wide-angle and the EF 100mm macro. Let's see what I can come up with these two black ones.&lt;/p&gt;</description>
      <pubDate>Mon, 02 Oct 2006 16:21:16 GMT</pubDate>
      <guid>d9785960-46d6-43b9-8dea-903ac6d85973</guid>
    </item>
    <item>
      <title>Why too aggressive an antispam filter is bad for you</title>
      <link>http://en.wikipedia.org/wiki/DNSBL</link>
      <description>&lt;p&gt;There probably aren't many people on this planet that would love their daily dose of junk e-mail, although one can just wonder the creativity and efforts of the spammers.&lt;/p&gt;

&lt;p&gt;Now, most everybody has somekind of spam filter in place. But, some people seem to take spam personally, and install an automatic filter that block incoming e-mail at the gateway/mail server. Yeah, that's cool technology, but when you turn the volume up and let the script kiddies (sorry) do the tweaking, that filter can literally kill your business.&lt;/p&gt;

&lt;p&gt;I'd love to write a whole article about such bad filtering methods or the disastrous results, but it is enough to say that think twice before you install such a filter, and most importantly, do know how it works. In business, it is very scary to block e-mails based on reverse DNS rules, certain keywords, or mail header fields to name a few. Sure, no spam will get through, but at the same time, you will stop those orders coming in from customers or important mails from partners. Don't ask me how many time I've seen this happen in real life. Call this my anti-antispam quest, but watch out those free (Linux-based) "100% effective" filters. You've been warned.&lt;/p&gt;</description>
      <pubDate>Mon, 02 Oct 2006 14:17:03 GMT</pubDate>
      <guid>afedda31-5472-48e7-8be0-b5f066b3966c</guid>
    </item>
    <item>
      <title>Checking the recent policy overrides from Team Foundation Server database</title>
      <link>http://msdn.microsoft.com/vstudio/teamsystem/products/tfs/</link>
      <description>&lt;p&gt;If you have Visual Studio 2005 Team Foundation Server (TFS) up and running in your organization (or the "free" Workgroup Edition on your personal development PC as I do), chances are you would like to list all those policy overrides that were done during a check-in operation. Now, there are two routes to this: using the TFS APIs (which are web services) or tinkering with the SQL Server database that TFS uses internally. Since I like SQL, I'd love to share my simple SQL statement for listing the most recent policy overrides. Here you go:&lt;/p&gt;

&lt;pre&gt;SELECT [cs].[CreationDate]
      ,[po].[Comment]
      ,[po].[ChangeSetId]
      ,[id].[DisplayName] as 'The Most Wanted'
FROM   [TfsVersionControl].[dbo].[tbl_PolicyOverride] po
	  ,[TfsVersionControl].[dbo].[tbl_ChangeSet] cs
	  ,[TfsVersionControl].[dbo].[tbl_Identity] id
WHERE ([po].[ChangeSetId] = [cs].[ChangeSetId]) AND
      ([cs].[CommitterID] = [id].[IdentityId])
ORDER BY [cs].[CreationDate] DESC
&lt;/pre&gt;

&lt;p&gt;Of course, this statement will probably break once the next version of TFS comes out, but for version 1.0/2005, this works nicely (and is fast). Good luck!&lt;/p&gt;</description>
      <pubDate>Sun, 01 Oct 2006 17:00:18 GMT</pubDate>
      <guid>0beaf5dd-1137-4aea-8ffe-a8c0e79aac1a</guid>
    </item>
    <item>
      <title>Fixing missing or failing Performance Explorer in Visual Studio 2005</title>
      <link>http://msdn2.microsoft.com/en-us/library/ms241276.aspx</link>
      <description>&lt;p&gt;If you are using Microsoft Visual Studio 2005 and would like to use the &lt;a href="http://msdn.microsoft.com/vstudio/teamsystem/reference/technotes/profiling_windows_apps/perf_explorer.aspx"&gt;Performance Explorer&lt;/a&gt; that is part of the Team Editions (Team Edition for Software Architects or Team Suite), you can open the Explorer by choosing the View/Other Windows/Performance Explorer menu command. However, sometimes this menu command goes missing (disappears altogether) or choosing it gives you an error message or simply does nothing. If this is the case, you have a problem!&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_sep_vs_performance_explorer.png"&gt;&lt;/p&gt;

&lt;p&gt;Now, how would you fix this situation? The best bet is to try to close Visual Studio, and open the Visual Studio command prompt from the Start menu. From here, you can start the development environment (DevEnv.exe) with a special command-line parameter called /ResetSkipPkgs, which clears the list of badly behaving packages. You see, sometimes Performance Explorer can cause trouble, and thus Visual Studio black-lists it. Using this parameter when starting Visual Studio gets is up and running again. Thanks for AH for the tip!&lt;/p&gt;</description>
      <pubDate>Sat, 30 Sep 2006 11:32:22 GMT</pubDate>
      <guid>0d076d57-de1d-42c3-8429-f1eb71065607</guid>
    </item>
    <item>
      <title>Changing ASP.NET DetailsView default mode from view to, say, Edit</title>
      <link>http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.detailsview.defaultmode.aspx</link>
      <description>&lt;p&gt;If you are using the .NET 2.0 DetailsView component in your ASP.NET web applications for example with C#, then you might wish to change the default view of the component from the record view to the Edit or Insert views. How do you do this?&lt;/p&gt;

&lt;p&gt;Luckily, it is very simple: the control has a property called DefaultMode, which you can change to your liking. But you have to know that such a property exists. The available options are DetailsViewMode.ReadOnly, DetailsViewMode.Edit and
DetailsViewMode.Insert. Pretty self-explanatory.&lt;/p&gt;</description>
      <pubDate>Thu, 28 Sep 2006 17:42:13 GMT</pubDate>
      <guid>0e5d7cf2-b279-47e0-af79-716c58a0793b</guid>
    </item>
    <item>
      <title>Downloading files from FTP sites disabled by default on W2K3</title>
      <link>support.microsoft.com/kb/182569/</link>
      <description>&lt;p&gt;I had to transfer some files through FTP to a Windows Server 2003 box, but since Internet Explorer (IE) is set to an enhanced security configuration, you cannot download files to your server by default.&lt;/p&gt;

&lt;p&gt;Of course, by adding your FTP site as a Trusted site will fix the problem, but the reason I want to blog this is that I didn't find any 100% hits for the error message with Google.&lt;/p&gt;

&lt;p&gt;So here goes. If you get the error message "Your current security settings do not allow you to download files from this location." from IE when downloading files in Windows Server 2003, add your FTP site to the list of Trusted Sites. Microsoft Knowledge Base article 182569 also helps.&lt;/p&gt;</description>
      <pubDate>Thu, 28 Sep 2006 14:18:48 GMT</pubDate>
      <guid>f5130be9-162e-406b-86d5-595e31df75c0</guid>
    </item>
    <item>
      <title>Borland announces InterBase 2007</title>
      <link>http://www.borland.com/us/products/interbase/index.html</link>
      <description>&lt;p&gt;Borland has today announced the latest version of its SQL RDMBS, called InterBase 2007. This is an interesting little SQL database, that has had an interesting support for transactions for a long time. Similar solutions have only just recently started to appear on more mainstream, big databases like Microsoft SQL Server.&lt;/p&gt;

&lt;p&gt;I've always been a fan of InterBase, since it is easy to use, robust and performant for smallish installations. Plus, it is competitively priced, of course today one can get both Oracle and SQL Server for free.&lt;/p&gt;

&lt;p&gt;The new version introduces journaling support (a transaction log file), better backups and batch support for SQL, and native Unicode database strings. On the lacking list I'd put the need for better management tools, better documentation and native OLEDB driver for .NET use. I don't want to use BDP.NET to access the thing.&lt;/p&gt;</description>
      <pubDate>Tue, 26 Sep 2006 15:50:53 GMT</pubDate>
      <guid>d57de93f-30a2-45f8-b9b5-6bf245fc78f3</guid>
    </item>
    <item>
      <title>Windows Presentation Foundation basics</title>
      <link>http://msdn.microsoft.com/msdnmag/issues/06/10/AppFundamentals/</link>
      <description>&lt;p&gt;The latest issue of MSDN Magazine has an interesting introduction to Windows Presentation Foundation and its main UI controls. I'm absolutely loving to see nicer UIs in my application, but WPF isn't an easy beast to tackle. I've tried to build simple applications, but I don't yet understand the even model fully. More to learn, that is.&lt;/p&gt;</description>
      <pubDate>Mon, 25 Sep 2006 13:37:41 GMT</pubDate>
      <guid>2d990348-de68-4caa-bc75-b0fabf8d8c6e</guid>
    </item>
    <item>
      <title>Fixing the ASP.NET and Access "Operation must use an updateable query" error</title>
      <link>http://support.microsoft.com/kb/175168/EN-US/</link>
      <description>&lt;p&gt;You've written a simple ASP.NET 2.0 application with C# that uses an Microsoft Access database through the usual ADO.NET OLEDB drivers. Your .MDB database is in the App_Data special folder, and you have copied your web application to a Windows Server 2003 computer. Your application works fine on the first look, but fails with the error message "Operation must use an updateable query." when you try to update your database for example with an SQL UPDATE or INSERT statement. What the heck?&lt;/p&gt;

&lt;p&gt;Well, if you've been working with latest Microsoft platforms, you will soon guess that this is some kind of security problem, and indeed it is. So how do you fix this error?&lt;/p&gt;

&lt;p&gt;To get rid of the error, you need to give more permissions to your App_Data special directory. The easiest way to do this is to launch the Internet Information Services Manager for your IIS 6.0 installation. Then, browse to your web site and the correct App_Data directory, right-click it and choose Permissions. You will see the following dialog box:&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_sep_iis_6_rights.png"&gt;&lt;/p&gt;

&lt;p&gt;Since by default in Windows Server 2003 your ASP.NET worker process will run as a NETWORK SERVICE, you need to give this group both read and write rights to the directory (and thus the .MDB database file as well). That's it.&lt;/p&gt;

&lt;p&gt;Oh, Microsoft Knowledge Base has an article with &lt;a href="http://support.microsoft.com/kb/175168/EN-US/"&gt;ID 175168&lt;/a&gt; that also discusses this problem.&lt;/p&gt;</description>
      <pubDate>Sat, 23 Sep 2006 07:43:26 GMT</pubDate>
      <guid>41e42017-0837-4ab5-ba61-802e50b49a23</guid>
    </item>
    <item>
      <title>The top 10 programming languages?</title>
      <link>http://www.eweek.com/article2/0,1759,2016415,00.asp?kc=EWRSS03119TX1K0000594</link>
      <description>&lt;p&gt;eWeek has listed the "top 10" of programming languages one should learn based on their popularity in companies seeking programmers. Of course, everybody has their opinion when it comes to what everybody should do or learn, but it is interesting to see AJAX listed as a programming language. Huh? Other than that, the usual ones like C, C# and Java are listed. Why list so many scripting languages on the top 10? That escapes me as well.&lt;/p&gt;</description>
      <pubDate>Fri, 22 Sep 2006 13:37:07 GMT</pubDate>
      <guid>0bc2624e-c147-4278-b5a8-d9f63f09e9da</guid>
    </item>
    <item>
      <title>64-bit development stuff from AMD</title>
      <link>http://developer.amd.com/articlex.aspx?id=32</link>
      <description>&lt;p&gt;I've always been an Intel type of guy, and I'm yet to use a PC with an AMD processor. I've never felt I'd need one. Now, this doesn't mean that AMD would be bad, in fact their presence in the market does many good things. One example is their development resources, which I didn't know even exists.&lt;/p&gt;

&lt;p&gt;Now, (at least) two interesting .NET related articles have been published, and the first is about &lt;a href="http://developer.amd.com/articlex.aspx?id=32"&gt;building 64-bit .NET applications&lt;/a&gt; with Visual Studio 2005. The second one is titled "24 Considerations for Moving Your Application to a 64-bit Platform", and is available &lt;a href="http://www.devx.com/amd/Article/31825"&gt;from DevX&lt;/a&gt;. Who would have known I would some day go to AMD for development reading?&lt;/p&gt;</description>
      <pubDate>Thu, 21 Sep 2006 13:48:04 GMT</pubDate>
      <guid>52646f80-64e5-4e4a-a698-8704a0851a93</guid>
    </item>
    <item>
      <title>Where's my SendTo folder in Vista?</title>
      <link>http://www.microsoft.com/windowsvista/</link>
      <description>&lt;p&gt;More Vista stuff. I was today testing Microsoft's new child when I noticed I still miss the ability to "SendTo" to Notepad -- that is, I often have the need to view files inner contents with a text editor. In Windows XP, the SendTo folder (where you would store the shortcuts to those applications you want to appear in the Send To popup menu) can be quite easily found, but with Windows Vista beta I was stumped.&lt;/p&gt;

&lt;p&gt;Luckily, the search functionality (which is getting better day by day) gave me the answer. The new path is:&lt;/p&gt;

&lt;pre&gt;
C:\Users\MyName\AppData\Roaming\Microsoft\Windows\SendTo
&lt;/pre&gt;

&lt;p&gt;Well, would you have guessed? I didn't.&lt;/p&gt;</description>
      <pubDate>Mon, 18 Sep 2006 16:58:16 GMT</pubDate>
      <guid>3466fa7c-2eab-4889-aca4-6a1c939d89f5</guid>
    </item>
    <item>
      <title>VMware Vista issue solved</title>
      <link>http://www.microsoft.com/windowsvista/</link>
      <description>&lt;p&gt;A good night's sleep or two can do miracles. On Friday, I wrote about my installation trouble with Windows Vista RC 1, but today I got Vista working in VMware. The problem was (and is) corrupted screen during boot time, but once I used the VGA graphics mode to install VMware Tools onto the virtual machine, I got nice graphics back to Vista.&lt;/p&gt;

&lt;p&gt;However, when the operating system is loading, I cannot see a thing on the black screen except a corrupted image that resembles lines and maybe some text. Reminds me of DOS programming times when I wrote directly to video memory, but messed up with pointers.&lt;/p&gt;</description>
      <pubDate>Sun, 17 Sep 2006 17:02:50 GMT</pubDate>
      <guid>0ad77ba0-a0f6-4e7c-84e0-3edeb3f4bed0</guid>
    </item>
    <item>
      <title>Vista RC 1 fails to install on VMware and Virtual PC</title>
      <link>http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=692131&amp;SiteID=17</link>
      <description>&lt;p&gt;I stumbled onto Windows Vista Release Candidate (RC1) installation trouble today with &lt;i&gt;both&lt;/i&gt; VMware Workstation 5.5.2 and Virtual PC 2004 SP1.&lt;/p&gt;

&lt;p&gt;Firstly, VMware would not let me even start the installation, since the virtual machine froze before the installer started. A fellow MVP pointed out that this was an issue with VMware Workstation, and could be fixed by putting the following two lines in the .VMX file:&lt;/p&gt;

&lt;pre&gt;
svga.maxWidth = "640"
svga.maxHeight = "480"
&lt;/pre&gt;

&lt;p&gt;Of course, this option is less than optimal, since it limits the screen resolution to plain ol' VGA level (640x480x16). Not good, so I ended up installing Virtual PC 2004 SP1. But, even though I tried downloading the ISO images for Vista twice from MSDN, I always ran into the error 0x80070570: the file "D:\Sources\install.wim" is corrupted. But according to a TechNet forum post (or rather, posts), I can judge I'm not the only one with the problem. Of well, looks like I'm gonna miss RC1 testing altogether.&lt;/p&gt;</description>
      <pubDate>Fri, 15 Sep 2006 14:37:27 GMT</pubDate>
      <guid>d7106b5c-a11c-41c7-9223-405c79b63462</guid>
    </item>
    <item>
      <title>Detect multi-core CPUs the Intel way</title>
      <link>http://www.intel.com/cd/ids/developer/asmo-na/eng/recent/275339.htm?ppc_cid=rss-89939-c1-141064</link>
      <description>&lt;p&gt;If you need to detect an Intel multi-core CPU correctly in native (Win32) code, here's the source code in C++ directly from Intel.&lt;/p&gt;</description>
      <pubDate>Thu, 14 Sep 2006 14:04:29 GMT</pubDate>
      <guid>ccc4204d-27d9-4ef6-9e31-46edba6cebb4</guid>
    </item>
    <item>
      <title>Atlas named "Microsoft AJAX Library"</title>
      <link>http://weblogs.asp.net/scottgu/archive/2006/09/11/_2200_Atlas_2200_-1.0-Naming-and-Roadmap.aspx</link>
      <description>&lt;p&gt;ScottGu reported on his blog yesterday, that the ASP.NET AJAX extensions, formely code-named "Atlas", will in the future be simply called the "Microsoft AJAX Library" (on the client side). A no-thrills name this time.&lt;/p&gt;</description>
      <pubDate>Tue, 12 Sep 2006 13:38:13 GMT</pubDate>
      <guid>1e0aa058-d5c3-45ea-ba4f-01821f4dceee</guid>
    </item>
    <item>
      <title>More about .NET and concurrency</title>
      <link>http://msdn.microsoft.com/msdnmag/issues/06/09/CLRInsideOut/default.aspx</link>
      <description>&lt;p&gt;MSDN Magazine has an excellent article about concurrency in the .NET world. Above other very interesting things, the article provides a comparison of the performance hits of using various locking objects, like critical sections, mutexes, monitors, and so on. Before, I've only had a hunch or gut-feeling of these differences, but I haven't before seen raw numbers.&lt;/p&gt;

&lt;p&gt;Recommended reading!&lt;/p&gt;</description>
      <pubDate>Mon, 11 Sep 2006 14:55:31 GMT</pubDate>
      <guid>060d788a-a61b-4f71-9f62-c494df318418</guid>
    </item>
    <item>
      <title>The magic of App.config</title>
      <link>http://msdn2.microsoft.com/en-us/library/ms184658.aspx</link>
      <description>&lt;p&gt;If you have been using C# 2.0 and Visual Studio 2005, the chances are you've heard about "&lt;a href="http://msdn.microsoft.com/vcsharp/default.aspx?pull=/library/en-us/dnvs05/html/SettingsCS_RL.asp"&gt;settings&lt;/a&gt;". When you add a "Settings.settings" XML file into your WinForms project, and visually edit the values, your application can generated Properties.Settings.Default object to access those properties at run-time.&lt;/p&gt;

&lt;p&gt;When using this feature, you might have noticed that also the file App.config changes. And somehow, the contents of this file becomes the YourApp.exe.config file in your project's Bin directory. How does the App.config magically become YourApp.exe.config?&lt;/p&gt;

&lt;p&gt;This is something I haven't noticed officially mentioned anywhere byt Microsoft, so I decided I'd give a short summary. Since Visual Studio 2005 uses the MSBuild engine, it is is a ready-made task for the C# compiler that does this file copying for you automatically.&lt;/p&gt;

&lt;p&gt;If you go to your project's properties in Visual Studio and enable verbose logging of build events, you can see that a MSBuild target called _CopyAppConfigFile is listed in the log. This is exactly the instruction that copies App.Config to be your application's config file. For example:&lt;/p&gt;

&lt;pre&gt;
copy /y "App.config" "bin\Debug\ConsoleApplication1.exe.config"
&lt;/pre&gt;

&lt;p&gt;Mystery solved!&lt;/p&gt;</description>
      <pubDate>Sat, 09 Sep 2006 06:02:28 GMT</pubDate>
      <guid>f5e150bd-a0ff-4d55-8ca8-0b668bb25b69</guid>
    </item>
    <item>
      <title>Four days of Visual Studio Team System</title>
      <link>http://msdn.microsoft.com/vstudio/teamsystem/</link>
      <description>&lt;p&gt;I've just spent the last four days in an 400-level Visual Studio 2005 Team System training here in Helsinki. Excellent course, thanks AJ!&lt;/p&gt;

&lt;p&gt;There's lot to learn in the product, but also lot to love. I'm impressed with the integrated Team Foundation Server (TFS) based source control.&lt;/p&gt;</description>
      <pubDate>Thu, 07 Sep 2006 14:39:43 GMT</pubDate>
      <guid>fbbea651-47af-4b1e-b814-3e712920251e</guid>
    </item>
    <item>
      <title>Borland Turbo's available for download</title>
      <link>http://www.borland.com/us/products/turbo/index.html</link>
      <description>&lt;p&gt;Borland has today announced that their new Turbo products are now available for download. Cool!&lt;/p&gt;

&lt;p&gt;They also have pricing information available, here in Europe all Turbo versions cost 399 &amp;euro; without taxes. Of course, the Explorer versions are free.&lt;/p&gt;</description>
      <pubDate>Wed, 06 Sep 2006 03:57:23 GMT</pubDate>
      <guid>b2939643-9dc6-413f-8c19-f3767b65405b</guid>
    </item>
    <item>
      <title>Word keyboard shortcuts that I wasn't aware of</title>
      <link>http://office.microsoft.com/en-us/assistance/HP051866641033.aspx</link>
      <description>&lt;p&gt;I've been using Microsoft Word professionally for years (currently I'm using Office Word 2003), but still there are new keyboard commands in it that I wasn't aware of. Microsoft has compiled a very nice list of these keyboard shortcuts on the Office web site, and the new ones for my in this list were:&lt;/p&gt;

&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;Ctrl+Space: Remove paragraph or character formatting.&lt;/li&gt;
&lt;li&gt;Ctrl+Alt+C: Insert the copyright symbol &amp;copy;.&lt;/li&gt;
&lt;li&gt;Four-number-Unicode-Code and Alt+X: Insert given Unicode character.&lt;/li&gt;
&lt;li&gt;Ctrl+Shift+C: copy formatting under cursor, and then Ctrl+Shift+V to paste it elsewhere.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;Which one of these were new to you?&lt;/p&gt;</description>
      <pubDate>Mon, 04 Sep 2006 17:15:21 GMT</pubDate>
      <guid>dd6841e2-3415-4730-bf11-9de66ce4ebb4</guid>
    </item>
    <item>
      <title>My Windows Vista article in The Delphi Magazine</title>
      <link>http://www.thedelphimagazine.com/</link>
      <description>&lt;p&gt;The Delphi Magazine (TDM) has just published my Windows Vista article with the title "Getting Ready For Windows Vista". It is available in the September 2006 issue (or Issue 133), so go grab a copy.&lt;/p&gt;</description>
      <pubDate>Mon, 04 Sep 2006 04:17:14 GMT</pubDate>
      <guid>304c8887-55c7-4f9b-bce6-33e698e4b58d</guid>
    </item>
    <item>
      <title>Information about Vista's performance and reliability</title>
      <link>http://www.microsoft.com/technet/windowsvista/relperf/default.mspx</link>
      <description>&lt;p&gt;TechNet has a new Vista jump page available titled "Reliability and Performance". From here, you can find additional links to information about Vista's enhanced diagnostics capabilities, faster booting time, and so on.&lt;/p&gt;</description>
      <pubDate>Sun, 03 Sep 2006 16:24:31 GMT</pubDate>
      <guid>8c926400-42c0-4ee7-8351-38c425b89252</guid>
    </item>
    <item>
      <title>.NET 3.0 RC 1 available</title>
      <link>http://www.microsoft.com/downloads/details.aspx?familyid=19e21845-f5e3-4387-95ff-66788825c1af&amp;displaylang=en</link>
      <description>&lt;p&gt;Microsoft has today made available the first Release Candidate for .NET Framework 3.0. I'm impressed, I didn't think they could make it for Vista, but it sure looks like so *if* this RC is of good quality.&lt;/p&gt;

&lt;p&gt;Personally, I'm waiting for the new Windows Vista RC 1 to become available so that I can test both at the same time. The web version of Expression should also become soon available.&lt;/p&gt;</description>
      <pubDate>Fri, 01 Sep 2006 15:59:12 GMT</pubDate>
      <guid>64bd4005-19be-4a17-9257-15f8e7870a91</guid>
    </item>
    <item>
      <title>Three new photos</title>
      <link>http://www.saunalahti.fi/janij/photos/</link>
      <description>&lt;p&gt;I just uploaded three new photos to my site. This time, two animal and one little girl. Hope you like 'em.&lt;/p&gt;</description>
      <pubDate>Wed, 30 Aug 2006 19:06:00 GMT</pubDate>
      <guid>32a525cb-455e-459d-b83a-91c475df08a2</guid>
    </item>
    <item>
      <title>Visual Studio 2005 tip: the Command Window</title>
      <link>http://msdn2.microsoft.com/en-us/library/c785s0kz.aspx</link>
      <description>&lt;p&gt;Did you know that your Visual Studio 2005 (or VS.NET for that matter) has a "command prompt" where you can execute commands and see variables of your application that you are debugging? Enter the Command Window, available using View/Other Windows/Command Window, or by pressing Ctrl+W,A.&lt;/p&gt;

&lt;p&gt;This nifty little window has many powerful features. For example, try typing these commands at the prompt:&lt;/p&gt;

&lt;pre&gt;
? 4+4
? Math.Sqrt(3*3+4*4)
? System.DateTime.Now
nf MyStuff.cs
&lt;/pre&gt;

&lt;p&gt;Also, what not that many developers seem to know is that you can get that ol' Immediate window back when you type "immed" and hit Enter in the Visual Studio 2005 Command window.&lt;/p&gt;</description>
      <pubDate>Wed, 30 Aug 2006 16:32:27 GMT</pubDate>
      <guid>dacf42ab-dbcb-41b6-bde2-30b0e1ece50a</guid>
    </item>
    <item>
      <title>Finnish people get a new keyboard layout</title>
      <link>http://kotoistus.fi/nappaimisto.htm</link>
      <description>&lt;p&gt;Well, did you guess it could happen? I didn't, and the case is about a new (or rather, extended) keyboard layout for the Finnish keyboards in the future. Sure sounds like a Candid Camera kind of stuff to me, but I guess progress can be made when it comes to keyboards, as well.&lt;/p&gt;

&lt;p&gt;Basically, our Finnish keyboards will get additional special characters, especially useful for typing Spanish and Vietamese. Frankly, how many Finns needs these additional thingies? I don't, but I guess some do. Nonetheless, there's information available on the net, and Microsoft has also developed a &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=583f29d0-9187-4a22-9a0d-2b69bbf08d40&amp;DisplayLang=fi"&gt;new keyboard driver&lt;/a&gt; to support those new keyboards. Wow.&lt;/p&gt;</description>
      <pubDate>Sun, 27 Aug 2006 13:10:18 GMT</pubDate>
      <guid>77fd22b2-15b9-4660-8479-6fba5ff147bc</guid>
    </item>
    <item>
      <title>C#/.NET learning material from Austria</title>
      <link>http://dotnet.jku.at/</link>
      <description>&lt;p&gt;If you are just learning C# or .NET (I guess we all are some way or another), there's a great set of freely available material about .NET development from the Johannes Kepler Univesity in Austria.&lt;/p&gt;

&lt;p&gt;By going to their web site, and following the link "Course Material" you will find the download page. You have to accept the Microsoft Curriculum License, and once you've done that, you can get PowerPoint presentations about .NET 1.1 and C# 1.1. Enjoy!&lt;/p&gt;</description>
      <pubDate>Fri, 25 Aug 2006 15:02:50 GMT</pubDate>
      <guid>0037d70d-6e4f-450a-b578-028438cc6580</guid>
    </item>
    <item>
      <title>New EOS photo stuff from Canon</title>
      <link>http://www.usa.canon.com/consumer/controller?act=NewProductsAct&amp;fcategoryid=101</link>
      <description>&lt;p&gt;Canon has just announced new products, including a new digital EOS SLR, the 400D (in USA, the Digital Rebel XTi) and two new EF lenses, EF 50mm f/1.2L USM and EF 70-200mm f/4L IS USM.&lt;/p&gt;

&lt;p&gt;Now, I'm not interested in the Rebels as I have 5D, but it's new sensor cleaning mechanism sounds nice. Of course, it must work, too. But to me, the new 50mm lens sounds very nice. I bet it costs more than a grand.&lt;/p&gt;</description>
      <pubDate>Thu, 24 Aug 2006 14:13:19 GMT</pubDate>
      <guid>461542f0-44c1-41e1-9774-88ffc0be0d11</guid>
    </item>
    <item>
      <title>Oh my, only eight planets</title>
      <link>http://www.cnn.com/2006/TECH/space/08/24/pluto.ap/index.html?section=cnn_topstories</link>
      <description>&lt;p&gt;This might not be a giant step for mankind, but Pluto is no longer a planet. This declaration came from Prague today. CNN has more info.&lt;/p&gt;</description>
      <pubDate>Thu, 24 Aug 2006 14:11:55 GMT</pubDate>
      <guid>376b8b95-0231-4774-bbe0-9e36e51d71b9</guid>
    </item>
    <item>
      <title>Fixing Outlook Web Access login error with Exchange 2003 SP2</title>
      <link>http://support.microsoft.com/default.aspx?scid=kb;en-us;843539</link>
      <description>&lt;p&gt;I today ran into an issue with Microsoft Small Business Server 2003 SP1 (SBS 2003) and Exchange Server 2003 SP2 that I couldn't immediately solve. The problem was that all users were unable to login to Outlook Web Access (OWA) hosted by the SBS server on a LAN.&lt;/p&gt;

&lt;p&gt;Even with administrative privileges, user's got the following error message when trying to login to OWA with their browsers:&lt;/p&gt;

&lt;pre&gt;You could not be logged on to Outlook Web Access.
Make sure your domain\user name and password
are correct, and then try again.&lt;/pre&gt;

&lt;p&gt;Now, I initially thought this would be a security setting/permission issue, but since even the domain admin couldn't log in, I decided to investigate elsewhere. On the Internet, I found Microsoft KB article 843539 that provided the hints, and the rest I found by using Google Groups.&lt;/p&gt;

&lt;p&gt;The reason was that the SBS server was running IIS that had SSL enforced. However, Exchange Forms-based authentication doesn't work with SLL connections, and you have to disable Forms authentication to give proper access to users.&lt;/p&gt;

&lt;p&gt;To do this, first go Exchange System Manager, and then navigate to Exchange Virtual Server properties (Servers/Protocols/HTTP), and then clear (uncheck) the Enable Forms Based Authentication checkbox. That should do the trick.&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_aug_exchange_owa_problem_1.png"&gt;&lt;/p&gt;

&lt;p&gt;And, if the problem still persists, make sure you've given enough file system (NTFS) rights to the Exchange virtual directory. Open the Security tab for the directory either using Windows Explorer or IIS Manager, and make sure the "Domain Users" group (or similar) has Read, List Folder Contents and Read &amp; Execute rights.&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_aug_exchange_owa_problem_2.png"&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 22 Aug 2006 13:40:23 GMT</pubDate>
      <guid>c872e55a-3c27-42c8-9449-e123724a3913</guid>
    </item>
    <item>
      <title>ASP.NET Web Services or WCF, which one to choose?</title>
      <link>http://msdn.microsoft.com/windowsvista/default.aspx?pull=/library/en-us/dnlong/html/aspnetwebservices_wcf.asp</link>
      <description>&lt;p&gt;There's a new article available on MSDN that details the differences between web service implementation on ASP.NET 2.0 and Windows Communication Foundation or WCF.&lt;/p&gt;

&lt;p&gt;If you are about to start developing Web Service (WS) applications with Visual Studio 2005 (or, Delphi .NET for that matter), then you  should take a look of this article. My opinion is that presently, for smaller projects ASP.NET web services architecture is a good choice for growth path for the future. However, for larger projects that take time to plan through, it might be wise to wait until WCF is here (think Vista).&lt;/p&gt;</description>
      <pubDate>Sun, 20 Aug 2006 11:50:17 GMT</pubDate>
      <guid>09069cce-602e-47c7-919e-08c55a00109e</guid>
    </item>
    <item>
      <title>Visual Studio 2003 Service Pack 1 available</title>
      <link>http://www.microsoft.com/downloads/details.aspx?familyid=69D2219F-CE82-46A5-8AEC-072BD4BB955E&amp;displaylang=en</link>
      <description>&lt;p&gt;If you are still using Visual Studio.NET 2003, there's now a Service Pack 1 (SP1) available for you to download. It is freely available from the Microsoft download center. Size is 155 MB.&lt;/p&gt;</description>
      <pubDate>Thu, 17 Aug 2006 14:16:39 GMT</pubDate>
      <guid>ef596cfb-b1ac-43a3-82f1-368c1f6118cc</guid>
    </item>
    <item>
      <title>Development tools for hobbyist game programmers</title>
      <link>http://www.eweek.com/article2/0,1759,2003099,00.asp?kc=EWRSS03119TX1K0000594</link>
      <description>&lt;p&gt;I noticed from eWeek that Microsoft has announced a new software development product specifically for game developers. This product is named "XNA Game Studio". And just like the Visual Studio Express line of products, XNA is a free download.&lt;/p&gt;</description>
      <pubDate>Tue, 15 Aug 2006 16:01:01 GMT</pubDate>
      <guid>a23037a3-b634-45cd-a368-74144c734759</guid>
    </item>
    <item>
      <title>Another new C# 2.0 book from Murach</title>
      <link>http://www.aspnetpro.com/Bookreviews/1890774375_b/1890774375_b.asp</link>
      <description>&lt;p&gt;If you are looking for a C# book to cover Visual Studio 2005 and C# 2.0, then "Murach's C# 2005" might be something for you. I haven't read this book myself, but ASP.NET Pro has a review of it.&lt;/p&gt;</description>
      <pubDate>Sun, 13 Aug 2006 17:16:01 GMT</pubDate>
      <guid>64105372-c24a-4a73-ba4e-454f2816225f</guid>
    </item>
    <item>
      <title>Visual Studio code editor tip: comment block of code</title>
      <link>http://msdn.microsoft.com/vstudio/</link>
      <description>&lt;p&gt;Here's a simple tip for those of you using Visual Studio to write .NET code: to comment a block of code, first select the block and then press Ctrl+K,C to 
comment it. To uncomment, one has to press Ctrl+K,U. Simple and effective!&lt;/p&gt;</description>
      <pubDate>Thu, 10 Aug 2006 13:15:50 GMT</pubDate>
      <guid>61018a86-60b6-4ba3-8a34-57a2d161c000</guid>
    </item>
    <item>
      <title>New article in TDM: Exchange programming with Delphi</title>
      <link>http://www.thedelphimagazine.com/</link>
      <description>&lt;p&gt;The Delphi Magazine (TDM) has published my Borland Delphi article with the title "An Exchange 2003 Programming Primer". As you can guess, this article gives an introduction to Exchange programming and gives the 101 examples of major programming technologies that Exchange supports. Happy reading!&lt;/p&gt;

&lt;p&gt;PS. I also uploaded a new landscape photo (#7) to my Photos area, go check it.&lt;/p&gt;</description>
      <pubDate>Wed, 09 Aug 2006 11:10:17 GMT</pubDate>
      <guid>8e27e961-ebcb-4af0-ad91-c712b2023ed0</guid>
    </item>
    <item>
      <title>Turbo is back!</title>
      <link>http://www.turboexplorer.com/</link>
      <description>&lt;p&gt;Borland (or should I say DTG) today announced what I'd already been waiting for: a back-to-root set of development tools aimed at the hobbyist/semi-pro developer looking for a low cost. And naturally, these products are called the Turbo products. They also have a web site dedicated to these tools at turboexplorer.com.&lt;/p&gt;

&lt;p&gt;The products that will become available are Turbo C++, Turbo Delphi, Turbo Delphi for .NET and Turbo C#. Price will be less than $500, says the company. What does this mean? For me, this means more Borland users in the field. Visual Studio has decreased the number of Borland users, since it is a more advanced solution for .NET development and costs less (or is even free, as in the Express versions). Although I love both Visual Studio and Delphi, competition is good for all of us.&lt;/p&gt;

&lt;p&gt;Another thing that Borland is going to do with their Turbo line is to trying bring the excitement back. Compared to MSDN, Borland had BDN, but in my opinion that has been only a shadow of what it could be. Also read &lt;a href="http://www.eweek.com/article2/0,1759,2000205,00.asp?kc=EWRSS03119TX1K0000594"&gt;eWeek's&lt;/a&gt; commentary. More info will follow as I get my hands on these new products.&lt;/p&gt;</description>
      <pubDate>Tue, 08 Aug 2006 04:20:21 GMT</pubDate>
      <guid>904e0a14-a939-4a2d-813c-5488a41cba01</guid>
    </item>
    <item>
      <title>Visual Studio after "Orcas"</title>
      <link>http://www.eweek.com/article2/0,1759,1999217,00.asp?kc=EWRSS03119TX1K0000594</link>
      <description>&lt;p&gt;The next version of Visual Studio, codenamed "Orcas" is still on the drawing board, but details are also leaking about the next version after Orcas, codenamed "Rosario". Rosario is going to be an update to the Visual Studio Team System (VSTS). To me, Rosario is still too far in the future, for Orcas and Vista/2007 Office System development is what interests me presently.&lt;/p&gt;</description>
      <pubDate>Mon, 07 Aug 2006 16:47:27 GMT</pubDate>
      <guid>05982131-83ca-42be-805f-6a445b357427</guid>
    </item>
    <item>
      <title>A 100% managed SQL database from Vista Software</title>
      <link>http://www.vistadb.com/vistadb3.asp</link>
      <description>&lt;p&gt;Vista Software announced the availability of their fully managed (100% .NET code, that is) SQL compatible database. What's interesting with this product is that it is light in its footprint, the vendor says only 600 KB. What's interesting is that it also has built-in Blowfish encryption, that is something that interests me. For $249 per machine, the price is also very good.&lt;/p&gt;

&lt;p&gt;So far, my databases of choice have been Borland's InterBase and Microsoft Access and SQL Server. These are good choices for workgroup, single-user and enterprise applications, respectively. However, VistaDB seems to compete mostly with InterBase.&lt;/p&gt;

&lt;p&gt;Borland has recently announced &lt;a href="http://bdn.borland.com/article/33519#12InterBaseProductRoadmap"&gt;a roadmap for InterBase&lt;/a&gt;, but those features that I'd like to see (native .NET support, encryption, and better embedded installation) have to wait until the "Vault" release. Until that, VistaDB seems to be an attractive solution if you want to travel light.&lt;/p&gt;</description>
      <pubDate>Sun, 06 Aug 2006 13:14:55 GMT</pubDate>
      <guid>ccbabb0d-e72b-400c-81a4-fdf8f9ed9967</guid>
    </item>
    <item>
      <title>New stock photography site (to me, that is)</title>
      <link>http://www.alamy.com/</link>
      <description>&lt;p&gt;I today learned about a new, high-quality stock photography site called Alamy. This site is in addition to iStockphoto, Getty Images, and the Finnish Plugi, Cartina and Albumi.&lt;/p&gt;</description>
      <pubDate>Fri, 04 Aug 2006 11:36:00 GMT</pubDate>
      <guid>220ffe1e-c324-40ba-acc8-a11afbdfb2e2</guid>
    </item>
    <item>
      <title>Vista Display Driver Model</title>
      <link>http://msdn.microsoft.com/windowsvista/default.aspx?pull=/library/en-us/dnlong/html/WinVistaDisplayDriverModel.asp</link>
      <description>&lt;p&gt;Once Windows Vista is here, we have a new driver model for display drivers, called the Windows Display Driver Model or WDDM. For users, this should result in better stability and performance, and for driver manufacturers it means a rewrite. But for application-level developers, it is also something to think about.&lt;/p&gt;

&lt;p&gt;This is because WDDM is closely related to the new Desktop Window Manager (DWM), that will control drawing to the desktop. Previously, Windows application drew directly to the screen, but in Vista this will change. Of course, your application can still use the "zero handle" to draw to the desktop, but on Vista you will actually draw to an on-memory buffer. Says Technet:&lt;/p&gt;

&lt;p&gt;"The DWM is, in essence, a Direct3D application that is active from the moment the computer is turned on. Thus, core features of the WDDM, such as the ability to share the GPU resources and processing, become essential in this scenario."&lt;/p&gt;</description>
      <pubDate>Thu, 03 Aug 2006 15:46:08 GMT</pubDate>
      <guid>0f2d427d-c92f-49ac-95ff-6d2bc9e2dffa</guid>
    </item>
    <item>
      <title>Book tip: Pro C# 2005</title>
      <link>http://www.amazon.com/gp/product/1590594193/sr=1-1/qid=1154494877/ref=sr_1_1/002-0040953-0207216?ie=UTF8&amp;s=books</link>
      <description>&lt;p&gt;If you want to learn C# and .NET 2.0 programming, there's a very nice book available from Apress: Andrew Troelsen's "Pro C# 2005 and the .NET 2.0 Platform", now at the third edition. Amazon sells one for $37.79. Recommended reading!&lt;/p&gt;</description>
      <pubDate>Wed, 02 Aug 2006 04:30:05 GMT</pubDate>
      <guid>a12c44e8-93a2-4683-a3f7-734b295bba0b</guid>
    </item>
    <item>
      <title>Get your C# code properly documented with Sandcastle</title>
      <link>https://blogs.msdn.com/sandcastle/default.aspx</link>
      <description>&lt;p&gt;Microsoft has recently announced the availability of their Sandcastle project, which is a utility to build documentation from source code. The fancy thing is that Microsoft uses Sandcastle internally to build .NET Framework documentation, so it ought to be promising.&lt;/p&gt;

&lt;p&gt;The Sandcastle July CTP is available &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;displaylang=en"&gt;for download&lt;/a&gt;. At this point, I haven't yet had the chance to test it myself, but there's still work with the project as it is a set of command-line utilities. However I wouldn't be surprised if one day it would be intergrated into Visual Studio.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 01 Aug 2006 17:20:22 GMT</pubDate>
      <guid>f2d58b12-75d3-4b0d-92b7-969cbd0f56bb</guid>
    </item>
    <item>
      <title>Introduction to XAML data binding</title>
      <link>http://msdn.microsoft.com/windowsvista/default.aspx?pull=/library/en-us/dnlong/html/WPFDataBinding_Pt1.asp</link>
      <description>&lt;p&gt;I today ran across an older article about Windows Presentation Foundation (WPF, aka Avalon) data binding from May. In this two-part article series, Shawn Wildermuth introduces the concept of binding data to XAML components. Recommended reading!&lt;/p&gt;

&lt;p&gt;Here's &lt;a href="http://msdn.microsoft.com/windowsvista/default.aspx?pull=/library/en-us/dnlong/html/WPFDataBinding_Pt1.asp"&gt;Part 1&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/windowsvista/default.aspx?pull=/library/en-us/dnlong/html/WPFDataBinding_Pt2.asp"&gt;Part 2&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Fri, 28 Jul 2006 06:16:07 GMT</pubDate>
      <guid>948d97e9-3341-406d-a31a-6880234cd555</guid>
    </item>
    <item>
      <title>Prepare for HTTPS modifications in IE7 and WinInet libraries</title>
      <link>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ietechcol/cols/dnexpie/ie7_https_imps.asp</link>
      <description>&lt;p&gt;As you are surely aware, Windows Vista will come with a new version of Internet Explorer, version 7. This new version improves, among other things, security in many ways. One of these modifications is the handling of sites that use HTTPS or SSL certificates.&lt;/p&gt;

&lt;p&gt;On MSDN, there's an article about these changes. Even if you don't run a web site that uses HTTPS, your applications might be affected, too. This is because the changes are made in the WinInet libraries, which IE uses. And your application or library code might, too. For example, Delphi web services code might be affected.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 27 Jul 2006 12:20:43 GMT</pubDate>
      <guid>2f490421-73c0-4bce-90b4-9518a7a9e0e8</guid>
    </item>
    <item>
      <title>Warning about Corel Download Manager and Windows Vista</title>
      <link>http://www.netopsystems.com/site/english/products.html</link>
      <description>&lt;p&gt;I today noticed that you need to be careful with certain ActiveX controls that you run with Internet Explorer (IE) 7.0 in Windows Vista (I'm using Beta 2, build 5384 for this). I was about to try &lt;a href="http://www.corel.com/servlet/Satellite?pagename=Corel3/Products/Display&amp;pid=1047025487586"&gt;Corel's Paint Shop Pro X&lt;/a&gt;, and one can find a free trial version from their web site.&lt;/p&gt;

&lt;p&gt;The problem with Corel is that you need to install &lt;i&gt;their&lt;/i&gt; download manager to get any downloads from them. They use Netopsystems' Get, which is a "1-Click Download and Installation Manager" according to their site. Well, the problem is that it doesn't work property on Windows Vista.&lt;/p&gt;

&lt;p&gt;The problem is that the download manager doesn't give you any chance to select the download directory, and instead chooses the desktop for you. But because of IE7's Protected Mode (I believe), the ActiveX download manager newer has the ability to write to my desktop, and instead the path gets virtualized. However, it took me a while to find this location, since it is a bit tricky:&lt;/p&gt;

&lt;pre&gt;
C:\Users\Jani J&amp;auml;rvinen\AppData\Local\Microsoft\Windows\Temporary Internet Files\Virtualized\C\Users\Jani J&amp;auml;rvinen\Desktop\PaintShopProX
&lt;/pre&gt;

&lt;p&gt;As you can see, with Vista loose security practices are gone. And I like that; instead of blaming Microsoft, I blame Corel for a) forcing me to use their download manager, and b) not allowing me to select where I want to save my stuff. I just hate when things like this happen. And, it's the first day of my three-week summer vacation.&lt;/p&gt;</description>
      <pubDate>Mon, 24 Jul 2006 07:49:44 GMT</pubDate>
      <guid>f52d9be2-666c-475c-8854-65910b8d6775</guid>
    </item>
    <item>
      <title>Another great ASP.NET article from Scott Mitchell</title>
      <link>http://www.asp.net/learn/dataaccess/tutorial21vb.aspx?tabid=63</link>
      <description>&lt;p&gt;Scott Mitchell seems to be in good mood, as he has recently published lately many excellent introductory ASP.NET/ADO.NET tutorial. Go check his latest article, "Implementing Optimistic Concurrency".&lt;/p&gt;</description>
      <pubDate>Thu, 20 Jul 2006 16:23:43 GMT</pubDate>
      <guid>58be0c1d-58b0-4534-808d-f136780f0acf</guid>
    </item>
    <item>
      <title>Mark Russinovich now at Microsoft</title>
      <link>http://www.sysinternals.com/blog/2006/07/on-my-way-to-microsoft.html</link>
      <description>&lt;p&gt;SysInternals, the makers of the famous free and often very much needed low-level utilities (like RegMon and FileMon) today announced that it was bought by Microsoft. Congratulations, Mark! Also, for Microsoft Mark is definitely a great addition to their staff. I'm happy things turned out this way.&lt;/p&gt;</description>
      <pubDate>Tue, 18 Jul 2006 15:58:11 GMT</pubDate>
      <guid>1a877ee2-123e-42a4-9eab-84a220f884ae</guid>
    </item>
    <item>
      <title>BDS 2006 and compiler directives separation character</title>
      <link>http://www.borland.com/us/products/delphi/</link>
      <description>&lt;p&gt;I today noticed a minor problem with BDS 2006: whenever you have more than one compiler directive defined, you need to pay attention to the separator character you use. Especially, if you are moving your code from an earlier version of Delphi, this issue might bite you.&lt;/p&gt;

&lt;p&gt;The problem is that if you use Borland Developer Studio 2006 to define more than one compiler directive (for conditional compilation with $IFDEF for example) using the Project Properties window, you must use the semicolon ";" to separate your entries. However, the DCC compiler itself is happy with a comma as well, but the IDE isn't. This can lead to problems with code that actually compiles, but behaves wrong when you want for example to refactor it. If you have code within $IFDEFs, and have enabled a conditional symbol but used the comma to do so, the refactoring features believes you don't have the conditional defined, and thus leaves your $IFDEFed code intact.&lt;/p&gt;</description>
      <pubDate>Tue, 18 Jul 2006 14:06:54 GMT</pubDate>
      <guid>86c4b999-d467-4713-973c-10f953da0466</guid>
    </item>
    <item>
      <title>My TDM article about Volume Shadow Copy Service and Windows XP</title>
      <link>http://www.saunalahti.fi/janij/publications/the_delphi_magazine.html</link>
      <description>&lt;p&gt;In September 2005, I wrote an article to The Delphi Magazine about Windows' Volume Shadow Copy service, or VSS. My article, titled "Delphi Meets The Volume Shadow Copy Service" has become quite popular it seems; some readers subscribing to the magazine just for my article alone. Good.&lt;/p&gt;

&lt;p&gt;Now, lately I've also received many questions from readers about the sample application I provided with the article. Now, the article was written with Windows Server 2003 (W2K3) in mind, even though Windows XP also supports VSS. The question I get is "how can I modify the sample application to work with Windows XP?"&lt;/p&gt;

&lt;p&gt;Since this is such a common question, I thought I'd briefly share what you need to do. First of all, you would need to get the Windows XP versions of the C++ .H header files. My sample code includes the .H files for W2K3, but you may find the needed files from the SDK. You would need to check which interfaces are different on WinXP compared to W2K3. Secondly, you need to change the declaration of the CreateVssBackupComponents API function in the VssAPI.pas unit in my sample code. For W2K3, this function is defined at index 13, but on WinXP this function is defined at index 5. Hope this helps!&lt;/p&gt;</description>
      <pubDate>Mon, 17 Jul 2006 14:11:49 GMT</pubDate>
      <guid>6007d215-0126-441d-a3f1-133620b6f056</guid>
    </item>
    <item>
      <title>More free virtualization software</title>
      <link>http://www.vmware.com/news/releases/server.html</link>
      <description>&lt;p&gt;On Wednesday, Microsoft announces that it will give its desktop virtualization software, Virtual PC, for free. Today, VMware continued the same game as it announced that it's former VMware GSX Server product -- with the about $1500 price tag -- is now available as a free product called VMware Server.&lt;/p&gt;

&lt;p&gt;As a developer, I won't complain. But this boom of free virtualization software just shows how important virtualization has come. Now it's the time to get it to the masses.&lt;/p&gt;</description>
      <pubDate>Fri, 14 Jul 2006 15:01:17 GMT</pubDate>
      <guid>5aab6502-8b99-41b0-af47-13b1570e102e</guid>
    </item>
    <item>
      <title>Microsoft makes Virtual PC a free product</title>
      <link>http://www.microsoft.com/windows/virtualpc/downloads/sp1.mspx</link>
      <description>&lt;p&gt;Although I've previously been a VMware user (as I think it is better than Microsoft's offering), pricing also has some effect on me. I noticed just today that Microsoft has made Virtual PC 2004 Service Pack 1 a free download on their site. They also state that Virtual PC 2007 will be free. But what is going to happen after that, I don't yet know.&lt;/p&gt;</description>
      <pubDate>Wed, 12 Jul 2006 17:13:31 GMT</pubDate>
      <guid>4b0e4592-8267-493c-ae9e-93b2e8236b01</guid>
    </item>
    <item>
      <title>A short primer on Intel's EMT64 technology</title>
      <link>http://www.intel.com/cd/ids/developer/asmo-na/eng/recent/296744.htm?ppc_cid=rss-89939-c1-132458</link>
      <description>&lt;p&gt;Intel has published a nice introductory article about their Extended Memory 64 Technology (EMT64) for developers. Recommended reading even though you are using managed code for instance with C#.&lt;/p&gt;</description>
      <pubDate>Mon, 10 Jul 2006 15:22:53 GMT</pubDate>
      <guid>d6aa9244-daaa-40e0-a6dc-cf78a5309a21</guid>
    </item>
    <item>
      <title>Understanding why a ASP.NET page doesn't display special characters like "&amp;aring;&amp;auml;&amp;ouml;" correctly</title>
      <link>http://msdn2.microsoft.com/en-us/library/hy4kkhe0.aspx</link>
      <description>&lt;p&gt;Recently, I ran into an issue with an ASP.NET 1.1 web application built with Delphi 2006 and Dreamweaver MX 2004 that had problems showing Finnish national characters like &amp;aring;, &amp;auml;, and &amp;ouml;. These special characters were always displayed as garbage on the web browser, and so I had to investigate.&lt;/p&gt;

&lt;p&gt;At first sight, all appeared to be OK. The .aspx pages were encoded in UTF-8 (Unicode), there was a proper meta tag for older browsers, and ASP.NET was configured with the web.config "globalization" element to return the pages in said UTF-8. Still, Internet Explorer displayed these special characters as garbage. The issue had been solved so far by using HTML entities, i.e. by using codes like "&amp;amp;auml;" for "&amp;auml;", and so forth.&lt;/p&gt;

&lt;p&gt;To test the issue, I built a very simple ASP.NET page with just basic HTML code inside, and to have these special characters there:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&amp;gt;
&amp;lt;title&amp;gt;UTF-8 Test&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
Test: &amp;aring;&amp;auml;&amp;ouml;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Next, I tested with telnet.exe to see how this page was returned by the server. As expected, the command returned output like this:&lt;/p&gt;

&lt;pre&gt;
GET /test-utf8.aspx HTTP/1.0

HTTP/1.1 200 OK
Connection: close
Date: Tue, 11 Jul 2006 09:00:42 GMT
Server: Microsoft-IIS/6.0
X-Developed-With: Delphi
P3P: CP="PHYo ONLo CONo TELo SAMo"
X-Powered-By: ASP.NET
X-AspNet-Version: 1.1.4322
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 274

&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&amp;gt;
&amp;lt;title&amp;gt;UTF-8 Test&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
Test: ????????????
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Here, take a note of the third-last line: "Test: ????????????". In UTF-8, all special characters should be encoded with two bytes, but clearly, this was not the case. Something was doing the actual Unicode conversion twice. Initially, I thought this was the ASP.NET engine that was wrong, but after some research, I found this to be an incorrect assumption. Instead, what I found (when using a hex editor to view the files) that Dreamweaver had actually saved the files as UTF-8, but ASP.NET didn't correctly detect that the files were already in UTF-8 format, and instead worked with the files as if they were plain ANSI files. This caused the garbage characters to appear.&lt;/p&gt;

&lt;p&gt;To fix the problem, I had to investigate Dreamweaver's settings. Under the Page Properties dialog box, I found the Title/Encoding section:&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_jul_unicode_bom_dreamweaver.png"&gt;&lt;/p&gt;

&lt;p&gt;Here, the developers had forgot to check the "Include Unicode Signature (BOM)" tab, which means that Dreamweaver will save the file with the requested encoding, but will not include the so called "byte order mark" at the beginning of the file. See the &lt;a href=" http://unicode.org/faq/utf_bom.html"&gt;Unicode FAQ&lt;/a&gt; for more details about UTF-8 encoding and BOMs.&lt;/p&gt;

&lt;p&gt;When saved with a BOM, here's how the file looks like in a hex editor (Visual Studio 2005 for that matter):&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_jul_unicode_bom.png"&gt;&lt;/p&gt;

&lt;p&gt;As you can see, the file now starts with the byte sequence "EF BB BF", which is the standard BOM for UTF-8 encoded files. With this encoding, ASP.NET is able to return a correctly encoded file to the browser (here, telnet):&lt;/p&gt;

&lt;pre&gt;
GET /test-utf8-bom.aspx HTTP/1.0

HTTP/1.1 200 OK
Connection: close
Date: Tue, 11 Jul 2006 09:01:34 GMT
Server: Microsoft-IIS/6.0
X-Developed-With: Delphi
P3P: CP="PHYo ONLo CONo TELo SAMo"
X-Powered-By: ASP.NET
X-AspNet-Version: 1.1.4322
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 268

&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&amp;gt;
&amp;lt;title&amp;gt;UTF-8 Test&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
Test: ??????
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;

&lt;p&gt;The moral of the story is that even if Unicode is bliss in itself, it requires more skills to use it. It is a matter of a fact that plain ASCII was just simpler, though I don't regret the move, on the contrary.&lt;/p&gt;</description>
      <pubDate>Sun, 09 Jul 2006 17:10:35 GMT</pubDate>
      <guid>5b5ad5cb-60e4-4f40-8b60-3f1df1d5d2a7</guid>
    </item>
    <item>
      <title>Why all spam ought to be Chinese :-)</title>
      <link>http://www.infoworld.com/articles/en/xml/00/04/04/000404enspam.html</link>
      <description>&lt;p&gt;Spam seems to be a fact of life, but unlike many of my friends and colleagues, I don't find it difficult to filter useful mail from junk. Also, lately the spam filters seem to have improved ("learned") a bit, which makes the life easier. However, another thing that makes my life easier is the so-called geopolitical shift towards East. In the beginning, Internet was English-only, but today Easter countries like China, Japan and other are growing to be the majority. This of course reflects the language of the junk mail.&lt;/p&gt;

&lt;p&gt;Since I don't read Chinese for example, it is very easy to spot what I call the "Chinese spam” out of my normal mail. In fact, if all spam would be in such languages, it would make the life even easier. :-) As you see, I don't care much about mails that say things like "»¤s¸t¡@­º³¡"µL"½X"¼v¤ù¢°¢´¢´¢¯§K¹B¶OU" in the subject line.&lt;/p&gt;</description>
      <pubDate>Fri, 07 Jul 2006 14:05:20 GMT</pubDate>
      <guid>f0e30b1a-56ac-4a8f-acaa-d55f40cbd591</guid>
    </item>
    <item>
      <title>Calling the CPUID instruction from managed C# code</title>
      <link>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcwlkplatforminvoketutorial.asp</link>
      <description>&lt;p&gt;If you recall my &lt;a href="/janij/blog/2006-03.html#4df18ad2-d559-4934-b76b-aef1ce253213"&gt;earlier post&lt;/a&gt; from March regarding the CPUID instruction of Intel's x86 processors, I mentioned that you cannot call this instruction directly from C#. However, you can do this by using a native code (Win32 code) DLL that you simply call from C#. Here's how to do that briefly. What you need is Borland Delphi and Visual Studio 2005. I used Delphi version 2006 (Borland Developer Studio or BDS).

&lt;p&gt;The first step is to create the library that you are going to call from C#. The code shown here is very similar to that in my March post.

&lt;pre&gt;
library CPUID_InfoLib;

{$ALIGN 4}

{
Source:

"Intel Processor Identification and the CPUID Instruction"
- Application Note 485, January 2006.

http://developer.intel.com/
}

type
  ProcessorInfo = record
    MaximumBasicFunction    : cardinal;
    MaximumExtendedFunction : cardinal;
    VendorID                : array[0..12] of Char;
    Signature               : cardinal;
    SupportsMMX             : boolean;
    SupportsSSE             : boolean;
    SupportsSSE2            : boolean;
    SupportsSSE3            : boolean;
    SupportsHyperThreading  : boolean;
    SupportsIA64            : boolean;
    SupportsXDBit           : boolean;
    SupportsEMT64           : boolean;
  end;

var
  { globals used by the ReadProcessorInfo function }
  MBF,MEF     : cardinal;
  Sig         : cardinal;
  A,B,C       : cardinal;
  FF1,FF2,FF3 : cardinal;

function ReadProcessorInfo : ProcessorInfo; stdcall;
begin
  {$REGION 'cpuid'}
  asm
    { save registers used by the stdcall calling convention }
    push eax
    push ebx
    push ecx
    push edx
    { call CPUID }
    xor eax,eax
    cpuid
    mov MBF,eax
    { vendor ID }
    mov A,ebx
    mov B,edx
    mov C,ecx
    { signature &amp; feature flags 1-2 }
    mov eax,1
    cpuid
    mov Sig,eax
    mov FF1,edx
    mov FF2,ecx
    { extended functions }
    mov eax,$8000000
    cpuid
    mov MEF,eax
    { feature flags 3 }
    mov eax,$8000001
    cpuid
    mov FF3,edx
    { restore }
    pop edx
    pop ecx
    pop ebx
    pop eax
  end;
  {$ENDREGION}
  {$REGION 'parse results'}
  Result.MaximumBasicFunction := MBF;
  Result.MaximumExtendedFunction := MEF;
  Result.Signature := Sig;
  Result.VendorID[0] := Chr((A and $000000FF) shr 0);
  Result.VendorID[1] := Chr((A and $0000FF00) shr 8);
  Result.VendorID[2] := Chr((A and $00FF0000) shr 16);
  Result.VendorID[3] := Chr((A and $FF000000) shr 24);

  Result.VendorID[4] := Chr((B and $000000FF) shr 0);
  Result.VendorID[5] := Chr((B and $0000FF00) shr 8);
  Result.VendorID[6] := Chr((B and $00FF0000) shr 16);
  Result.VendorID[7] := Chr((B and $FF000000) shr 24);

  Result.VendorID[8] := Chr((C and $000000FF) shr 0);
  Result.VendorID[9] := Chr((C and $0000FF00) shr 8);
  Result.VendorID[10] := Chr((C and $00FF0000) shr 16);
  Result.VendorID[11] := Chr((C and $FF000000) shr 24);
  Result.VendorID[12] := #0;
  {$ENDREGION}
  {$REGION 'flags'}
  Result.SupportsMMX := (FF1 and (1 shl 23)) &lt;&gt; 0;
  Result.SupportsSSE := (FF1 and (1 shl 25)) &lt;&gt; 0;
  Result.SupportsSSE2 := (FF1 and (1 shl 26)) &lt;&gt; 0;
  Result.SupportsSSE3 := (FF2 and (1 shl 0)) &lt;&gt; 0;
  Result.SupportsHyperThreading := (FF1 and (1 shl 28)) &lt;&gt; 0;
  Result.SupportsIA64 := (FF1 and (1 shl 30)) &lt;&gt; 0;
  Result.SupportsXDBit := (FF3 and (1 shl 20)) &lt;&gt; 0;
  Result.SupportsEMT64 := (FF3 and (1 shl 29)) &lt;&gt; 0;
  {$ENDREGION}
end;

exports
   ReadProcessorInfo;

begin
end.
&lt;/pre&gt;

&lt;p&gt;Once you have this code compiled with Delphi, the result is a DLL file. The DLL exports a function that you can call. Now, start a new C# project and add the following code to it:&lt;/p&gt;

&lt;pre&gt;
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace Show_CPUID
{
    [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi)]
    public struct ProcessorInfo
    {
        public uint MaximumBasicFunction;
        public uint MaximumExtendedFunction;
        
        [MarshalAs(UnmanagedType.ByValTStr,SizeConst = 13)]
        public string VendorID;

        public uint Signature;

        [MarshalAs(UnmanagedType.I1)]
        public bool SupportsMMX;

        [MarshalAs(UnmanagedType.I1)]
        public bool SupportsSSE;

        [MarshalAs(UnmanagedType.I1)]
        public bool SupportsSSE2;

        [MarshalAs(UnmanagedType.I1)]
        public bool SupportsSSE3;

        [MarshalAs(UnmanagedType.I1)]
        public bool SupportsHyperThreading;

        [MarshalAs(UnmanagedType.I1)]
        public bool SupportsIA64;

        [MarshalAs(UnmanagedType.I1)]
        public bool SupportsXDBit;

        [MarshalAs(UnmanagedType.I1)]
        public bool SupportsEMT64;

        public string ToString()
        {
            string format = "MaximumBasicFunction = {0}\r\n" +
                "MaximumExtendedFunction = {1}\r\n" +
                "VendorID = \"{2}\"\r\n" +
                "Signature = {3}\r\n" +
                "SupportsMMX = {4}\r\n" +
                "SupportsSSE = {5}\r\n" +
                "SupportsSSE2 = {6}\r\n" +
                "SupportsSSE3 = {7}\r\n" +
                "SupportsHyperThreading = {8}\r\n" +
                "SupportsIA64 = {9}\r\n" +
                "SupportsXDBit = {10}\r\n" +
                "SupportsEMT64 = {11}\r\n";
            return string.Format(format, MaximumBasicFunction,
                MaximumExtendedFunction, VendorID, Signature,
                SupportsMMX, SupportsSSE, SupportsSSE2, SupportsSSE3,
                SupportsHyperThreading, SupportsIA64,
                SupportsXDBit, SupportsEMT64);
        }
    }

    public class CPUID_Info
    {
        [DllImport("CPUID_InfoLib.dll",CallingConvention=CallingConvention.StdCall)]
        public static extern void ReadProcessorInfo(ref ProcessorInfo pi);
    }
   
}
&lt;/pre&gt;

&lt;p&gt;The idea is that the DLL returns a record (in Delphi speak) to the C# application, but you must let C# to know how to marshal the values correctly between Win32 and .NET. Similarly, you need to use a DllImport attribute to your managed code so that the compiler knows where to find the function to read the CPUID data. Here, the attribute specified the name of the DLL file and the calling convention (here, StdCall).&lt;/p&gt;

&lt;p&gt;Finally, to call the function, all you need to do is:&lt;/p&gt;

&lt;pre&gt;
ProcessorInfo pi = new ProcessorInfo();
CPUID_Info.ReadProcessorInfo(ref pi);
MessageBox.Show(pi.ToString());
&lt;/pre&gt;

&lt;p&gt;There results are shown here:&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_jul_cpuid_managed_code.png"&gt;&lt;/p&gt;

&lt;p&gt;Good luck!&lt;/p&gt;</description>
      <pubDate>Wed, 05 Jul 2006 13:51:37 GMT</pubDate>
      <guid>b1ff43f8-0293-4882-ad92-df3c3edf6380</guid>
    </item>
    <item>
      <title>ADO.NET 3.0 and LINQ, fundamental changes ahead</title>
      <link>http://msdn.microsoft.com/vstudio/default.aspx?pull=/library/en-us/dnvs05/html/nxtgenda.asp</link>
      <description>&lt;p&gt;If you've read this blog lately, you might have noted that I occasionally talk about LINQ, or Language Integrated Query. This is a new feature in the coming C# 3.0 language, which allows the developer to more intuitively access data in different data sources, including SQL databases (RDBMS).&lt;/p&gt;

&lt;p&gt;Now, LINQ also requires updated to the ADO.NET framework, and MSDN has an article about this. Recommended reading for all C# developers, and why not Delphi developers as well. Only that Borland/DTG would get that .NET 2.0 support out even. :-)&lt;/p&gt;

&lt;p&gt;Finally, happy 4th of July to all US readers!&lt;/p&gt;</description>
      <pubDate>Mon, 03 Jul 2006 14:16:44 GMT</pubDate>
      <guid>b6c70876-cb69-4115-a970-689d0a6b281e</guid>
    </item>
    <item>
      <title>Where's threading going?</title>
      <link>http://www.intel.com/cd/ids/developer/asmo-na/eng/recent/230687.htm?page=4&amp;ppc_cid=rss-89939-c1-131963</link>
      <description>&lt;p&gt;I don't often follow Intel's web site except during new processor launches, but lately they've improved their software developer site considerably (in my point of view, anyway), and this time I found an interesting article about threading.&lt;/p&gt;

&lt;p&gt;The case is that according to Intel, threading will become the next obstacle for application developers. Today, applications still don't support threading as much they could, because developing such applications is often difficult, no matter if you use Win32 or .NET. However, in the future processors will become multicored, and so more and more of processor capacity will be wasted, unless applications can take advantage of the multiple cores. This Intel document is a good place to get started with the dilemma.&lt;/p&gt;</description>
      <pubDate>Sun, 02 Jul 2006 18:04:55 GMT</pubDate>
      <guid>c515adbd-6c26-4b20-bddc-1ac485035554</guid>
    </item>
    <item>
      <title>Adobe Reader 7.0 install rant</title>
      <link>http://west-wind.com/weblog/posts/1482.aspx</link>
      <description>&lt;p&gt;As software developers, we almost always want to keep quality of our work high. But, it isn't enough that just the code is good. Your application must also be easy to install *and* update. Here's a rant regarding Adobe Reader 7.0 and also a perfect example how you should &lt;i&gt;not&lt;/i&gt; build your installation routines. In fact, I ran into this situation exactly today, so here goes the play.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Act I.&lt;/b&gt; I'm helping to set up a W2K3 server from scratch. I need to open some PDF files on the server. Customer doesn't have yet have Internet connection (new location), so I go to my laptop to download Adobe Reader 7. Problem 1: Adobe only provides a 500k "smart installer", which obviously requires an Internet connection to fetch the rest of the files. Show stopper.&lt;/p&gt;

&lt;p&gt;I spent 15 minutes on their web site looking for a network/full install package, but just can't find it. I conclude I must be blind and resort to installing Adobe Reader 7.0.0 from an older CD that I happened to have.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Act II.&lt;/b&gt; The server now has an Internet connection. Reader starts to complain about missing 7.0.8 update. Okay, I believe in keeping computers up to date, so I say okay. Problem 2: The updates are not cumulative, so I need to install 7.0.5, 7.0.7 and then finally 7.0.8. Luckily, this is automatic, so good so far.&lt;/p&gt;

&lt;p&gt;Problem 3: The installation of 7.0.5 requires a reboot. This sucks! I reboot, 'cause what else can I do? Well, server is again up (booting a AD PDC takes ages!) and the installation resumes. Problem 4: update 7.0.7 also requires a reboot. This sucks big time! Problem 5 after 2nd reboot: update 7.0.8 still requires a reboot!!&lt;/p&gt;

&lt;p&gt;Does Adobe really think I can reboot a production server three times just to get updates to their software? And, what on earth can there be that requires a reboot? Or, that they don't give me the full install file on their web pages?&lt;/p&gt;

&lt;p&gt;No more Adobe products for me, thank you!&lt;/p&gt;</description>
      <pubDate>Fri, 30 Jun 2006 16:33:51 GMT</pubDate>
      <guid>85eac8da-bb46-4511-8f5d-83eac1a8b169</guid>
    </item>
    <item>
      <title>What is the "zone system" in photography?</title>
      <link>http://www.normankoren.com/zonesystem.html</link>
      <description>&lt;p&gt;Unless you are Ansel Adams already, there might be some topics with your exposure techniques that could use improvement. I confess that's the case at least with me.&lt;/p&gt;

&lt;p&gt;Now, you might have heard of the "Zone System". But what is this system, anyway? Take Norman Koren's introduction and you will know better. It is a very good text, so worth reading and keeping.&lt;/p&gt;</description>
      <pubDate>Wed, 28 Jun 2006 17:39:42 GMT</pubDate>
      <guid>f305f73b-3f47-4730-a2b7-f25ae3bf2bbb</guid>
    </item>
    <item>
      <title>Project Glidepath: Microsoft's giveaway for small ISVs</title>
      <link>http://www.projectglidepath.net/</link>
      <description>&lt;p&gt;Are you working for a small (say, less than 20 people) ISV and looking for ways to develop, market and promote your Windows Vista compatible applications? If yes, Microsoft's Project Glidepath might be what you are looking for.&lt;/p&gt;

&lt;p&gt;By definition, it is "designed to provide the knowledge you, as a MicroISV, need to be successful by providing step-by-step instructions for everything from how to get started with Windows Presentation Foundation to how to write and publish a press release."&lt;/p&gt;

&lt;p&gt;Sounds good to you? Go download it at http://www.projectglidepath.net/.&lt;/p&gt;</description>
      <pubDate>Mon, 26 Jun 2006 15:40:31 GMT</pubDate>
      <guid>1b0b5b2c-0bce-407a-b0e0-bb53d9cbb177</guid>
    </item>
    <item>
      <title>A good, hands-on tutorial for creating a DAL for your ASP.NET application</title>
      <link>http://msdn.microsoft.com/asp.net/reference/data/default.aspx?pull=/library/en-us/dnaspnettut/html/aspnet_tutorial01_dataaccesslayer_vb.asp</link>
      <description>&lt;p&gt;Scott Mitchell has written a very good tutorial about ASP.NET application development and the crucial step of accessing the data in a proper way. The examples are in VB.NET.&lt;/p&gt;

&lt;p&gt;Of course, for very simple web applications, a DAL (Data Access Layer) might be overkill, but it is better to get into the habit of having a proper foundation for your applications as they have the tendency to grow.&lt;/p&gt;</description>
      <pubDate>Mon, 26 Jun 2006 14:42:01 GMT</pubDate>
      <guid>83cfc6da-c5f2-42f5-a815-9bf05568b826</guid>
    </item>
    <item>
      <title>The disco floor and some C#</title>
      <link>http://msdn.microsoft.com/coding4fun/coolapplications/disco/default.aspx</link>
      <description>&lt;p&gt;MSDN's Coding4Fun has a great example of combining carpenter skills with electronics and programming. The result is a programmable (in C# of course) disco dance floow. I want mine, too!&lt;/p&gt;</description>
      <pubDate>Sun, 25 Jun 2006 15:20:52 GMT</pubDate>
      <guid>dcf05f0c-5a85-44c7-8c96-3376aae4eaf8</guid>
    </item>
    <item>
      <title>Happy Midsummer!</title>
      <link>http://en.wikipedia.org/wiki/Midsummer</link>
      <description>&lt;p&gt;Happy Midsummer! The longest day of the year has just passed, and nice and warm weather is here to stay the whole weekend. I'm heading to watch the bonfires, I'm quite sure there will be plenty of people there.&lt;/p&gt;</description>
      <pubDate>Fri, 23 Jun 2006 10:37:25 GMT</pubDate>
      <guid>e7b8001e-574d-41fa-802b-1cf9a99180b4</guid>
    </item>
    <item>
      <title>Finnish MVP meeting at Saunasaari, Helsinki</title>
      <link>http://mvp.support.microsoft.com/</link>
      <description>&lt;p&gt;I had the pleasure to attend yesterday the Finnish MVP meeting at an island called Saunasaari, a 15 minute boat trip from Helsinki.&lt;/p&gt;

&lt;p&gt;There were seven Finnish MVPs (me included) and two Microsoft local representatives, and we had a fun evening of sauna, swimming in the ocean and a very nice dinner. Thanks to Microsoft Finland for arranging the event!&lt;/p&gt;</description>
      <pubDate>Thu, 22 Jun 2006 16:32:46 GMT</pubDate>
      <guid>f7ee3e9a-f146-414e-a2a8-879c7f262c88</guid>
    </item>
    <item>
      <title>Gettings started with XAML layout: the DockPanel</title>
      <link>http://windowssdk.msdn.microsoft.com/en-us/ms745058(VS.80).aspx</link>
      <description>&lt;p&gt;When new programming APIs come available, there's usually a lot to learn. The Windows Presentation Foundation (WPF, aka Avalon) is no exception here, and after downloading Vista Beta 2, I wanted to see how I could get started with WPF and XAML. This is the first Vista beta release I could get WPF and XAMLPad to work properly, previous betas required too much tweaking and I didn't have that time then.&lt;/p&gt;

&lt;p&gt;Now, the WPF documentation (part of the Windows SDK) is currently preliminary, and although the reference portion seems to be good already, there is very little high-level, introductory material for example about layout. Or, at least I haven't been able to find it yet.&lt;/p&gt;

&lt;p&gt;When I started with XAML, I wanted to buidl those similar-looking applications as I did with Win32. You know, a treeview on the left, a status bar at the bottom and a listview on the left.&lt;/p&gt;

&lt;p&gt;To get this done, a DockPanel is what you need. Here's a simple piece of code that also demonstrates using colors and adding images to your application:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowTitle="DockPanel Sample"&amp;gt;
  &amp;lt;DockPanel LastChildFill="True"&amp;gt;
    &amp;lt;Border Height="40" Background="Gray" BorderThickness="0" DockPanel.Dock="Top"&amp;gt;
      &amp;lt;TextBlock Foreground="White"&amp;gt;Dock = "Top"&amp;lt;/TextBlock&amp;gt;
    &amp;lt;/Border&amp;gt;
    &amp;lt;Border Height="50" Background="Gray" BorderThickness="0" DockPanel.Dock="Bottom"&amp;gt;
      &amp;lt;TextBlock Foreground="White"&amp;gt;Dock = "Bottom"&amp;lt;/TextBlock&amp;gt;
    &amp;lt;/Border&amp;gt;
    &amp;lt;Border Width="200" Background="LimeGreen" BorderThickness="0" DockPanel.Dock="Left"&amp;gt;
      &amp;lt;TextBlock Foreground="White"&amp;gt;Dock = "Left"&amp;lt;/TextBlock&amp;gt;
    &amp;lt;/Border&amp;gt;
    &amp;lt;Border Background="Black" BorderThickness="0"&amp;gt;
      &amp;lt;TextBlock Foreground="White"&amp;gt;

&amp;lt;Image Width="100" Source="C:\Users\Public\Pictures\Sample Pictures\Forest flowers.jpg"/&amp;gt;
&amp;lt;Image Width="100" Source="C:\Users\Public\Pictures\Sample Pictures\Garden.jpg"/&amp;gt;
&amp;lt;Image Width="100" Source="C:\Users\Public\Pictures\Sample Pictures\Waterfall.jpg"/&amp;gt;
&amp;lt;Image Width="100" Source="C:\Users\Public\Pictures\Sample Pictures\Toco Toucan.jpg"/&amp;gt;

      &amp;lt;/TextBlock&amp;gt;	
    &amp;lt;/Border&amp;gt;
  &amp;lt;/DockPanel&amp;gt;
&amp;lt;/Page&amp;gt;&lt;/pre&gt;

&lt;p&gt;Here's the result of using this code in XAMLPad:&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_jun_xaml_dockpanel.png"&gt;&lt;/p&gt;

&lt;p&gt;Here, the DockPanel tag holds the area for the so-called "Borders" inside the DockPanel element. Each Border can have a width and height, or both. For example, to get space for a menu bar, you could add a border with the height of 40 pixels.&lt;/p&gt;

&lt;p&gt;Of course, you also need to specify where you want to dock that border. This is done with the DockPanel.Dock property, valid values are Top, Left, Bottom and Right.&lt;/p&gt;

&lt;p&gt;Finally, to get some content inside the panels, you can put a TextBlock component and some text into it. Of course, you can also nest TextBlocks and Images, as is done with the black border element at the middle of the screen.&lt;/p&gt;

&lt;p&gt;Hope this gets you going with XAML!&lt;/p&gt;</description>
      <pubDate>Sat, 17 Jun 2006 15:01:44 GMT</pubDate>
      <guid>89b0b196-c18a-40b1-8d4c-ef5c897387e5</guid>
    </item>
    <item>
      <title>If something hijacks your IE's View Source command, here's what to do</title>
      <link>http://support.microsoft.com/kb/163606/en-us</link>
      <description>&lt;p&gt;Some applications, for example text editors can change the default View Source editor in Internet Explorer. How I hate when this happens, especially when the installation program doesn't ask if you would like this to be done.&lt;/p&gt;

&lt;p&gt;Okay, here's the registry key you need to edit (or delete) if you want to return back to the default editor, i.e. Notepad.exe.&lt;/p&gt;

&lt;pre&gt;
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\
...View Source Editor\Editor Name
&lt;/pre&gt;

&lt;p&gt;Of course, if you want to go the other way around, just create this registry key and restart IE.&lt;/p&gt;</description>
      <pubDate>Thu, 15 Jun 2006 17:49:44 GMT</pubDate>
      <guid>05f67d50-9680-4f1f-8afc-7c26d6f70b89</guid>
    </item>
    <item>
      <title>Some developer Wikis for you?</title>
      <link>http://msdnwiki.microsoft.com/en-us/mtpswiki/default.aspx</link>
      <description>&lt;p&gt;Seems like Microsoft is really into community-enhanced content. The latest proof of this is the MSDN Wiki page. Sounds great!&lt;/p&gt;

&lt;p&gt;Now, in fact I expected a bit more, since to me Wiki immediately brings into mind the Wikipedia, which I have learned to use and love. The MSDN Wiki doesn't allow you to edit the content directly (which I would love), but instead lets the community add comments to the site. But that's a good start, and in the future Microsoft might enable the community to edit the whole contents of those documentation pages.&lt;/p&gt;</description>
      <pubDate>Tue, 13 Jun 2006 13:39:13 GMT</pubDate>
      <guid>dcce4fe3-d451-4fe2-a0ec-b147f030b368</guid>
    </item>
    <item>
      <title>New article in Tietokone</title>
      <link>http://www.tietokone.fi/</link>
      <description>&lt;p&gt;The June issue of Tietokone has my latest article about Microsoft's SyncToy utility. Personally, I have found SyncToy to be useful in taking backups to my external USB hard drive. As an additional plus, SyncToy is a .NET application.&lt;/p&gt;</description>
      <pubDate>Sun, 11 Jun 2006 09:21:05 GMT</pubDate>
      <guid>b8544de0-f87d-4205-a800-de2f6d6dfbd2</guid>
    </item>
    <item>
      <title>WinFX has been renamed .NET 3.0</title>
      <link>http://blogs.msdn.com/somasegar/archive/2006/06/09/624300.aspx</link>
      <description>&lt;p&gt;WinFX was the new name for the new, Vista-related programming interfaces, but to many developers this name was confusing and vague. I found that S. Somasegar (Corporate Vice President, Developer Division) had announced a new name for WinFX on his blog: .NET 3.0.&lt;/p&gt;

&lt;p&gt;I warmly welcome this new name. It is clear, informs developers that it is a new version of something that we already have (.NET) and helps Microsoft to market WinFX APIs better. The bad news is that I happened to like the word WinFX. :-)&lt;/p&gt;</description>
      <pubDate>Sun, 11 Jun 2006 05:55:49 GMT</pubDate>
      <guid>cbc59aaa-b056-4358-a808-da9939169981</guid>
    </item>
    <item>
      <title>Canon EF 70-200mm f/2.8L arrives</title>
      <link>http://www.bhphotovideo.com/</link>
      <description>&lt;p&gt;UPS brought my new toy today: the &lt;a href="http://www.usa.canon.com/consumer/controller?act=ModelDetailAct&amp;fcategoryid=150&amp;modelid=7341"&gt;Canon EF 70-200mm f/2.8&lt;/a&gt; lens. It's no plastic lens for sure, it weighs 1.3 kilograms, which is more than my EOS 5D body.&lt;/p&gt;

&lt;p&gt;Since it's a fine day today, I definitely wanted to take the lens outside for a walk. Even with just less than 100 shots, I can surely say it is sharp. Way sharp. In case you are interested, I bought mine from B&amp;H Photo Video in the USA.&lt;/p&gt;</description>
      <pubDate>Wed, 07 Jun 2006 17:49:29 GMT</pubDate>
      <guid>b077d15e-394a-439a-9cdc-538dd22dd66c</guid>
    </item>
    <item>
      <title>2007 Office System push for developers</title>
      <link>http://msdn.microsoft.com/office/future/</link>
      <description>&lt;p&gt;As you probably know, the next version of Office is soon here. Previously known as "Office 12", the new version is now called the 2007 Office System. Yes, you read right: the version number is before the name (which I think is pretty odd choice, but I guess I'll adjust).&lt;/p&gt;

&lt;p&gt;Now, just like with Windows Vista, 2007 Office is going to be a major upgrade to the previous Office 2003 version. Microsoft has often touted it's support for developers, and 2007 Office isn't going to be different. In fact, currently there's a major push going on for developers on MSDN. Go and check this information out as you don't want to get left behind.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 06 Jun 2006 14:41:53 GMT</pubDate>
      <guid>ab5e8781-4a4c-4ec3-84bb-0bc2a4544ab0</guid>
    </item>
    <item>
      <title>Landscape photos available</title>
      <link>http://www.saunalahti.fi/janij/photos/</link>
      <description>&lt;p&gt;I finally had the time to post-process (PP) and upload some of my landscape and nature shots to my site. More pictures are coming, especially those somewhat more surreal shots I have. Feel free to send me some e-mail with your comments.&lt;/p&gt;</description>
      <pubDate>Sat, 03 Jun 2006 07:49:22 GMT</pubDate>
      <guid>57f54b05-989a-4234-99a9-25d93af23663</guid>
    </item>
    <item>
      <title>Visual Studio 2005 Clipboard Ring tip</title>
      <link>http://msdn.microsoft.com/vstudio/</link>
      <description>&lt;p&gt;Happy June! Here in Helsinki, it's getting really nice an warm. Which is just what I need. Now, a rainy day is still nicely spent programming with Visual Studio 2005, and here's my today's tip for the keyboard-oriented developer: the Clipboard Ring.&lt;/p&gt;

&lt;p&gt;What is the Clipboard Ring? If you have used older Visual Studio versions, or, say, Office programs, you might have noticed that you can copy or cut multiple items, and then paste them all in the order you want.&lt;/p&gt;

&lt;p&gt;This is how the feature works in Visual Studio 2005 (say, C#). First, copy (Ctrl+C) or cut (Ctrl+X) some text in the Code Editor to the clipboard. Don't worry about replacing the previous contents of the clipboard with your new stuff. Now, go to the location where you want to paste. Instead of pressing Ctrl+V, press Ctrl+Shift+V.&lt;/p&gt;

&lt;p&gt;The selection will now match the contents of the latest piece of code you copied. At this point (don't move the cursor!) you can press Ctrl+Shift+V to cycle through all the (up to 20) previous things you copied. Very nice!&lt;/p&gt;</description>
      <pubDate>Thu, 01 Jun 2006 15:43:48 GMT</pubDate>
      <guid>041c90e0-1fa1-4152-b261-5bbb20c16380</guid>
    </item>
    <item>
      <title>Can't get Vista build 5384 to access the Internet with VMware</title>
      <link>http://www.vmware.com/</link>
      <description>&lt;p&gt;I to my disappointment, I tried testing Windows Vista build 5384 with VMware today, but it has a drawback: I cannot access the Internet inside the virtual machine. Very sad!&lt;/p&gt;

&lt;p&gt;So far, I haven't yet been able to solve the issue, but honestly I haven't yet spent too much time with the issue yet. The previous betas worked like a dream in this regard. VMware Support forums also didn't seem to contain anything about this issue, but I guess I'm not alone. Gotta try VMware on another PC to see if it helps.&lt;/p&gt;</description>
      <pubDate>Wed, 31 May 2006 15:09:22 GMT</pubDate>
      <guid>592dccbe-39b7-4cf8-86f1-0639a600e0f9</guid>
    </item>
    <item>
      <title>New CodeZone article</title>
      <link>http://www.codezone.fi/Artikkelit_Jani_Jaervinen2.Codezone</link>
      <description>&lt;p&gt;CodeZone is Microsoft's open community web site devoted to .NET and Visual Studio programming. I try to help the Finnish CodeZone site as time allows, and yesterday I had time for another short article.&lt;/p&gt;

&lt;p&gt;This time, my article demonstrates how to create a very simple new component with C# and how to install it into the Toolbox in Visual Studio 2005. The article is in Finnish and titled "Oman komponentin luominen". Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 30 May 2006 13:44:47 GMT</pubDate>
      <guid>947de301-b7d6-4e7f-a426-ccbf3f5ca699</guid>
    </item>
    <item>
      <title>PermCalc tells you about your .NET app's security</title>
      <link>http://msdn2.microsoft.com/en-us/library/ms165077.aspx</link>
      <description>&lt;p&gt;If you have ever had problems with security and permissions with .NET applications, you might have noticed that it can be tricky to solve which permissions you need to give your application for it to work. And it gets even worse if you are dealing with an application you didn't write!&lt;/p&gt;

&lt;p&gt;Now, the .NET 2.0 SDK contains a handy command-line tool called PermCalc.exe to help you with these issues. The Permission Calculator Tool takes an .EXE or a .DLL file (assembly), and analyzes it. The result is an XML file, which contains, among other things, the permissions needed by the application, by each class or namespace. And even though the tool itself only comes with .NET 2.0, it can also analyze older .NET 1.1 applications.&lt;/p&gt;</description>
      <pubDate>Mon, 29 May 2006 16:15:20 GMT</pubDate>
      <guid>1c221209-50aa-4038-a422-c888461b5af6</guid>
    </item>
    <item>
      <title>Your guide to WinFX</title>
      <link>http://www.winfxguide.com/</link>
      <description>&lt;p&gt;I today noticed a new web page devoted to Windows Vista and WinFX (.NET) programming, called WinFXGuide.&lt;/p&gt;

&lt;p&gt;Currently, this site contains links to other sites, but it promises to have it's own articles as well. All the most importants parts, WPF, WCF and WF (WWF) have their own sub-sites.&lt;/p&gt;</description>
      <pubDate>Sun, 28 May 2006 17:09:37 GMT</pubDate>
      <guid>7fdc9b15-f6f0-4234-8282-a22e223de398</guid>
    </item>
    <item>
      <title>Give your ideas to name Borland's spin-off DTG</title>
      <link>http://blogs.borland.com/MichaelSwindell/archive/2006/05/25/24935.aspx</link>
      <description>&lt;p&gt;It seems Borland's DTG (Developer Tools Group, a.k.a. "DevCo") is back at the fast lane. That's great!&lt;/p&gt;

&lt;p&gt;Michael Swindell posted few days ago a blog post and requested the community to send in their ideas about the DTG, it's new name, and so forth. It's time for you to participate.&lt;/p&gt;</description>
      <pubDate>Sun, 28 May 2006 16:05:35 GMT</pubDate>
      <guid>f9689d04-7527-4702-8a57-e0dbb6decdc3</guid>
    </item>
    <item>
      <title>Borland opens its Sanctuary database partially on BDN</title>
      <link>https://members.borland.com/</link>
      <description>&lt;p&gt;If you have been using Borland products during the past few years, you must have noticed that most of the their products now require activation, usually through the Internet.&lt;/p&gt;

&lt;p&gt;Now, all these activations and registrations go to one large database, that is called Sanctuary internally. Since I'm working for a Borland reseller, I often need to requiest somebody from Borland to open up more registrations for our customers, for example because they need to install Delphi into another machine, or move InterBase to a more powerful server, etc.&lt;/p&gt;

&lt;p&gt;However, the problem has been that this database is internal to Borland, and nobody outside can access it. But today, this changed as BDN (Borland Developer Network) opened a new account service that has a button to view "My Registered Products". This lists shows the public information in the Sanctuary database associated with your e-mail address. Take a look, it's a great addition to the site!&lt;/p&gt;</description>
      <pubDate>Thu, 25 May 2006 15:45:01 GMT</pubDate>
      <guid>4a6025dc-109c-4ff0-8c23-c6cbf973093d</guid>
    </item>
    <item>
      <title>Say hello to Singularity</title>
      <link>http://research.microsoft.com/os/singularity/</link>
      <description>&lt;p&gt;It was maybe a year ago, when I first hear about Microsoft's Singularity project. It is a research project at Microsoft that studies the possibility to build a new operating system that supports only managed code. The idea is that current operating systems require too much overhead on managed applications, such as those using .NET or Java. If the operating system would run managed code "natively", then such application could perform better. At the same time, many security vulnerabilities would be history, given that the OS itself would be flawless.&lt;/p&gt;

&lt;p&gt;There's also a recent MSDN Magazine &lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/06/EndBracket/default.aspx"&gt;article&lt;/a&gt; that discussed Singluarity. It reminded me again of this project, since I had already forgotten about it. Nonetheless, it would be interesting to see what could come out of this project.&lt;/p&gt;</description>
      <pubDate>Mon, 22 May 2006 14:37:27 GMT</pubDate>
      <guid>96046149-8db6-495a-b49b-941387958803</guid>
    </item>
    <item>
      <title>Finally a programmer's editor with a "Duplicate Line" function</title>
      <link>http://www.ultraedit.com/index.php?name=Content&amp;pa=showpage&amp;pid=10</link>
      <description>&lt;p&gt;Finally there's a programmer's text editor that supports the "Duplicate Line" command. This is great, since I've been waiting for this feature since I stopped using SemWare's legendary QEdit in DOS (I can still remember the F4 key, which was the one to duplicate the current line). You could still use QEdit under Windows, but I prefer a GUI instead nowadays:&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_may_qedit.jpg"&gt;&lt;/p&gt;

&lt;p&gt;The editor that supports the Duplicate Line is UltraEdit from IDM Computer Solutions. This is a lucky thing, since UltraEdit also happens to be my favorite text/hex editor. I've so far been using version 10.20, but the newest 12.10 version support also code folding, multiple clipboards and Unicode, which are all features I've been waiting to see. It is time for an upgrade. For only $40, that's well spent dollars.&lt;/p&gt;</description>
      <pubDate>Sun, 21 May 2006 07:57:34 GMT</pubDate>
      <guid>c2e036c7-1100-41c1-9a13-1335ee49362f</guid>
    </item>
    <item>
      <title>Photo sharing, anybody?</title>
      <link>http://www.microsoft.com/max/</link>
      <description>&lt;p&gt;Taking photos has never been easier and more fun with digital cameras, but the problem is that many photos just sit on their user's hard drive, because they don't know how to share them.&lt;/p&gt;

&lt;p&gt;Of course, there are dozens of tools available to help with this, such as Google's &lt;a href="http://picasa.google.com/"&gt;Picasa&lt;/a&gt;, but did you know also Microsoft has developed one? Well, it is called Max, and the interesting thing is that is build on top of Windows Presentation Foundation, or WPF, a.k.a. Avalon. That's exciting, especially as I today watched a video from MSDN TV about what WPF can do. Amazing stuff.&lt;/p&gt;</description>
      <pubDate>Sat, 20 May 2006 10:22:44 GMT</pubDate>
      <guid>4f0460a1-b8d8-48af-817f-b4683a1da92e</guid>
    </item>
    <item>
      <title>Understanding MSBuild</title>
      <link>http://msdn.microsoft.com/msdnmag/issues/06/06/InsideMSBuild/default.aspx</link>
      <description>&lt;p&gt;If you have used .NET 2.0 and Visual Studio 2005, you might have noticed the new build engine, called MSBuild. This is the Microsoft incarnation of the famous (in C++ circles, anyway) MAKE tool.&lt;/p&gt;

&lt;p&gt;The latest issue of MSDN magazine has an interesting article about the basics (and more) about the new Microsoft build engine. I just wish Borland would integrate MSBuild or something similar with their future version of BDS.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 18 May 2006 04:28:08 GMT</pubDate>
      <guid>a564f4b7-040b-4fdd-853e-d274d0eb8ac6</guid>
    </item>
    <item>
      <title>Borland DTG looks better than I expected</title>
      <link>http://www.borland.com/us/company/news/press_releases/2006/05_03_06_borland_unveils_new_organizational_structure.html</link>
      <description>&lt;p&gt;I had the chance to meet a Borland representative here in Helsinki today, and from what I heard, things are starting to look better for the "Developer Tools Group" inside Borland, or "DevCo".&lt;/p&gt;

&lt;p&gt;We discussed the forthcoming products and roadmaps, and there are going to be new releases on all fronts. That is good, although I'd personally like to see some real dates, even if they would slip. I also helped to compile a "wish list" for the new company so that they can get up to speed quickly. Who knows, we might already have more news during the summertime.&lt;/p&gt;</description>
      <pubDate>Mon, 15 May 2006 15:01:15 GMT</pubDate>
      <guid>86e1708a-2244-4026-ada8-78ee6ee2faf9</guid>
    </item>
    <item>
      <title>Got Avalon to work with Delphi 2006!</title>
      <link>http://www.microsoft.com/windowsvista/experiences/default.mspx</link>
      <description>&lt;p&gt;I finally got something working I've been interested in doing for a long time: using Delphi to write Windows Presentation Foundation (WPF, aka Avalon) applications. Well, today I finally got it working, and I feel excited!&lt;/p&gt;

&lt;p&gt;I'd love to give you the details here, but since I'm just preparing an article about Windows Vista for The Delphi Magazine, I'll save the details there. If you cannot wait, send me some e-mail.&lt;/p&gt;</description>
      <pubDate>Sun, 14 May 2006 14:34:30 GMT</pubDate>
      <guid>68a0dc03-bb5a-45d3-b097-c23ac19bd652</guid>
    </item>
    <item>
      <title>Codename "Monad" is now Windows PowerShell</title>
      <link>http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx</link>
      <description>&lt;p&gt;If you have been following MSDN closely, especially Exchange Server programming, and have read through my past blog entries, you might recall the codename Monad, the .NET version of CMD.EXE, the command-line shell of Windows. Now, Monad had become a public beta program, and there's also an official name for the product: it is called Windows PowerShell. I'm sure most IT pros will run into it sooner or later, so take note of the name. And remember, you heard it here first. :-)&lt;/p&gt;</description>
      <pubDate>Sat, 13 May 2006 08:39:42 GMT</pubDate>
      <guid>dab21d96-f8a7-489a-bfbc-2628c07eecea</guid>
    </item>
    <item>
      <title>BDS 2006, WinForms applications and missing resource file problem</title>
      <link>http://bdn.borland.com/article/33463</link>
      <description>&lt;p&gt;After downloading and installing Borland Developer Studio 2006 Update 2 (Delphi 2006 Update 2), I thought I'd recompile an old .NET 1.1 WinForms application that I wrote with BDS 2005.&lt;/p&gt;

&lt;p&gt;When you open an older project with BDS 2006, it is clever enough to convert your assembly references for the 2006 release (BDS 4.0 internally). This step goes nicely, but one I played around a bit with my application, I suddenly started to get these error messages when pressing F9 to run the application:&lt;/p&gt;

&lt;pre&gt;
Project MyDelphiProject.exe encountered unhandled exception
class System.Resources.MissingManifestResourceException with
message 'Could not find any resources appropriate for the
specified culture (or the neutral culture) in the given assembly.
Make sure "QueryForm.resources" was correctly embedded or linked
into assembly "MyDelphiProject".
&lt;/pre&gt;

&lt;p&gt;Now, I recall running into this problem earlier already with Delphi 2005, but then I thought it was just an user error. However, now I managed to run into the same problem many times, and thus I want to show you the workaround. (I'm still unable to exactly reproduce the problem, but it will happen with WinForms applications.)&lt;/p&gt;

&lt;p&gt;The problem occurs because Delphi somehow truncates your resource file references in your project's .DPR file. For each WinForm in your application, there should be an $R directive with the following format:&lt;/p&gt;

&lt;pre&gt;
{$R 'unit.form-class-name.resources' 'unit.resx'}
&lt;/pre&gt;

&lt;p&gt;However, for some reason, Delphi sometimes truncates these to simply:&lt;/p&gt;

&lt;pre&gt;
{$R 'unit.resources' 'unit.resx'}
&lt;/pre&gt;

&lt;p&gt;That is, the name of WinForms class is left out. If this happens, your project will not either compile and/or will refuse to run. To fix it, simply return the $R directives to their prior state.&lt;/p&gt;</description>
      <pubDate>Thu, 11 May 2006 13:49:55 GMT</pubDate>
      <guid>0d1e89ef-bd92-4ce1-ba1f-b9a2cf4b3397</guid>
    </item>
    <item>
      <title>Intel reseller seminar in Germany</title>
      <link>http://www.intel.com/cd/software/products/asmo-na/eng/index.htm</link>
      <description>&lt;p&gt;I attended an Intel software reseller meeting earlier this week in Munich, Germany. It was nice to learn how the hardware giant things about software development (FORTRAN isn't dead), and how multicore processors will be the future.&lt;/p&gt;

&lt;p&gt;These multicore processors will also require attention from us software developers. Most applications today are single-threaded, but that won't just do with the newest processors, and even less with future processors. If you want to offer the best to your customers, think how you could start making your applications multi-threaded.&lt;/p&gt;</description>
      <pubDate>Wed, 10 May 2006 16:15:13 GMT</pubDate>
      <guid>beebf10d-0c95-4fb4-bdc8-385214684461</guid>
    </item>
    <item>
      <title>When you develop installation programs, let the user decide if s/he wants to decide</title>
      <link>
      </link>
      <description>&lt;p&gt;Lately, I've needed to test and install lots of different software: small utilities, bigger applications, and many things in between. And I thank God that VMware has been invented. Otherwise, I'd screwed my Windows installation many times already.&lt;/p&gt;

&lt;p&gt;It's time that installation program developers act up. Yes, if you develop applications to the masses, it is good and necessary that installation is simple and smooth. Not that many questions need to be asked.&lt;/p&gt;

&lt;p&gt;But, when it comes to power users, does your installation program give the options to choose what the installation program should do? Think about it: how many times have you installed an application just to see that a new folder has been created under My Documents? Or that Windows Shell or Internet Explorer settings have been changed without asking if that was OK? Or, custom toolbars have just popped up in Word?&lt;/p&gt;

&lt;p&gt;Personally, I just hate when applications do that. Yes, I too want to have easy installation programs. But, when I choose the Custom setup (I always do), where are my choices? Nowadays, almost the only differences between the standard and custom setup routines is the fact that with the latter, you can select which program options are installed. But nothing else.&lt;/p&gt;

&lt;p&gt;That is wrong. A custom setup should give the options to the user. Of course, that means that creating installation programs comes more difficult. But, if you don't understand why you should spend more time writing those custom installer options, or worse, you don't know how to do it, then you shouldn't be writing installation programs in the first place. Sorry, but that's the way it goes.&lt;/p&gt;</description>
      <pubDate>Sun, 07 May 2006 09:05:07 GMT</pubDate>
      <guid>6dcbc1d1-8125-40f9-b0f7-6483a7d740fb</guid>
    </item>
    <item>
      <title>Borland lays off, but DevCo hires</title>
      <link>http://www.eweek.com/article2/0,1759,1957273,00.asp?kc=EWRSS03119TX1K0000594</link>
      <description>&lt;p&gt;There seems to be conflicting news about what Borland is doing at the moment in regards to the company without the development tools. Yesterday, &lt;a href="http://www.eweek.com/article2/0,1759,1957273,00.asp?kc=EWRSS03119TX1K0000594"&gt;eWeek reported&lt;/a&gt; that Borland lays of about 300 people.&lt;/p&gt;

&lt;p&gt;But at the same time, &lt;a href="http://biz.yahoo.com/bw/060503/20060503005304.html"&gt;Borland has announced&lt;/a&gt; a new organizational structure. That is to say that the "DevCo" is now a really separate unit within Borland. The interesting bit is that this press release is still not visible on Borland's &lt;a href="http://www.borland.com/us/company/news/index.html"&gt;official press release&lt;/a&gt; page.&lt;/p&gt;</description>
      <pubDate>Thu, 04 May 2006 13:26:52 GMT</pubDate>
      <guid>044eb067-4bb7-4741-8bf4-5e517cec47fe</guid>
    </item>
    <item>
      <title>Microsoft's BitLocker can help you keep your files save</title>
      <link>http://www.microsoft.com/technet/windowsvista/library/c61f2a12-8ae6-4957-b031-97b4d762cf31.mspx</link>
      <description>&lt;p&gt;So far, if you wanted to keep the files in, say, your laptop safe, you had used products like Utimaco SafeGuard Easy or PGP's new Whole Disk Encryption (WDE). But, Microsoft is not letting other products grab the whole market. Instead, it is introducing a feature called BitLocker Drive Encryption (BDE) on Windows Vista operating system.&lt;/p&gt;

&lt;p&gt;At this point, there's already quite a lot of information available regarding the BitLocker technology, TechNet being one. But what would this kind of feature mean for software developers? Think about the older &lt;a href="http://www.microsoft.com/technet/prodtechnol/winxppro/deploy/cryptfs.mspx"&gt;Encrypting File System&lt;/a&gt; (EFS). Do you need to know this feature exists?&lt;/p&gt;

&lt;p&gt;The answer is yes and no. As for your application, using EFS is transparent; you can continue to use your files exactly the same way even if they are encrypted by EFS. But, as a developer you also need to think about security, and it is your part to educate that your customers can use EFS to enhance the security of your application. So at least for performance, security and troubleshooting purposes, yes, you need to be aware of EFS. The exact same applies to BitLocker. And of course, these two technologies can help you keep your own files secure, too.&lt;/p&gt;</description>
      <pubDate>Mon, 01 May 2006 17:14:53 GMT</pubDate>
      <guid>ae539bdf-db72-4507-9d85-650fe8778320</guid>
    </item>
    <item>
      <title>Understanding Delphi Unit initialization order</title>
      <link>
      </link>
      <description>&lt;p&gt;Sometimes, Delphi developers get confused about the order in which their units get initialized and finalized. For instance, if you have code in an initialization section of a unit that depends on the initialization of another unit, chances are this coupling can break if you are not aware of the rules in which units are initialized and finalized.&lt;/p&gt;

&lt;p&gt;If you take a look at the documentation that comes with Borland Delphi (or Borland Developer Studio), it just simply says that the order depends on the order which the units are listed in the project (.DPR) file. For simple cases, this is perfectly true, but it can get more difficult than that. Lets see a simple example with four units.&lt;/p&gt;

&lt;p&gt;First, assume you have project file that looks like this:&lt;/p&gt;

&lt;pre&gt;
program Project1;

uses
  Unit1 in 'Unit1.pas',
  Unit2 in 'Unit2.pas',
  Unit3 in 'Unit3.pas',
  Unit4 in 'Unit4.pas';

begin
  { some code here }
end.
&lt;/pre&gt;

&lt;p&gt;Now, lets say all the units 1-4 look similar to this:&lt;/p&gt;

&lt;pre&gt;
unit Unit1;

interface

implementation

uses Windows;

initialization
  OutputDebugString('Unit1 Initialization');
finalization
  OutputDebugString('Unit1 Finalization');
end.
&lt;/pre&gt;

&lt;p&gt;In this simple situation, the units are initialized in order 1 to 4, and finalized in the opposite order, 4 to 1. This is easily proved by looking Delphi's Event Log debug window output:&lt;/p&gt;

&lt;pre&gt;
Debug Output: Unit1 Initialization Process Project1.exe (1960)
Debug Output: Unit2 Initialization Process Project1.exe (1960)
Debug Output: Unit3 Initialization Process Project1.exe (1960)
Debug Output: Unit4 Initialization Process Project1.exe (1960)
...
Debug Output: Unit4 Finalization Process Project1.exe (1960)
Debug Output: Unit3 Finalization Process Project1.exe (1960)
Debug Output: Unit2 Finalization Process Project1.exe (1960)
Debug Output: Unit1 Finalization Process Project1.exe (1960)
&lt;/pre&gt;

&lt;p&gt;Now, if you would change the order of the units in the Uses clause of the .DPR from "1-2-3-4" to say, "3-1-2-4", then the initialization order would be the same as the order in the Uses clause: 3-1-2-4. And, as you have learned, the finalization would happen in reverse order, giving 4-2-1-3. Easy, no?&lt;/p&gt;

&lt;p&gt;Now, lets return to the basic order again (order 1-2-3-4). Since units often use other units, it is important to learn that this also affects the unit initialization order. So, what would happen if you would change Unit1 to use Unit4 in the interface section? Like this:&lt;/p&gt;

&lt;pre&gt;
unit Unit1;

interface

uses Unit4;  &lt;-- NOTE THIS

implementation

uses Windows;

initialization
  OutputDebugString('Unit1 Initialization');
finalization
  OutputDebugString('Unit1 Finalization');
end.&lt;/pre&gt;

&lt;p&gt;Now, what would the order look like in this case? Think of a chain. The initialization starts from the first unit in the .DPR Uses clause, so it goes to Unit1. But, if Unit1 uses any other unit (in this case, Unit4), that unit is initialized first. This is important to remember. So in this case, the output would be:&lt;/p&gt;

&lt;pre&gt;
Debug Output: Unit4 Initialization Process Project1.exe (2680)
Debug Output: Unit1 Initialization Process Project1.exe (2680)
Debug Output: Unit2 Initialization Process Project1.exe (2680)
Debug Output: Unit3 Initialization Process Project1.exe (2680)
...
Debug Output: Unit3 Finalization Process Project1.exe (2680)
Debug Output: Unit2 Finalization Process Project1.exe (2680)
Debug Output: Unit1 Finalization Process Project1.exe (2680)
Debug Output: Unit4 Finalization Process Project1.exe (2680)
&lt;/pre&gt;

&lt;p&gt;So suddenly, the order is 4-1-2-3! I hope this clarifies the situation.&lt;/p&gt;</description>
      <pubDate>Sat, 29 Apr 2006 08:55:56 GMT</pubDate>
      <guid>21e5346c-4633-4d3b-93c9-e950b4f0448a</guid>
    </item>
    <item>
      <title>Are there going to be music products from Microsoft?</title>
      <link>http://www.microsoft-watch.com/article2/0,1995,1947454,00.asp?kc=MWRSS02129TX1K0000535</link>
      <description>&lt;p&gt;This appears to be one-month old news, but I heard just lately that Microsoft is planning to introduce products that are geared towards musicians. Since most "The" music products are on Mac, it would be nice to have some real broadliner like Microsoft to have their own products as well.&lt;/p&gt;

&lt;p&gt;Enter code-name Monaco. This could become the Windows version of Apple's GarageBand application. Do we get Monaco on MSDN once it is ready? :-) I'd be one to download it immediately.&lt;/p&gt;</description>
      <pubDate>Wed, 26 Apr 2006 17:38:04 GMT</pubDate>
      <guid>e1408e64-a25b-44a2-8219-1e5575e403cf</guid>
    </item>
    <item>
      <title>Confused about SOX, HIPAA, or GLBA? Try this.</title>
      <link>http://msdn.microsoft.com/security/default.aspx?pull=/library/en-us/dnsecure/html/regcompliance_demystified.asp</link>
      <description>&lt;p&gt;Regulatory compliance, accounting, law, rules by the book, ... Ahem, not very interesting for us developers. But, it ought to be especially if you are developing applications for large corporations and the public sector.&lt;/p&gt;

&lt;p&gt;There's a nice article on MSDN that demystifies a lot of questions up in the air when it comes to Sarbanes-Oxley (SOX), HIPAA, and others.&lt;/p&gt;</description>
      <pubDate>Sun, 23 Apr 2006 08:55:27 GMT</pubDate>
      <guid>3f94b842-0017-49d3-b7f4-451969b95f2b</guid>
    </item>
    <item>
      <title>Windows Vista security distilled on TechNet</title>
      <link>http://www.microsoft.com/technet/technetmag/issues/2006/05/FirstLook/default.aspx</link>
      <description>&lt;p&gt;There's a very informative, short little article in the May-June issue of the TechNet Magazine about Windows Vista security features.&lt;/p&gt;

&lt;p&gt;The article talks about User Account Control (UAC), data encryption and service hardening. Highly recommended reading for every Windows developer, no matter if you use C# or Delphi!&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 21 Apr 2006 13:40:43 GMT</pubDate>
      <guid>c37671ff-837e-4c7e-9a06-89d93cfe8c5b</guid>
    </item>
    <item>
      <title>Put Managed Debugging Assistants to work for you</title>
      <link>http://msdn.microsoft.com/msdnmag/issues/06/05/BugBash/default.aspx</link>
      <description>&lt;p&gt;If you are using Visual Studio 2005 for developing .NET applications, there's a quite little-known debuggingn feature in this new release called Managed Debugging Assistants (MDAs). These little, umm, we could call them helpers of sort, analyze your application and the environemnt  in which it is running (CLR to be more specific), and let you know if there's something odd happening, such as your stack becoming corrupted.&lt;/p&gt;

&lt;p&gt;The newest MSDN Magazine issue has a great little article that investigates this feature. If you want to learn something new every day, this is your chance for today.&lt;/p&gt;</description>
      <pubDate>Wed, 19 Apr 2006 13:55:25 GMT</pubDate>
      <guid>a15d043d-13eb-4ccb-a8e2-1d85e91420a7</guid>
    </item>
    <item>
      <title>Beginner's getting started guide to Visual Studio 2005 data access</title>
      <link>http://msdn.microsoft.com/coding4fun/inthebox/dataenabled/default.aspx</link>
      <description>&lt;p&gt;I recently ran into this month-old article, which teaches data access using Visual Studio 2005 and .NET 2.0. This is a beginner’s article, which just gets you going, but oftentimes that's all a beginner would need.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 16 Apr 2006 15:51:28 GMT</pubDate>
      <guid>8d14d610-fd78-425d-b112-164c342ecb90</guid>
    </item>
    <item>
      <title>XMLHttpRequest heading for standardization</title>
      <link>http://www.w3.org/TR/XMLHttpRequest/</link>
      <description>&lt;p&gt;The nifty XMLHttpRequest object, which is the basics of AJAX (Asynchronous JavaScript and XML) has been implemented kind of the same in the most important web browsers, but so far there hasn’t been any official standards. As AJAX is enjoying its current media shine, it is time for a standardized version of the XMLHttpRequest object. Luckily, W3C has already started this process for the benefit of all developers (and eventually, users), and the results can be seen on their web pages. The current status is Working Draft.&lt;/p&gt;</description>
      <pubDate>Fri, 14 Apr 2006 14:58:47 GMT</pubDate>
      <guid>eadae05e-73e8-4000-b0d5-110ee625e910</guid>
    </item>
    <item>
      <title>Borland brain drain, or the other way?</title>
      <link>http://blogs.borland.com/abauer/archive/2006/04/11/24333.aspx</link>
      <description>&lt;p&gt;In the past few years, many key R&amp;D team members have left Borland, which in my opinion has been a blow to the company, despite what the official communications say. For example, we all know that Anders Hejlsberg left for Microsoft to build .NET and C#, but also Danny Thorpe, the compiler architect for many years, &lt;a href="http://groups.google.com/group/borland.public.delphi.non-technical/browse_frm/thread/1c33d1760c80fcf/8f616227ae682724?lnk=st&amp;q=Danny+Thorpe+left+Borland&amp;rnum=1#8f616227ae682724"&gt;has left&lt;/a&gt; to name a few.&lt;/p&gt;

&lt;p&gt;The latest information came through Falafel Software's &lt;a href="http://www.falafel.com/News/tabid/54/ctl/ViewPressRelease/mid/429/PressReleaseID/12/ReturnTab/36/Default.aspx"&gt;press releases&lt;/a&gt;, where one can read that Ramesh Theivendran (the web/database guy) has also left Borland. Well, nobody is indispensable in business, but I’m starting to loose my faith if these news continue.&lt;/p&gt;

&lt;p&gt;Of course, not everybody is leaving. &lt;a href="http://blogs.borland.com/abauer/archive/2006/04/11/24333.aspx"&gt;According to&lt;/a&gt; Allan Bauer's blog, they now have a new compiler guy in the team, and also have hired an old-timer, ex-Borlander Steve Shaughnessy. He worked on the Paradox DOS team, remember the product? That said, only time will tell what will become of the "DevCo". I’m waiting for the news with interest. Luckily, I’m not betting all on one card, as I have learned to love Visual Studio as well as Delphi.&lt;/p&gt;</description>
      <pubDate>Wed, 12 Apr 2006 16:56:07 GMT</pubDate>
      <guid>b68d6312-5c54-4499-ba53-5c211769a436</guid>
    </item>
    <item>
      <title>Half of current PCs are "Vista ready"</title>
      <link>http://www.eweek.com/article2/0,1759,1947291,00.asp?kc=EWRSS03119TX1K0000594</link>
      <description>&lt;p&gt;The eWeek magazine quotes a recent Gartner research about Windows Vista "ready" PCs, and concludes that about half of current PCs meet Vista's hardware requirements. Personally, I think two technical details matter most here: the amount of RAM in the PC and the video/graphics card the PC happens to have. Of course, the final system requirements are yet to be shaped, but I would bet these are the two main things.&lt;/p&gt;

&lt;p&gt;However it should be noted that Vista will also run without the glass-like Aero graphics engine. For us software developers, it is important to learn that when your application run on Vista, you actually know that the PC the user has is powerful in today's standards. But that doesn’t mean you can get sloppy with performance and tuning of your code.&lt;/p&gt;</description>
      <pubDate>Mon, 10 Apr 2006 14:37:15 GMT</pubDate>
      <guid>8f1950d7-0577-4790-9e95-67e020c2006c</guid>
    </item>
    <item>
      <title>Visual Studio Information for Borland Delphi developers</title>
      <link>http://msdn.microsoft.com/vstudio/products/borlandtovstudio/default.aspx</link>
      <description>&lt;p&gt;Microsoft is without doubt wanting to get all abroad the Visual Studio ship, and thus they have also compiled a informational page for Borland Delphi customers. Since some Delphi users have switched to Visual Studio (especially version 2005), this kind of information has its uses.&lt;/p&gt;

&lt;p&gt;Originally, the page had a question about Delphi's support for Java, but obviously that was in error. This problem has now been fixed.&lt;/p&gt;</description>
      <pubDate>Sun, 09 Apr 2006 09:59:05 GMT</pubDate>
      <guid>5dd3a77f-a190-421b-86f6-a3d4b18368ff</guid>
    </item>
    <item>
      <title>Three articles in Tietokone</title>
      <link>http://www.tietokone.fi/</link>
      <description>&lt;p&gt;The April 2006 issue of Tietokone popped into my mailbox today. From this issue, you can find three of my articles. I'll update my pages to reflect the latest info soon.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;</description>
      <pubDate>Fri, 07 Apr 2006 09:35:25 GMT</pubDate>
      <guid>fafd0ff6-75c4-450d-b50a-b0ca046fc238</guid>
    </item>
    <item>
      <title>Start of the biking season</title>
      <link>http://www.kawasaki.com/product_category.asp?category=2&amp;tag=motorcycle</link>
      <description>&lt;p&gt;The spring is few weeks late here in Helsinki, but I decided today to take my bike away from the garage and ride it to maintenance. It didn't take long after it was done, and so it was time for the first ride of the spring.&lt;/p&gt;

&lt;p&gt;Can't say it was a much as fun as in summer, but after a six month absence, it feels great to be able to feel the freedom again. Though I like my BMW, I prefer my bike for the additional fun it provides.&lt;/p&gt;</description>
      <pubDate>Thu, 06 Apr 2006 15:46:31 GMT</pubDate>
      <guid>7ee5702e-a35a-433e-b249-0fe4639af53e</guid>
    </item>
    <item>
      <title>MVP award for another year</title>
      <link>http://mvp.support.microsoft.com/</link>
      <description>&lt;p&gt;I today received an e-mail from Microsoft I had hoped I would. I got an confirmation that I've been selected to receive the MVP Award for 2006 as well.&lt;/p&gt;

&lt;p&gt;Thank you Microsoft! I'm vrey pleased to be on board again, since it has been a great year. Also I'm looking forward to interacting with the Visual Studio product group as they prepare for the Orcas release. Stay tuned for more info.&lt;/p&gt;</description>
      <pubDate>Wed, 05 Apr 2006 05:51:18 GMT</pubDate>
      <guid>69d4e2df-4ef8-4d6f-8035-af4d10dcabea</guid>
    </item>
    <item>
      <title>It's a pity Firefox can't count</title>
      <link>http://www.mozilla.com/firefox/</link>
      <description>&lt;p&gt;Despite what some of my colleagues and friends tell me, I don't need to use Firefox for my daily surfing, neither at home or at the office. I'm still using IE, as it works the best for me.&lt;/p&gt;

&lt;p&gt;Now, the only reasons I use Firefox are Flash-only web sites and some downloads. Flash is common in many "better" web sites, but I never liked those animations, and thus have disabled the Shockwave plug-in in my IE. Instead, I switch to Firefox when I need to see Flash content.&lt;/p&gt;

&lt;p&gt;But today I wanted to see how the Download Manager in Firefox could cope with large downloads. I was downloading a DVD ISO image from an Finnish FTP site, when the screen started looking like this:&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_apr_firefox_download_problem.png"&gt;&lt;/p&gt;

&lt;p&gt;As you see, Firefox cannot count properly. Okay, it is the old 1.0.7 version, but I cannot help thinking about the assertion some people make that open-source leads to better code. Using 32 bit integers for file size calculatations in the 2000s. Hello...!&lt;/p&gt;</description>
      <pubDate>Tue, 04 Apr 2006 09:22:06 GMT</pubDate>
      <guid>93d1c53a-ee93-4645-8c48-1ef0dcda6331</guid>
    </item>
    <item>
      <title>How to run Windows Malicious Software Removal Tool</title>
      <link>http://www.microsoft.com/security/malwareremove/</link>
      <description>&lt;p&gt;Sometimes, malicious software can hit your PC even if you are running the latest antivirus products and a proper firewall. In those situations, it is good to have proper tools to get rid of those little germs.&lt;/p&gt;

&lt;p&gt;You might have heard that Microsoft has developed a tool called Malicious Software Removal Tool (MSRT or MRT), which is updated once a month using Windows Update or Automatic Updates. But what if you wanted to run the tool just now?&lt;/p&gt;

&lt;p&gt;If you are following the instructions given by Microsoft, you should browse to Microsoft's web site, and run the tool from there. Okay, this is good and guarantees the latest version, but what if you want to eliminate the Internet connection from the infected PC and cannot surf the net? In those situations, it is helpful to know how to run the tool in a standalone mode.&lt;/p&gt;

&lt;p&gt;Here's how: if you have updated your PC automatically (as you should have), then the Malicious Software Removal Tool is already on your PC. It lives in the Windows System32 directory under the name MRT.exe. Simply run this executable (or type "mrt" on the command line) and there you go. Easy once you know how!&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_apr_mrt.png"&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 04 Apr 2006 05:21:57 GMT</pubDate>
      <guid>62b31585-ce8d-4993-aa22-915474140bf4</guid>
    </item>
    <item>
      <title>C# FAQ Entries on MSDN blogs</title>
      <link>http://blogs.msdn.com/csharpfaq/</link>
      <description>&lt;p&gt;You might have noticed that there exists an C# FAQ (Frequently Asked Questions) on the MSDN blogs web site.&lt;/p&gt;

&lt;p&gt;I decided to help with the FAQ, and wrote two simple entries to the FAQ. Scott Nonnenberg, the Program Manager for the Visual C# Team helped me to publish the entries. More entries are on the works, and in the meantime, feel free to comment the entries on the site.&lt;/p&gt;</description>
      <pubDate>Mon, 03 Apr 2006 08:07:55 GMT</pubDate>
      <guid>9aa4c32c-4bd5-4735-8956-f08ce583b064</guid>
    </item>
    <item>
      <title>Pinnacle Publishing sold to Eli Journals</title>
      <link>http://www.pinpub.com/ME2/Default.asp</link>
      <description>&lt;p&gt;As an author, I'm naturally interested in the ventures of the publication companies that run the magazines I write to. As such, you might recall my earlier blog post late last year, that Pinnacle Publishing merged two of their Visual Studio / Visual Basic magazines into one, and at the same time, they changed the editor, my main contact for the magazine.&lt;/p&gt;

&lt;p&gt;Of course, things change over time, but when I was yesterday contacting the new editor, I learned that Pinnacle Publishing has been sold to &lt;a href="http://www.elementkjournals.com/"&gt;Eli Journals&lt;/a&gt; (formely Element K Journals) in Rochester, NY. This was news to me, since previously Pinnacle was owned by &lt;a href="http://www.ragan.com/ME2/Default.asp"&gt;Lawrence Ragan Communications, Inc&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Wed, 29 Mar 2006 05:05:36 GMT</pubDate>
      <guid>a6dea81a-4d09-4e4e-a510-e72e4d992297</guid>
    </item>
    <item>
      <title>How to fix a frequently disconnecting WLAN connection</title>
      <link>http://www.microsoft.com/athome/moredone/wirelesssetup.mspx</link>
      <description>&lt;p&gt;If everything would go as planned, setting up a new WLAN (Wireless LAN) connection at home would required something like simple four steps. Well, if you don't care about security, then it might be so. But if I'm going to set somebody's WLAN connection up, I don't want to leave it unsecured, even if it is a seldomly used home connection.&lt;/p&gt;

&lt;p&gt;Now, I needed to setup one such connection few days ago, and the basic setup was pretty simple. But, once I enable security, the connection started to run into problems: the connection simply disconnected every 10 minutes.&lt;/p&gt;

&lt;p&gt;As I'm no wireless connection expert (but could say I know at least something about IT), I couldn't immediately figure out the reason. But, since the disconnections were periodic and frequent, it was easy to conclude that some settings had gone wild. And indeed it had.&lt;/p&gt;

&lt;p&gt;To fix this problem with the given ZyXel WLAN/DSL modem, I simply needed to go to the properties of the wireless connection in Windows XP, select Advanced properties, and then go to this dialog box tab:&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_mar_wireless_802_1x_auth.jpg" alt="Windows XP wireless connection properties"&gt;&lt;/p&gt;

&lt;p&gt;From here, I unchecked the "Enable IEEE 802.1x authentication for this network", and the interruptions and connection failures stopped. And yes, the said connection uses WEP (Wired Equivalent Privacy), but not yet WPA (Wi-Fi Protected Access).&lt;/p&gt;</description>
      <pubDate>Tue, 28 Mar 2006 16:16:08 GMT</pubDate>
      <guid>f46265cc-5537-4a8a-ad07-45c30abcc393</guid>
    </item>
    <item>
      <title>Using Delphi 2006 to access .NET 2.0</title>
      <link>http://delphi-notes.blogspot.com/2006/03/eager-to-use-delphinet-for-net-20.html</link>
      <description>&lt;p&gt;I was browsing the Internet today when I came across &lt;strong&gt;Daniel Wischnewski's&lt;/strong&gt; blog. There's a nice entry about using Delphi 2006 (alias Borland Developer Studio 2006 or BDS 2006) to access .NET 2.0. This can be done by using the DCCIL.exe command-line compiler that ships with Delphi, and by using the --clrversion parameter.&lt;/p&gt;

&lt;p&gt;Okay, that's nice, and lets you access the .NET 2.0 libraries, but still, the compiler itself only emits .NET 1.1 code, which means there's no support for generics, Edit &amp; Continue, and so forth. That said, Daniel's post is good in that it raises awareness of this compiler and the said command-line switch, but other than that, I'm more interested in the next version of BDS, i.e. "Highlander".&lt;/p&gt;</description>
      <pubDate>Sun, 26 Mar 2006 13:49:37 GMT</pubDate>
      <guid>ceb6af24-1d03-40f8-8688-4460539b6d93</guid>
    </item>
    <item>
      <title>Firewalls can be tricky if you don't know them</title>
      <link>http://support.microsoft.com/?kbid=832017</link>
      <description>&lt;p&gt;For some reason, I've ran into two cases with different people that firewalls cause them problems with the FTP protocol. Now, firewalls can be tricky, especially if you don't need to configure them, or you don't exactly understand what ports you need to open and in which direction.&lt;/p&gt;

&lt;p&gt;Now, speaking of the port issue, I found a great Microsoft Knowledge Base article (ID 832017) which combines a lot of information about which ports Windows operating systems need. For example, can you easily remember the ports you need to open to get file sharing to work? Or MSMQ? It is all in this document. Good luck!&lt;/p&gt;</description>
      <pubDate>Thu, 23 Mar 2006 15:29:46 GMT</pubDate>
      <guid>5ed51cf8-eb79-4648-bc2d-d07fe9defcd4</guid>
    </item>
    <item>
      <title>Windows Live and developers</title>
      <link>http://www.microsoft-watch.com/article2/0,1995,1940334,00.asp</link>
      <description>&lt;p&gt;Windows Live services are taking shape daily, and now Microsoft has announced what Windows Live means for developers, too. See the Microsoft Watch site for details.&lt;/p&gt;

&lt;p&gt;Microsoft's strategy is to open "the Windows Live platform to third parties to create a virtuous ecosystem." I'm not sure yet what this will mean from a technical/programming perspective (except that they will be web/HTTP applications), but surely time will tell.&lt;/p&gt;</description>
      <pubDate>Wed, 22 Mar 2006 04:33:29 GMT</pubDate>
      <guid>e37d3aa2-ec00-4a1f-90c3-2f53a765b4b0</guid>
    </item>
    <item>
      <title>New article about C99 in Prosessori</title>
      <link>http://www.prosessori.fi/</link>
      <description>&lt;p&gt;The Finnish Prosessori magazine has my latest programming article. This time, it is about the C programming language and the latest C99 standard, which unfortunately isn't supported that well by compiler makers as they prefer C++.&lt;/p&gt;</description>
      <pubDate>Sat, 18 Mar 2006 09:29:48 GMT</pubDate>
      <guid>651a7bb2-bb03-4c2f-95d8-2184e29ca267</guid>
    </item>
    <item>
      <title>Team Foundation Server launched</title>
      <link>http://msdn.microsoft.com/vstudio/teamsystem/team/tfs_released/</link>
      <description>&lt;p&gt;Today is an important day for Visual Studio, since the first production version of Team Foundation Server (TFS) are now officially available.&lt;/p&gt;

&lt;p&gt;I'm excited to see how customers working with larger projects take this product. It might take a few years though, since it is the new process that one has to adapt that takes time to sink in, so to say.&lt;/p&gt;</description>
      <pubDate>Fri, 17 Mar 2006 15:03:10 GMT</pubDate>
      <guid>6062d873-1179-42ec-ac9d-a40cef58eac9</guid>
    </item>
    <item>
      <title>Microsoft Connect Event 2006 in Nice, France</title>
      <link>www.microsoft.com/partner/events/</link>
      <description>&lt;p&gt;I've spent the last three days in the warmth (comparatively speaking) of Nice, France. It was the Microsoft Connect Event 2006, to which I got an invitation from my local Microsoft D&amp;PE team, Sampo to be precice.&lt;/p&gt;

&lt;p&gt;This year, the focus of the event was in security. Thus, we had the chance to attend security related sessions (and some Windows Communication Foundation) and participate in related panel discussions. The most interesting sessions were held by Rafal Lukawiecki and Clemens Vasters.&lt;/p&gt;

&lt;p&gt;During my trip, I also had the chance to meet &lt;a href="http://www.msmvps.com/blogs/mika//"&gt;Mika Seitsonen&lt;/a&gt; from FCSSovelto, who is also a MVP (Active Directory). Also, I met Chad Hower, who formely worked with the &lt;a href="http://www.indyproject.org/"&gt;Indy project&lt;/a&gt;. He is now employed by Microsoft, which I wasn't aware of until this event. Plus, there was &lt;a href="http://www.blong.com/"&gt;Brian Long&lt;/a&gt; from UK, it is always a pleasure to have a chat with him.&lt;/p&gt;

&lt;p&gt;It was a nice event overall, so thanks got to Microsoft for arranging the event and letting MVPs and community activists participate.&lt;/p&gt;</description>
      <pubDate>Thu, 16 Mar 2006 08:56:10 GMT</pubDate>
      <guid>a19fbbe8-2d81-4760-bd54-a64f199062b2</guid>
    </item>
    <item>
      <title>Solid introduction to WWF programming</title>
      <link>http://msdn.microsoft.com/windowsvista/building/workflow/default.aspx?pull=/library/en-us/dnlong/html/wfgetstart.asp</link>
      <description>&lt;p&gt;Dino Esposito is at it again. The topic is Microsoft Windows Workflow Foundation (WWF) and how to use it from Visual Studio 2005 with the proper extensions installed. Recommended reading!&lt;/p&gt;</description>
      <pubDate>Sat, 11 Mar 2006 10:08:06 GMT</pubDate>
      <guid>70692890-30a3-4fbc-9366-5ba9e036e18b</guid>
    </item>
    <item>
      <title>The Borland "DevCo"</title>
      <link>http://www.borland.com/us/</link>
      <description>&lt;p&gt;I had today the chance to meet with Jason Vokes from Borland here in Helsinki. Naturally, the subject of the new company ("NewCo" or "DevCo" as Jason would put it) was the most interesting subject we could have at this stage.&lt;/p&gt;

&lt;p&gt;To me, the way things are going sounds good. There's a master plan, there's a roadmap and the R&amp;D team members themselves are happy. Of course, it is very early yet to judge, but I guess we will know sooner than later. As always in the IT business, things are moving with rapid speed, so it will interesting to see the end results. But in the mean time, I think all Borland developer tool customer can stay firm with their choice.&lt;/p&gt;</description>
      <pubDate>Wed, 08 Mar 2006 15:27:43 GMT</pubDate>
      <guid>cd88c221-e5d8-4ecb-b457-1f5a93309f36</guid>
    </item>
    <item>
      <title>Calling the Intel CPUID instruction and reading processor information</title>
      <link>http://developer.intel.com/</link>
      <description>&lt;p&gt;In my last post, I promised to show some code that you could use to detect processor features. So here goes.&lt;/p&gt;

&lt;p&gt;The Intel x86 ("IA32") processors since Pentium I support the CPUID instruction, which can be used to read processor information. For example, you can use this instruction to detect if your processor supports MMX, SSE, SSE2, SSE3, IA64 or HyperThreading, and most importantly, EMT64, which is Intel's name for 64-bit extensions to their 32-bit Pentium processors. By the way, Microsoft calls EMT64 simply "x64", since they also support AMD's 64-bit extensions that are very similar to EMT64.&lt;/p&gt;

&lt;p&gt;Now, I won't be going too much into the details, since you can download a document called the "Intel Processor Identification and the CPUID Instruction" from Intel's developer web site. Instead, I want to show you some example code written with Delphi 2006. You cannot do the same directly from C#, but you could easily write an unmanaged DLL from the Delphi code, and then call that DLL from C#.&lt;/p&gt;

&lt;p&gt;Here's my sample application named ShowCPUID:&lt;/p&gt;

&lt;pre&gt;
program ShowCPUID;

{$APPTYPE CONSOLE}
{$OPTIMIZATION OFF}
{$ALIGN 4}

{
Source:

"Intel Processor Identification and the CPUID Instruction"
- Application Note 485, January 2006.

http://developer.intel.com/
}

type
  ProcessorInfo = record
    MaximumBasicFunction    : cardinal;
    MaximumExtendedFunction : cardinal;
    VendorID                : array[0..12] of Char;
    Signature               : cardinal;
    SupportsMMX             : boolean;
    SupportsSSE             : boolean;
    SupportsSSE2            : boolean;
    SupportsSSE3            : boolean;
    SupportsHyperThreading  : boolean;
    SupportsIA64            : boolean;
    SupportsXDBit           : boolean;
    SupportsEMT64           : boolean;
    procedure Clear;
    procedure Print;
  end;

var
  { globals used by the ReadProcessorInfo function }
  MBF,MEF     : cardinal;
  Sig         : cardinal;
  A,B,C       : cardinal;
  FF1,FF2,FF3 : cardinal;

function ReadProcessorInfo : ProcessorInfo; register;
begin
  Result.Clear();
  {$REGION 'cpuid'}
  asm
    { save registers used by the register calling convention }
    push eax
    push ebx
    push ecx
    push edx
    { call CPUID }
    xor eax,eax
    cpuid
    mov MBF,eax
    { vendor ID }
    mov A,ebx
    mov B,edx
    mov C,ecx
    { signature &amp; feature flags 1-2 }
    mov eax,1
    cpuid
    mov Sig,eax
    mov FF1,edx
    mov FF2,ecx
    { extended functions }
    mov eax,$8000000
    cpuid
    mov MEF,eax
    { feature flags 3 }
    mov eax,$8000001
    cpuid
    mov FF3,edx
    { restore }
    pop edx
    pop ecx
    pop ebx
    pop eax
  end;
  {$ENDREGION}
  {$REGION 'parse results'}
  Result.MaximumBasicFunction := MBF;
  Result.MaximumExtendedFunction := MEF;
  Result.Signature := Sig;
  Result.VendorID[0] := Chr((A and $000000FF) shr 0);
  Result.VendorID[1] := Chr((A and $0000FF00) shr 8);
  Result.VendorID[2] := Chr((A and $00FF0000) shr 16);
  Result.VendorID[3] := Chr((A and $FF000000) shr 24);

  Result.VendorID[4] := Chr((B and $000000FF) shr 0);
  Result.VendorID[5] := Chr((B and $0000FF00) shr 8);
  Result.VendorID[6] := Chr((B and $00FF0000) shr 16);
  Result.VendorID[7] := Chr((B and $FF000000) shr 24);

  Result.VendorID[8] := Chr((C and $000000FF) shr 0);
  Result.VendorID[9] := Chr((C and $0000FF00) shr 8);
  Result.VendorID[10] := Chr((C and $00FF0000) shr 16);
  Result.VendorID[11] := Chr((C and $FF000000) shr 24);
  Result.VendorID[12] := #0;
  {$ENDREGION}
  {$REGION 'flags'}
  Result.SupportsMMX := (FF1 and (1 shl 23)) &lt;&gt; 0;
  Result.SupportsSSE := (FF1 and (1 shl 25)) &lt;&gt; 0;
  Result.SupportsSSE2 := (FF1 and (1 shl 26)) &lt;&gt; 0;
  Result.SupportsSSE3 := (FF2 and (1 shl 0)) &lt;&gt; 0;
  Result.SupportsHyperThreading := (FF1 and (1 shl 28)) &lt;&gt; 0;
  Result.SupportsIA64 := (FF1 and (1 shl 30)) &lt;&gt; 0;
  Result.SupportsXDBit := (FF3 and (1 shl 20)) &lt;&gt; 0;
  Result.SupportsEMT64 := (FF3 and (1 shl 29)) &lt;&gt; 0;
  {$ENDREGION}
end;

{ ProcessorInfo }

procedure ProcessorInfo.Clear;
begin
  MaximumBasicFunction := 0;
  MaximumExtendedFunction := $80000000;
  VendorID := '';
  Signature := 0;
  SupportsMMX := False;
  SupportsSSE := False;
  SupportsSSE2 := False;
  SupportsSSE3 := False;
  SupportsHyperThreading := False;
  SupportsIA64 := False;
  SupportsXDBit := False;
  SupportsEMT64 := False;
end;

var
  PI : ProcessorInfo;

procedure ProcessorInfo.Print;
begin
  WriteLn('MaximumBasicFunction = ',MaximumBasicFunction);
  WriteLn('MaximumExtendedFunction = ',MaximumExtendedFunction);
  WriteLn('VendorID = "',VendorID,'"');
  WriteLn('Signature = ',Signature);
  WriteLn('SupportsMMX = ',SupportsMMX);
  WriteLn('SupportsSSE = ',SupportsSSE);
  WriteLn('SupportsSSE2 = ',SupportsSSE2);
  WriteLn('SupportsSSE3 = ',SupportsSSE3);
  WriteLn('SupportsHyperThreading = ',SupportsHyperThreading);
  WriteLn('SupportsIA64 = ',SupportsIA64);
  WriteLn('SupportsXDBit = ',SupportsXDBit);
  WriteLn('SupportsEMT64 = ',SupportsEMT64);
end;

begin
  WriteLn('ShowCPUID application version 1.00.');
  Write('Reading processor information...');
  PI := ReadProcessorInfo();
  WriteLn('');
  WriteLn('');
  WriteLn('Results');
  WriteLn('-------');
  PI.Print();
  WriteLn('');
  Write('Press Enter to exit...');
  ReadLn;
end.
&lt;/pre&gt;

&lt;p&gt;If you run this program, it will display something similar to the following:&lt;/p&gt;

&lt;pre&gt;
ShowCPUID application version 1.00.
Reading processor information...

Results
-------
MaximumBasicFunction = 5
MaximumExtendedFunction = 64
VendorID = "GenuineIntel"
Signature = 3892
SupportsMMX = TRUE
SupportsSSE = TRUE
SupportsSSE2 = TRUE
SupportsSSE3 = TRUE
SupportsHyperThreading = TRUE
SupportsIA64 = FALSE
SupportsXDBit = FALSE
SupportsEMT64 = FALSE

Press Enter to exit...&lt;/pre&gt;

&lt;p&gt;Note that my processor is a Pentium IV, but it unluckily doesn't support EMT64. My bad.&lt;/p&gt;</description>
      <pubDate>Sun, 05 Mar 2006 13:56:35 GMT</pubDate>
      <guid>4df18ad2-d559-4934-b76b-aef1ce253213</guid>
    </item>
    <item>
      <title>Technet Pro 2006 event</title>
      <link>http://www.microsoft.com/finland//default.mspx</link>
      <description>&lt;p&gt;I attended today Microsoft Finland's Technet Pro 2006 event at the Finland Hall. The event gathered about 1300 IT professionals (and some developers) to learn the latest technical information about new operating systems and applications, such as Windows Server 2003 R2, Windows Vista, Office 12, and so on.&lt;/p&gt;

&lt;p&gt;To me, the most interesting sessions were about Windows Server 2003 R2 and Vista, and 64-bit processor architectures. I confess I've found difficult all those 64-bit related acronyms such as "x64", "EMT64" and "IA-64", but today I refreshed my memory what they were. The 64-bit extensions in 32-bit processors sounded interesting, so I decided to do a simple application to detect what features are present on a processor. Stay tuned for code.&lt;/p&gt;</description>
      <pubDate>Thu, 02 Mar 2006 14:57:33 GMT</pubDate>
      <guid>b84d34a9-42ac-43e7-af4a-f1430aaf246f</guid>
    </item>
    <item>
      <title>.NET Pet Shop 4 is here</title>
      <link>http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnbda/html/bdasamppet4.asp</link>
      <description>&lt;p&gt;If you have been following the web development sphere, you've quite possibly ran into an example application called Pet Shop. This is an Microsoft developed ASP.NET reference web application, and demonstrates the best practices for building large and complex web applications.&lt;/p&gt;

&lt;p&gt;Now, this application is in its fourth version. This version uses ASP.NET 2.0 to the max, which means among other things better performance and fewer lines of code. The changes are actually quite dramatic. If you don't believe me, see for yourself. MSDN has the info.&lt;/p&gt;</description>
      <pubDate>Tue, 28 Feb 2006 14:40:11 GMT</pubDate>
      <guid>f00b17d4-c231-4527-859b-191ed4c757c1</guid>
    </item>
    <item>
      <title>Canon EOS 5D focus point selection tip</title>
      <link>http://www.canoneos.com/</link>
      <description>&lt;p&gt;I was reading the EOS 5D instruction manual while preparing for a shooting session, and I noticed the Custom Function (C.Fn) 13, "AF point selection method". So far, my "problem" with the camera has been that selecting the focus point from one of the 9 different points (or auto) has been quite difficult and slow: you first had to press the AF point selection button close to the shutter button, and then use the multi-controller to select the correct spot. When photographing fast moving subjects (such as kids) close by, this was just too slow.&lt;/p&gt;

&lt;p&gt;But, with custom function 13 this all is made a lot easier! I immediately set the function to 1, "Multi-controller Direct" (see manual pp. 154). This allows me to use the multi-controller directly to select my focus point, and no buttons needed! And when you want to return to the point auto selection mode (all points selected), just press the AF point selection button again. Fast and easy!&lt;/p&gt;</description>
      <pubDate>Sun, 26 Feb 2006 13:32:33 GMT</pubDate>
      <guid>986739e2-dc8e-443c-907e-78fd8597f553</guid>
    </item>
    <item>
      <title>The MSDN C# FAQ needs your help</title>
      <link>http://blogs.msdn.com/csharpfaq/</link>
      <description>&lt;p&gt;Microsoft hosts a simple C# programming language FAQ on their blogs web site under the main MSDN site. The FAQ has recently been updated, but it still needs work. I have contacted one of my MVP contacts Scott Nonnenberg earlier this month to see how I could help, and got a response quickly.&lt;/p&gt;

&lt;p&gt;I'm still in the process of compiling my own FAQ entries for the web site, but eventually I will get there. In the mean time, if you have tips and ideas you want to share, don't hesitate to post them to the FAQ page!&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 24 Feb 2006 17:26:52 GMT</pubDate>
      <guid>9e14caa8-f1c7-46b1-bbe9-4632bbdc5a1c</guid>
    </item>
    <item>
      <title>Visual Studio Customer Excellence Award</title>
      <link>http://msdn.microsoft.com/vstudio/</link>
      <description>&lt;p&gt;Today, FedEx bought me a very nice packet from Microsoft: an Visual Studio .NET Award for Customer Excellence. Thank you, Microsoft!&lt;/p&gt;

&lt;p&gt;The award itself is a letter from S. Somasegar (whose blog by the way is &lt;a href="http://blogs.msdn.com/somasegar/rss.aspx"&gt;here&lt;/a&gt;) and a very nice glass cube which contains the text "ACE" and Visual Studio 2005. I don't have a picture of it yet, but might post one eventually, since the cube is cool.&lt;/p&gt;</description>
      <pubDate>Tue, 21 Feb 2006 16:47:29 GMT</pubDate>
      <guid>92a8b7bd-4acd-4f55-ae55-11bb5edde781</guid>
    </item>
    <item>
      <title>The six Windows Vista versions</title>
      <link>http://www.microsoft-watch.com/article2/0,1995,1928547,00.asp?kc=MWRSS02129TX1K0000535</link>
      <description>&lt;p&gt;As the launch of Windows Vista is getting nearer, so is the information about its forthcoming editions. I recall blogging last year, that there will be seven editions of Vista, now Microsoft-Watch.com reports that there will be six. No surpise, really.&lt;/p&gt;

&lt;p&gt;So far, the editions are going to be (not in any special orde):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows Vista Enterprise&lt;/li&gt;
&lt;li&gt;Windows Vista Home Basic&lt;/li&gt;
&lt;li&gt;Windows Vista Home Premium&lt;/li&gt;
&lt;li&gt;Windows Vista Ultimate&lt;/li&gt;
&lt;li&gt;Windows Vista Business&lt;/li&gt;
&lt;li&gt;Windows Vista Starter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition, there might be some "N" versions for the European markets; these versions ought not to include Windows Media Player. As a side-note, there's also a recent article about Microsoft's so-called "Live" products. I confess I'm a bit confused about them overall, but &lt;a href="http://www.microsoft-watch.com/article2/0,2180,1926006,00.asp"&gt;this article&lt;/a&gt; sheds some light into the subject.&lt;/p&gt;</description>
      <pubDate>Sun, 19 Feb 2006 10:25:21 GMT</pubDate>
      <guid>c98447fd-5761-40e4-8e5e-cddf448a8195</guid>
    </item>
    <item>
      <title>Order the Microsoft Developer Security Resource Kit DVD</title>
      <link>http://msdn.microsoft.com/security/securityreskit/default.aspx</link>
      <description>&lt;p&gt;To help you program secure applications, Microsoft has compiled a DVD resource called the "Microsoft Developer Security Resource Kit". This DVD contains both information and .NET sample code to get you started.&lt;/p&gt;

&lt;p&gt;The DVD is available for ordering from Microsoft's web site for the cost of shipping. But hurry, since this is a limited time offer.&lt;/p&gt;</description>
      <pubDate>Sat, 18 Feb 2006 07:09:59 GMT</pubDate>
      <guid>118c1f15-095d-493d-b693-f6f1eb17f432</guid>
    </item>
    <item>
      <title>Symantec LiveState is the new "best practice" to secure your servers and workstations</title>
      <link>http://www.symantec.com/Products/enterprise?c=prodinfo&amp;refId=854</link>
      <description>&lt;p&gt;I'm sure you've heard of Symantec's Ghost, almost a legendary product for taking "images" of hard disks, and cloning these images to another PCs.&lt;/p&gt;

&lt;p&gt;Ghost was originally a DOS-based product, with which you had to create a bootable floppy disk, and then boot your PC using that disk. Lately, Ghost got a Windows GUI, but I personally didn't prefer using it since those floppy boot disks worked okay. Until, umm, this month.&lt;/p&gt;

&lt;p&gt;Although I'm no expert in Ghost, I've found the program to be easy to use for both workstations and servers. Installing Windows Server 2003 with Active Directory (AD) and Exchange server takes about 10 hours, but with Ghost, you can get a basic operating system image running in 45 minutes. But the problem with Ghost's floppy boot system is that it is increasingly difficult to find DOS drivers (Ghost uses PC-DOS) for modern hard disks and network cards (NICs). Also, Ghost's USB drivers don't like all new external USB hard drives or DVD burners, which is a real pain, especially when you are in a hurry.&lt;/p&gt;

&lt;p&gt;Luckily, Symantec has a new product called LiveState Recovery (LSR), which is a great product to replace Ghost. It boots from a CD, and immediately supports your network cards, DVD and USB drives and SATA hard disks. Also, the Window client with which you take your images works like a dream. A Windows server can be backed up in less than 10 minutes, and it only takes about 20 minutes to restore an image to a working hard drive.&lt;/p&gt;

&lt;p&gt;That's something I call a working solution to hard disks crashes. Okay, the product is more expensive than Ghost, but for the minimized hassle I'm happy to pay more. Thumbs up for this product!&lt;/p&gt;</description>
      <pubDate>Wed, 15 Feb 2006 15:16:41 GMT</pubDate>
      <guid>b869fc55-b548-41ca-abfc-6a280b1c139a</guid>
    </item>
    <item>
      <title>Sleep(), UI threads and COM do not match</title>
      <link>http://blogs.msdn.com/oldnewthing/archive/2006/02/10/529525.aspx</link>
      <description>&lt;p&gt;We all know the oft-useful Windows API function named &lt;a href="http://msdn.microsoft.com/library/en-us/dllproc/base/sleep.asp"&gt;Sleep&lt;/a&gt;. This little gem allows you to block the executing of your application's current thread for the given number of milliseconds.&lt;/p&gt;

&lt;p&gt;However, Sleep is often used to simulate improper waiting on objects. That is, instead of creating an event object for example and then using the WaitForSingleObject API function, you create a loop to poll a global flag, and then use Sleep to wait for, say, one second as not to grab the CPU for yourself only. This is very bad practice, and gets even more so if somebody installs your application on a Terminal Server or Citrix MetaFrame application server.&lt;/p&gt;

&lt;p&gt;But, what is less known that sleeping on an UI thread can have very bad consequences, too. This is because system-wide broadcast messages get stuck with your user interface thread, which in turn can stall your whole operating system in the worst case scenario. But what's even worse, you can have problems even if you don't know it. That is because many applications today use OLE, COM or ActiveX routines. Does this ring a bell? It should. Says &lt;a href="http://blogs.msdn.com/oldnewthing/"&gt;The Old New Thing&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;i&gt;"Note that many people overlook that calling CoInitialize (possibly indirectly) to initialize a thread for STA creates a hidden window in order to perform marshalling. Consequently, a thread that is running in a single-threaded apartment must pump messages. Failing to do so will result in mysterious system-wide stalls due to the unresponsive window."&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Keep this in mind while you program Windows applications! Calling Sleep() has its uses, but it is often called when it shouldn't be. Take heed!&lt;/p&gt;</description>
      <pubDate>Sun, 12 Feb 2006 13:01:08 GMT</pubDate>
      <guid>678a3ea3-3f3f-4c08-99ac-23571feaee20</guid>
    </item>
    <item>
      <title>Encrypt ViewState and persisting page state</title>
      <link>http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/viewStateEncryp.asp</link>
      <description>&lt;p&gt;There are two short article about ASP.NET 2.0 on MSDN that I find interesting. The first one shows you how to &lt;a href="http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/PgStPrst.asp"&gt;persist the page state&lt;/a&gt; in your web applications and the second about &lt;a href="http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/viewStateEncryp.asp"&gt;encrypting the ViewState&lt;/a&gt; variable contents. Both these articles give you good tips and tools for your developer toolbox.&lt;/p&gt;</description>
      <pubDate>Fri, 10 Feb 2006 15:14:45 GMT</pubDate>
      <guid>896accac-9b25-45ed-a334-545feaad257d</guid>
    </item>
    <item>
      <title>Learn RAW shooting from Tietokone</title>
      <link>http://www.saunalahti.fi/janij/publications/tietokone.html</link>
      <description>&lt;p&gt;The issue 2/2006 of Tietokone popped into my mailbox today, and it contains my two-page article about shooting RAW photographs with digital (SLR) cameras.&lt;/p&gt;

&lt;p&gt;The article appears on pages 76-77 and is titled "Raw-kuvaaja saa enemmän irti". Enjoy!&lt;/p&gt;</description>
      <pubDate>Wed, 08 Feb 2006 16:38:56 GMT</pubDate>
      <guid>cc7a9ed5-8dbd-492b-87b8-45dcd163ac71</guid>
    </item>
    <item>
      <title>Borland looks for a buyer for Delphi et al.</title>
      <link>http://www.borland.com/us/company/news/press_releases/2006/02_08_06_borland_acquires_segue_software.html</link>
      <description>&lt;p&gt;The big software development related news for today is that Borland is looking for a buyer for its IDE tools, including Delphi, C++Builder and InterBase (I don't care much about JBuilder).&lt;/p&gt;

&lt;p&gt;Now, this may come as a shock for many, but in fact this very thing has been rumored for a long time, especially for the latest 3-4 years.&lt;/p&gt;

&lt;p&gt;Borland has written a press release and there's also a &lt;a href="http://www.borland.com/us/company/news/Tod_Nielsen_customer_shareholder_letter_02-08-06.html"&gt;letter from the CEO&lt;/a&gt;. So far, everything will continue to be/function as before, and only time will tell who is going to be the new owner (buyer).&lt;/p&gt;

&lt;p&gt;I also compiled a short &lt;a href="http://www.moonsoft.fi/info/borland_ide_sale.aspx"&gt;Finnish FAQ&lt;/a&gt; for my company, which is available at Moonsoft's web site.&lt;/p&gt;</description>
      <pubDate>Wed, 08 Feb 2006 15:23:46 GMT</pubDate>
      <guid>2d9ec9fb-9833-4805-aaf1-6b44832e8536</guid>
    </item>
    <item>
      <title>Invitation to France</title>
      <link>http://www.nicetourisme.biz/en/index.php</link>
      <description>&lt;p&gt;I got an e-mail from Sampo today which a very welcomed message: an invitation to Microsoft's Connect 2006 event in Nice, France in the middle of March. Naturally, I'm thankful for these kind of invitations, and decided to register the same day.&lt;/p&gt;

&lt;p&gt;I'm happy to visit France as I haven't visited that country before. Plus, Nice in March is probably quite much warmer than Helsinki in March. :-) The only problem with the trip is that I don't have a valid passport at the moment, for I let it to expire on purpose, namely to wait for the new biometric passports. But no problem, one can get a new passport in about two weeks.&lt;/p&gt;</description>
      <pubDate>Tue, 07 Feb 2006 15:54:24 GMT</pubDate>
      <guid>97aed09f-0c8a-44b5-9ac4-0307d4d38d1a</guid>
    </item>
    <item>
      <title>New week, new MSDN</title>
      <link>http://msdn.microsoft.com/</link>
      <description>&lt;p&gt;UPS brought me a big packet today: yet another MSDN Welcome Kit, this time the Euro DVD version, which is twice the size of the US version!&lt;/p&gt;

&lt;p&gt;First I have to confess one thing. I didn't recall I had two MSDN subscriptions. Yes, when I login to MSDN web site, I can select my account, and I also remember where I got the second subscription, but I always thought it would be an on-line based account only.&lt;/p&gt;

&lt;p&gt;Of course, I won't complain, and the due thanks got to Microsoft. The best thing is that I'm now a subscriber until December, 2006. This means that I'm able to get my hands on Windows Vista and Office 12, no matter what happens. Very good!&lt;/p&gt;</description>
      <pubDate>Mon, 06 Feb 2006 15:25:01 GMT</pubDate>
      <guid>1438c5df-c7ff-4d46-a4c8-18b3ab0564d6</guid>
    </item>
    <item>
      <title>New magazine, new article</title>
      <link>http://www.saunalahti.fi/janij/publications/visual_studio_magazine.html</link>
      <description>&lt;p&gt;I'm happy to announce that the U.S. based Visual Studio Magazine has published my first article for the magazine. The magazine by Fawcette is one of the leading developer magazines for Microsoft developers, and I'm naturally privileged to be on board.&lt;/p&gt;

&lt;p&gt;My first article is titled "Lock Down Your Files" and it is about the new System.Security.AccessControl namespace in .NET 2.0. The example code is written with C#.&lt;/p&gt;

&lt;p&gt;The cherry for the cake is this: my first article for this magazine went straight to the front cover. Not bad even though I say myself.&lt;/p&gt;</description>
      <pubDate>Sun, 05 Feb 2006 09:44:39 GMT</pubDate>
      <guid>2fac8476-91ea-41f1-ae58-dcefbbb67974</guid>
    </item>
    <item>
      <title>eWeek's Visual Studio 2005 review</title>
      <link>http://www.eweek.com/article2/0,1895,1896105,00.asp</link>
      <description>&lt;p&gt;Visual Studio 2005 has been out and available for a while, but I haven't yet seen that many reviews from this latest and greatest development tool from Microsoft.&lt;/p&gt;

&lt;p&gt;Not that I would need any magazine articles to reassure myself about my development tool choice for C#, but nonetheless, it is interesting to see what others think about the tool I've learned to love.&lt;/p&gt;

&lt;p&gt;Speaking of reviews, eWeek has published one. It happens to reflect my personal opinions quite well.&lt;/p&gt;</description>
      <pubDate>Wed, 01 Feb 2006 16:21:57 GMT</pubDate>
      <guid>643c81f3-9d22-4357-80a9-d9421fafd475</guid>
    </item>
    <item>
      <title>Star Hawk flies again!</title>
      <link>http://www.handheldmuseum.com/Mattel/SH.htm</link>
      <description>&lt;p&gt;As a kid, I was a great space ship pilot. Since then, my skills might have gotten a bit rusty, but today while visiting my mother, I found by chance an old Mattel Electornics handheld electronic game, and decided to take it back home.&lt;/p&gt;

&lt;p&gt;The game is called "Star Hawk", and it is from the year 1981, as you can see from the dust:&lt;/p&gt;

&lt;p&gt;&lt;img src="images/2006_jan_star_hawk"&gt;&lt;/p&gt;

&lt;p&gt;Nonetheless, this game works perfectly even today. And after 25 years, I can still shoot down those evil spaceships that try to invade this land.&lt;/p&gt;

&lt;p&gt;The game itself has a simple joystick to control the spaceship with, plus some buttons. The colored Vacuum Florescent Display (VFD) is especially cool -- you can play in the dark!&lt;/p&gt;

&lt;p&gt;Of course, since this is a hit game of the early 1980s, some chaps have compiled together a &lt;a href="http://www.handheldmuseum.com/Mattel/SH.htm"&gt;web page&lt;/a&gt; for it. And, they even have &lt;a href="http://www.handheldmuseum.com/Manuals/"&gt;scanned&lt;/a&gt; the manuals!&lt;/p&gt;</description>
      <pubDate>Sun, 29 Jan 2006 14:44:15 GMT</pubDate>
      <guid>d1c302d1-2b6b-4511-9444-28a79fb86245</guid>
    </item>
    <item>
      <title>Concrete examples of Windows Workflow Foundation</title>
      <link>http://msdn.microsoft.com/msdnmag/issues/06/01/WindowsWorkflowFoundation/default.aspx</link>
      <description>&lt;p&gt;I'm a fan of workflows and workflow management, which means Microsoft's new Windows Workflow Foundation (WWF) is an area I watch closely.&lt;/p&gt;

&lt;p&gt;WWF is part of the WinFX programming framework, so it is easy to program from .NET and C#. It uses XAML-based  documents (think Windows Presentation Foundation or "Avalon") so you can expect nice support for it in Visual Studio's future versions, etc.&lt;/p&gt;

&lt;p&gt;The January 2006 issue of MSDN Magazine has again interesting information about this technology. I wish I just had more time to learn what the magazine writes about.&lt;/p&gt;</description>
      <pubDate>Thu, 26 Jan 2006 15:08:26 GMT</pubDate>
      <guid>c95cd7ae-a614-4f06-95c1-26c530507fd5</guid>
    </item>
    <item>
      <title>Share your Vista experiences</title>
      <link>http://www.microsoft.com/windowsvista/sentiments/default.mspx</link>
      <description>&lt;p&gt;Windows Vista betas are out, and the chances are you've seen them yourself, too. If you have, now is a great chance to let Microsoft know what you think about Vista, a.k.a. Longhorn.&lt;/p&gt;

&lt;p&gt;There's a very simple feedback page on Microsoft's web pages, which I suggest you will fill in as well.&lt;/p&gt;</description>
      <pubDate>Tue, 24 Jan 2006 18:00:12 GMT</pubDate>
      <guid>01814ff5-b1cb-4c90-83c6-5b7201f1bab1</guid>
    </item>
    <item>
      <title>Windows Vista look and feel for Delphi 2006 applications</title>
      <link>http://www.microsoft.com/windowsvista/</link>
      <description>&lt;p&gt;I used a few minutes this morning to test Delphi applications with the latest Windows Vista build I've got, the 5270. I was mainly interested in how Delphi applications written with the latest release (Borland Developer Studio or BSD 2006) would work in Vista, and how they would look like.&lt;/p&gt;

&lt;p&gt;I tested a plain Win32 VCL application with several components from the Win32 tab, such as a progress bar and a page control, to name a few.&lt;/p&gt;

&lt;p&gt;When such an application in being run on Vista, it by default has a "Windows 2000 look", i.e. gray appearance, rectangle buttons, and so on. However, if you drop the XPManifest component onto the main form, Vista will bring your application into life with the Aero theme.&lt;/p&gt;

&lt;p&gt;Now that is cool. The only drawback is that ShowMessage and MessageDlg still look old-fashioned. But if you call the MessageBox API functions directly, Vista will displays its white colored message boxes all right.&lt;/p&gt;</description>
      <pubDate>Sat, 21 Jan 2006 06:08:14 GMT</pubDate>
      <guid>1380a58a-9ec6-47f7-82e5-57937cdd7fe0</guid>
    </item>
    <item>
      <title>What's new in System.String in .NET 2.0</title>
      <link>http://msdn2.microsoft.com/s1wwdcbf(en-US,VS.80).aspx</link>
      <description>&lt;p&gt;I'm yet to hear of an application that doesn't use strings. That said, the System.String class (or the Delphi/C# string type equivalent) is one class I use very often.&lt;/p&gt;

&lt;p&gt;But, did you take your time to study what's new in System.String when .NET 2.0 came out? Actually, there's a lot of new stuff! Late last year, I made a blog post about and MSDN article, but even that article only briefly touched the subject.&lt;/p&gt;

&lt;p&gt;Well, I'm not going to do a full-fledged research either, but here are some pointers to methods that are new (or rather, have new overloads):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;String.Compare method&lt;/li&gt;
&lt;li&gt;String.EndsWith method&lt;/li&gt;
&lt;li&gt;String.IndexOf method&lt;/li&gt;
&lt;li&gt;String.IsNormalized method&lt;/li&gt;
&lt;li&gt;String.Split method&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you can see, there's lot to learn. For your information, I'm working on an utility to list all the changes between .NET 1.1 and .NET 2.0 for any BCL class. Stay tuned.&lt;/p&gt;</description>
      <pubDate>Mon, 16 Jan 2006 15:39:18 GMT</pubDate>
      <guid>c7acfa02-ecb4-4079-a750-06544e12a32f</guid>
    </item>
    <item>
      <title>Visiting old school</title>
      <link>http://www.lykhki.edu.hel.fi/</link>
      <description>&lt;p&gt;My old high school, Lauttasaaren Yhteiskoulu or LYK had today an open house, so I bicycled there (like the old days) with my EOS 5D to meet some old friends and see what the school is up to nowadays.&lt;/p&gt;

&lt;p&gt;Of course, I don't know the pupils anymore, but it was fun seeing old teachers who happened still to recognize me (I don't know if it is good or bad :-).&lt;/p&gt;</description>
      <pubDate>Sat, 14 Jan 2006 12:07:18 GMT</pubDate>
      <guid>2e8bbf3a-962e-494b-b809-ec2dda0e01e0</guid>
    </item>
    <item>
      <title>Two articles in Tietokone magazine</title>
      <link>http://www.saunalahti.fi/janij/publications/tietokone.html</link>
      <description>&lt;p&gt;If you have the latest Tietokone magazine (the first one for this year, i.e. 1/2006) you can find two my articles there.&lt;/p&gt;

&lt;p&gt;The articles are about virtualization technologies and Ajax programming, total four pages. Enjoy!&lt;/p&gt;</description>
      <pubDate>Fri, 13 Jan 2006 14:58:35 GMT</pubDate>
      <guid>3b88574a-5662-4eae-941e-9b96f5f87e38</guid>
    </item>
    <item>
      <title>BMW's new battery</title>
      <link>http://www.bmw.de/</link>
      <description>&lt;p&gt;Old cars have their quirks, and so has mine. But luckily, there was an easy fix: a new battery for 50 &amp;euro;.&lt;/p&gt;

&lt;p&gt;I tried starting the thing this morning to drive to work, but she didn't want to co-operate. I guess she was just unhappy for I left her alone for three days and went to visit another town by train.&lt;/p&gt;

&lt;p&gt;After popping up the hood and scratching my head for maybe 20 minutes how to remove the old battery from the car, I went to a local shop, bought a new one and installed it. Now it starts like an angel. Plus, it now again talks German to me, the language on the dashboard was changed to English on the previous visit to the repair shop last summer.&lt;/p&gt;</description>
      <pubDate>Thu, 12 Jan 2006 18:23:17 GMT</pubDate>
      <guid>ccedd060-3f4d-4c8c-9a92-7fcd76f695b2</guid>
    </item>
    <item>
      <title>Understanding the new memory manager in Delphi 2006</title>
      <link>http://bdn.borland.com/article/0,1410,33416,00.html</link>
      <description>&lt;p&gt;Now that the newest version of Delphi 2006 (or, should I say Borland Developer Studio 2006 or 4.0) is here, the chances are you've heard of its new memory manager.&lt;/p&gt;

&lt;p&gt;The original memory manager of Delphi was developed at Delphi 1/2 time, and since then only small updates have been applied to it. The original memory manager has server applications faithfully, but modern applications with their huge memory demands and multi-threaded architectures have shown the limits of this architecture.&lt;/p&gt;

&lt;p&gt;Luckily, all this is changing with BDS 2006. Now, System.pas defined a implementation of the memory manager, which is based on the open-source FastMM project. BDN (Borland Developer Network) has an article about this new memory manager. To use it, you just need to rebuild your application with Delphi 2006.&lt;/p&gt;</description>
      <pubDate>Sat, 07 Jan 2006 16:00:07 GMT</pubDate>
      <guid>df00c0a4-f9ee-418c-901e-33dfd8626e57</guid>
    </item>
    <item>
      <title>Best practices for handling and sorting strings with .NET 2.0</title>
      <link>http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dndotnet/html/StringsinNET20.asp</link>
      <description>&lt;p&gt;Microsoft's &lt;b&gt;Dave Fetterman&lt;/b&gt; has written a short article to MSDN about handling and sorting strings with .NET 2.0. This best-practice document is worth reading, even if you need to explicitly manipulate strings very little in your applications.&lt;/p&gt;

&lt;p&gt;Also, if you have installed the MSDN documentation (Document Explorer), you might find the new topic "Comparing Strings" useful. It is available through &lt;a href="ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_fxfund/html/977dc094-fe19-4955-98ec-d2294d04a4ba.htm"&gt;this URL&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Finally, it should be noted that .NET 2.0 adds new overloads to many methods of the System.String class. These overloads accept a new StringComparison parameter (System.StringComparison). The values of this enumeration let you specify how you want the comparisons to be made.&lt;/p&gt;</description>
      <pubDate>Thu, 05 Jan 2006 14:46:33 GMT</pubDate>
      <guid>aba0a0c5-bdec-4f7c-bee0-57d0662d38bc</guid>
    </item>
    <item>
      <title>My best Canon EOS links (so far)</title>
      <link>http://www.canoneos.com/</link>
      <description>&lt;p&gt;Just as with about anything in today's world, the Internet is a great place to learn more about the products and technologies that are in your mind. Well, this applies to photography and my new Canon EOS 5D digital SLR as well.&lt;/p&gt;

&lt;p&gt;As I've now got this beast for about three months, I decided to share all those places on the 'net I've found useful. Of course, as with all information, it ought to be taken with a grain of salt, but if you get your information from respectable sources, it usually is OK.&lt;/p&gt;

&lt;p&gt;DPreview.com, probably the best site when it comes to product reviews and (professional) discussion forums.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.dpreview.com/"&gt;Main page&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;The &lt;a href="http://forums.dpreview.com/forums/forum.asp?forum=1032"&gt;Canon EOS-1D/1Ds/5D&lt;/a&gt; forum (this is where I hang out the most).&lt;/li&gt;
  &lt;li&gt;The &lt;a href="http://forums.dpreview.com/forums/forum.asp?forum=1029"&gt;Canon SLR Lens Talk&lt;/a&gt; Forum (EF lenses).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other review sites for Canon EOS gear:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.the-digital-picture.com/"&gt;The-Digital-Picture.com&lt;/a&gt;: especially useful for the lens reviews.&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.fredmiranda.com/reviews/"&gt;Fred Miranda's (FM) reviews&lt;/a&gt;, lots of other stuff + forums as well.&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://photonotes.org/articles/beginner-faq/"&gt;Canon EOS Beginners' FAQ&lt;/a&gt; from the NK Guy. Great stuff. &lt;/li&gt;
  &lt;li&gt;Did you lose your manual, or want to educate yourself in products you don't (yet) own? Try the &lt;a href="http://www.eosdoc.com/"&gt;EOS Documentation Project&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.luminous-landscape.com/"&gt;The Luminous Landscape&lt;/a&gt;. If you like shooting landscapes, then f/8 and be there!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three sites from Canon:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The &lt;a href="http://www.canoneos.com/"&gt;Canon EOS System&lt;/a&gt;, a redirect page to Canon USA.&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.canon.co.jp/Imaging/BeBit-e.html"&gt;Canon BeBit&lt;/a&gt;, hosted by Canon Japan. Useful reading, firmware updates, sample images and more.&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.canon.com/camera-museum/"&gt;Canon Camera Museum&lt;/a&gt;, your virtual tour to cameras and lenses from the past. Oh, those were the days!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some stock photography sites:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.istockphoto.com/"&gt;iStockphoto&lt;/a&gt;, cheap stuff (not necessarily bad though).&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.gettyimages.com/"&gt;Getty Images&lt;/a&gt;, some like it, some don't.&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.photos.com/en/"&gt;Photos.com&lt;/a&gt;, royalty-free photos.&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.plugi.fi/"&gt;Plugi&lt;/a&gt;, the Finnish stock photography site.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Okay, that was a lot links! But just to educate my European readers (and have a record for myself), I'm linking to two German web pages that allow you to compare pricing just about anything related to computers, electronics and photography. It is often said that these thing are cheapest in Germany, and so here you go. Of course, some knowledge of the German language is needed.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.idealo.de/"&gt;Idealo.de&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.geizhals.net/"&gt;Geizhals&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;</description>
      <pubDate>Mon, 02 Jan 2006 15:58:00 GMT</pubDate>
      <guid>8eb63588-03f9-4634-acce-44b9e43c6415</guid>
    </item>
    <item>
      <title>How to beep with .NET?</title>
      <link>http://msdn2.microsoft.com/system.media.systemsounds.aspx</link>
      <description>&lt;p&gt;When Windows or a Windows application has something to tell you, you will often see a simple message box on the screen, along with a traditional sound: a &lt;i&gt;beep, pling, boing&lt;/i&gt;, or what have you.&lt;/p&gt;

&lt;p&gt;A simple sound is a nice attention grabber, until the user gets tired of them and mutes the speakers. Of course, you can also play these so-called System Sounds (one can customize these through Control Panel) from your own applications, but surprisingly enough, there hasn't been anything in .NET Framework to help you do this. Instead, you had to resort to calling the Win32 API directly.&lt;/p&gt;

&lt;p&gt;Luckily, as .NET 2.0 is here, Microsoft has added a new namespace to the .NET Base Class Library (BCL). This namespace is simply called System.Media, and it is implemented in System.dll, which means that you don't have to add any new references to your project to use this namespace.&lt;/p&gt;

&lt;p&gt;This namespace has a nice class called SystemSounds which allows you to play any of the most common Windows system sounds, for example the ubiquitous beep. To make your application beep, you would simply do this in C#:&lt;/p&gt;

&lt;pre&gt;System.Media.SystemSounds.Beep.Play();
&lt;/pre&gt;

&lt;p&gt;Naturally, you would also need to add a &lt;code&gt;using System.Media;&lt;/code&gt; statement to your source file. Happy beepin'! :-)&lt;/p&gt;</description>
      <pubDate>Sun, 01 Jan 2006 12:15:11 GMT</pubDate>
      <guid>5ceca353-6cab-4dbd-8209-eca7d86239b6</guid>
    </item>
    <item>
      <title>Happy New Year 2006!</title>
      <link>
      </link>
      <description>&lt;p&gt;Welcome to the new year! :-) I hope you enjoyed the fireworks and had a good time.&lt;/p&gt;

&lt;p&gt;Also, if you are reading this using your RSS reader, you got the URL change right. :-)&lt;/p&gt;</description>
      <pubDate>Sun, 01 Jan 2006 09:19:51 GMT</pubDate>
      <guid>6be23a76-441a-4db4-b074-32ec4819138e</guid>
    </item>
  </channel>
</rss>
