<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Christian Nagel's OneNotes</title><link>http://blogs.thinktecture.com/cnagel/default.aspx</link><description>.NET Training, Consulting, Coaching &amp; Development</description><dc:language>en-US</dc:language><generator>CommunityServer 1.1 (Build: 1.1.0.50615)</generator><item><title>Welcome 2010!</title><link>http://blogs.thinktecture.com/cnagel/archive/2010/01/01/welcome2010.aspx</link><pubDate>Fri, 01 Jan 2010 20:54:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415432</guid><dc:creator>CNagel</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415432.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415432</wfw:commentRss><description>The year 2010 has started. What can be expected?&lt;p /&gt;
Since today &lt;b&gt;&lt;a href="http://www.microsoft.com/windowsazure/"&gt;Windows Azure&lt;/a&gt;&lt;/b&gt; is public available. For one month it's still free, payment starts in February.&lt;br /&gt;
I'm expecting it to take off in some scenarios and will be of big use soon. Of course I'm using it already.&lt;br /&gt;
&lt;a href="http://www.microsoft.com/windowsazure/dallas/"&gt;Codename Dallas&lt;/a&gt; looks very promising.&lt;p /&gt;
&lt;b&gt;Visual Studio 2010 and .NET 4&lt;/b&gt; will be released in April. This major update has some cool features for .NET developers, among them are
&lt;ul&gt;
&lt;li&gt;Dynamic Language Enhancements&lt;/li&gt;
&lt;li&gt;Threading improvements&lt;/li&gt;
&lt;li&gt;MEF is included&lt;/li&gt;
&lt;li&gt;A new Workflow engine&lt;/li&gt;
&lt;li&gt;ASP.NET MVC&lt;/li&gt;
&lt;li&gt;enhancements in various areas such as WPF, WCF, ASP.NET...&lt;/li&gt;
&lt;/ul&gt;
You can read all about this in my upcoming book &lt;a href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-C-4-and-NET-4.productCd-0470502258.html"&gt;Professional C# 4 with .NET 4!&lt;/a&gt;&lt;p /&gt;
And Visual Studio 2010? Visual Studio is written with WPF! And this with lot of interop scenarios as many 3rd party add-ins haven't been done with WPF. It works! And after Beta 2 it's a lot faster!
&lt;p /&gt;
&lt;p /&gt;
Silverlight has other release cycles. &lt;a href="http://www.silverlight.net/getstarted/silverlight-4-beta/"&gt;Silverlight 4 Beta&lt;/a&gt; is already available. It's great to see support for printing, rich text support, COM automation support, "toast" notifications, read and write files from the local disk (for trusted apps), multi-touch....&lt;br /&gt;
Will the release cycle as fast continue with Silverlight 5?
&lt;p /&gt;
User experience is becoming more and more important. I expect to see some cool looking apps in 2010. WPF and Silverlight can take off!&lt;p /&gt;
&lt;p /&gt;I'm already using Office 2010 since early Beta 1. Who is still using PowerPoint 2003? You miss a lot of improvments with PPT 2007 to create content a lot faster, and miss cool themes. In Office 2010 I really like the social networks integration in Outlook 2010. Can't wait to see &lt;a href="http://twitter.com/christiannagel"&gt;twitter&lt;/a&gt;, and &lt;a href="http://www.facebook.com/christian.nagel"&gt;Facebook&lt;/a&gt; extensions.
&lt;p /&gt;
Personally I plan on working more than in 2009 but less than in 2008/2007. Planning some time for my baby Stephanie :-)
&lt;p /&gt;
What do you think about 2010?
&lt;p /&gt;
Christian&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415432" width="1" height="1"&gt;</description></item><item><title>Bye, Bye, 2009</title><link>http://blogs.thinktecture.com/cnagel/archive/2009/12/31/bye2009.aspx</link><pubDate>Thu, 31 Dec 2009 18:09:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415429</guid><dc:creator>CNagel</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415429.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415429</wfw:commentRss><description>It's the last day of the year. Bye, bye, 2009!&lt;br /&gt; Hoping for a good new year 2010!
&lt;p /&gt;
What happened in 2009? &lt;br /&gt;
&lt;a href="http://blogs.thinktecture.com/cnagel/archive/2009/01/31/415263.aspx"&gt;My toughts of 2009&lt;/a&gt; were partly fulfilled. Some other things happened as well. Good and bad.&lt;br /&gt;
The best was &lt;b&gt;Stephanie&lt;/b&gt; - our baby was already announced in January. She arrived just 1 day early, 2-Jun instead of 3-Jun.&lt;p /&gt;
What I didn't know at the time was the radiation therapy I had until 28-May. I still feel some side effects from this, but it's getting better every day. Although this resulted in several months where I couldn't do any work, in 2009 I've still done a lot with .NET.&lt;p /&gt;
I've written apps and coached developers with WPF, Silverlight, WCF, Windows Azure, ASP.NET, and .NET overall. Travelling to Linz, Graz, Bonn, St. Gallen, Lucerne, Budapest, Seattle, Los Angeles...&lt;p /&gt;
Worked on 2 books, &lt;a href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-C-4-and-NET-4.productCd-0470502258.html"&gt;Professional C# 4 and .NET 4&lt;/a&gt; and Beginning Visual C# 2010 that are released early 2010.
&lt;p /&gt;
&lt;b&gt;Windows 7&lt;/b&gt; was a great release for this year. And it's the &lt;a href="http://www.crn.com/it-channel/222001755?pgno=17"&gt;product of the year&lt;/a&gt;!
&lt;p /&gt;
&lt;i&gt;&lt;b&gt;Hoping on a healthful 2010!&lt;/b&gt;&lt;/i&gt;&lt;p /&gt;
&lt;i&gt;&lt;b&gt;A Happy New Year!&lt;/b&gt;&lt;/i&gt;
&lt;p /&gt;
&lt;p /&gt;
Christian&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415429" width="1" height="1"&gt;</description></item><item><title>A Merry Christmas!</title><link>http://blogs.thinktecture.com/cnagel/archive/2009/12/24/415426.aspx</link><pubDate>Thu, 24 Dec 2009 17:48:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415426</guid><dc:creator>CNagel</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415426.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415426</wfw:commentRss><description>&lt;img src="http://www.christiannagel.com/images/Christmas_StephanieWeb.jpg" alt="A Merry Christmas!"&gt;&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415426" width="1" height="1"&gt;</description></item><item><title>Windows 7 Party</title><link>http://blogs.thinktecture.com/cnagel/archive/2009/11/23/Windows7Party.aspx</link><pubDate>Mon, 23 Nov 2009 18:16:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415420</guid><dc:creator>CNagel</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415420.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415420</wfw:commentRss><description>Für meine Blog-Reader in Wien:
am Mittwoch, 25. November 2009 gibt es eine &lt;b&gt;Windows 7 after work&lt;/b&gt; party!&lt;p /&gt;
Es gibt nicht nur Speis &amp; Trank, auch Punsch, Maroni und eine Verlosung von einem Windows 7 Kurs und 3 x Windows 7 Ultimate!&lt;p /&gt;
Anmeldung über die Cloud: &lt;a href="http://cninnovation.cloudapp.net"&gt;Windows 7 after work&lt;/a&gt;&lt;br /&gt;
Code: p09&lt;p /&gt;
Christian&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415420" width="1" height="1"&gt;</description></item><item><title>PDC 2009</title><link>http://blogs.thinktecture.com/cnagel/archive/2009/11/20/415419.aspx</link><pubDate>Thu, 19 Nov 2009 23:54:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415419</guid><dc:creator>CNagel</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415419.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415419</wfw:commentRss><description>What are my impressions of this year’s PDC? Last year's PDC was on completely new things. There's nothing completely new announced this year. No new Windows 8, nothing "after the cloud". Visual Studio 2010 is already Beta 2 and probably it's too early for Visual Studio next... Everything is growing together. And that's good - working on the foundation of last year and seeing how it gets better, more features that are heavily needed...&lt;p /&gt;
The first day was on the server side. Developing applications for Windows Server and Windows Azure are coming together. This will take some time. In the first steps it's the naming. The AppFabric for the server contains technologies previously known as Dublin and Velocity. The AppFabric for Windows Azure is the new name of Windows Azure .NET Services: service bus, access control, workflow services are part of this. Over time I expect them to come together. And there are great new features on Windows Azure: REST based management services API, different sizes of VMs, multiple roles (not just 2), communication between the roles, GEO replication of data, CDN support, x-drive… And “codename Dallas” is great - data, content that can be used - a uniform way for discovery, binding, and licensing of data. Dallas gives a REST-based API to access data that anyone can provide. The cloud is getting mature, and it starts on 1-January 2010 as public offering.&lt;p /&gt;
The second day was on the client side. No news on Windows after Windows 7 (Windows 7 is just too new).  But there is a new IE in the works: IE 9 with HTML 5, hardware accelerated graphics and text (D2D instead of GDI), great JavaScript performance improvements… And the best is Silverlight 4! The major focus on Silverlight 4 is on the topics Media, business applications, and beyond the browser. This gives us new features such as Webcam and Microphone support, streaming, output protection, offline DRM, rich text, printing!, clipboard access, drag&amp;drop, right mouse click, html hosting, commanding, data binding improvements, sharing of .NET assemblies between .NET applications and Silverlight, Silverlight to run elevated outside of the browser, many new controls…. Great!&lt;br /&gt;
A question I often hear is “what does this mean for WPF?” For me it doesn’t really matter if I’m doing WPF or Silverlight applications. Now there are more scenarios for doing Silverlight. However, I wouldn’t to an application such as Visual Studio with Silverlight. Not now :-)&lt;p /&gt;
Last year every attendee received a hard drive. With GBs of data that were not shared outside the PDC attendees. They didn't fit on a booklet of DVDs, so hard drives were distributed. This year there also were some new bits to share. It's not that much because so many Betas and CTPs already have been there for download. And all the new things are downloadable by the public. Instead of hard drives now every attendee receives an Acer Tablet PC with Multi-Touch. That's the reason I couldn't log into the network of the hotel: error - "too many subscribers are already logged on". At 4:30 AM! Did they just return from the party? Or downloading all the bits during the night? I expect the second ;-) I need to get to the conference center early to get into the network there. Not only for posting this, but also to connect to my two girls at home :-)&lt;p /&gt;
Next year's PDC? I think the tablet cannot be topped :-) I will be there as well!&lt;p /&gt;
Christian&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415419" width="1" height="1"&gt;</description></item><item><title>Back to normal</title><link>http://blogs.thinktecture.com/cnagel/archive/2009/11/17/415415.aspx</link><pubDate>Tue, 17 Nov 2009 15:59:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415415</guid><dc:creator>CNagel</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415415.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415415</wfw:commentRss><description>It's a while since my last blog entry. There's a reason behind it. Starting in March I had several visits to the hospital. My wife names the weeks of April and May a "trip through hell". Medical treatment has been successful, so everything is ok now. :-)&lt;br /&gt;
After May, June was really exciting (although I still have been in recovery mode). The last radiation therapy was on 28-May. My girl Stephanie was born on 2-June. This was really exciting and of course a big motivation during my time of medical treatment! You might already have seen the photos of here playing &lt;a href="http://www.babysmash.com"&gt;BabySmash&lt;/a&gt;. Thanks to &lt;a href="http://www.hanselman.com"&gt;Scott Hanselman&lt;/a&gt; for this great WPF application!&lt;p /&gt;

Now everything is in progress. Stephanie is growing :-) I've already done several .NET trainings and coachings in Austria and Switzerland. I'm in the finishing steps on the next edition of the Professional C# book (Professional C# 4.0 with .NET 4.0) with great new content. A new website is on the way....
&lt;p /&gt;
In the weeks to come again you will see more blog entries. On what? I'm doing a lot stuff with WPF, Windows Azure, Silverlight, C#, Workflow Foundation 4.0, WCF, ADO.NET Entity Framework, F#, C++...
&lt;p /&gt;
And in the coming days you will get some news from &lt;a href="http://www.microsoftpdc.com/"&gt;PDC 2009&lt;/a&gt;!
&lt;p /&gt;
Christian
&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415415" width="1" height="1"&gt;</description></item><item><title>Windows 7 Installation Experience</title><link>http://blogs.thinktecture.com/cnagel/archive/2009/02/17/415269.aspx</link><pubDate>Tue, 17 Feb 2009 16:15:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415269</guid><dc:creator>CNagel</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415269.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415269</wfw:commentRss><description>Now I'm running Windows 7 on several systems. I'm now running the Beta version on my major system.&lt;p /&gt;
The installation experience and stability depends on the hardware. Of course, that's a usual experience with a Beta version.&lt;p /&gt;
The best experience is with my newest tablet PC: &lt;b&gt;Fujitsu Siemens Lifebook T5010&lt;/b&gt;.&lt;br /&gt; Installation (upgrade from Windows Vista) was smooth, every device is available, so far no major issues. I could also run Microsoft OneCare after telling the application it's running on Windows Vista.
&lt;p /&gt;
With a slightly older model (&lt;b&gt;Lifebook T4220&lt;/b&gt;) installation (upgrade as well) was hanging near the end of the installation during a check of the graphics card. After turning off and on again the installation completed without problems. Checking the Windows Experience Index on this system either results in a hang or a blue screen. However, for normal daily operations  this system doesn't have issues.&lt;p /&gt;
On a old notebook (&lt;b&gt;HP Compaq NX7000&lt;/b&gt;) a new installation of Windows 7 was running fine. For the graphics card just a standard driver was installed during installation. With an update the driver for ATI Mobility Radeon 9000 was installed, and as a result the screen on the display flickered. The display on an external monitor is ok. Rollback the driver. The standard driver just has a Windows Experience Index of 1, but the system is fine for non-display related tasks. I checked the HP Website for drivers, but only Windows XP drivers are offered for this notebook. I used this system for Windows Server 2003 which was fine. It's great that Windows 7 is running on this system as well!&lt;p /&gt;
Here is a link for the experience with other systems:
&lt;a href="http://www.vistablog.at/stories/34363/"&gt;Sammelpost: Erfahrungsberichte zu Windows 7 Beta&lt;/a&gt;
&lt;p /&gt;
Christian&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415269" width="1" height="1"&gt;</description></item><item><title>3. Software Development Day in Wien</title><link>http://blogs.thinktecture.com/cnagel/archive/2009/02/08/415267.aspx</link><pubDate>Sun, 08 Feb 2009 17:51:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415267</guid><dc:creator>CNagel</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415267.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415267</wfw:commentRss><description>Bereits zum dritten mal gibt es den Software Development Day, zum zweiten mal im Euro Plaza! 
Auch diesmal wieder mit Einblicken in die Zukunft aber auch Informationen über Technologien die bereits jetzt eingesetzt werden sollten!&lt;p /&gt;
&lt;a href="http://blogs.msdn.com/knom/"&gt;Max Knor&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/blackgate/"&gt;Andreas Pollak&lt;/a&gt;, Georg Drogny und Christian Nagel über &lt;b&gt;Windows Azure&lt;/b&gt;, &lt;b&gt;Live Mesh&lt;/b&gt;, &lt;b&gt;Silverlight&lt;/b&gt;, &lt;b&gt;Windows 7&lt;/b&gt;, &lt;b&gt;ADO.NET Data Services&lt;/b&gt;, &lt;b&gt;.NET 4.0&lt;/b&gt;, &lt;b&gt;C# 4.0&lt;/b&gt; und vieles mehr! &lt;p /&gt;
Dienstag, 24. Februar 2009&lt;br /&gt;
Konferenzzentrum Euro Plaza in Wien&lt;br /&gt;
Details und Anmeldung hier: 
&lt;a href="http://www.globalknowledge.at/neuigkeiten/veranstaltungen/3_software_development_day.aspx"&gt;3. Development Day in Wien&lt;/a&gt;
&lt;p /&gt;
Christian&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415267" width="1" height="1"&gt;</description></item><item><title>Separation of Algorithms and Containers (Collections)</title><link>http://blogs.thinktecture.com/cnagel/archive/2009/02/02/415266.aspx</link><pubDate>Mon, 02 Feb 2009 10:47:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415266</guid><dc:creator>CNagel</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415266.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415266</wfw:commentRss><description>The C++ Standard Template Library (STL) separates algorithms from containers. C++ algorithms are defined within the header file  can be used with containers depending on the iterator that is needed by the algorithm and the iterator supported by the container. search, search_n, reverse, rotate, copy, count, count_if, find, find_first_of, for_each, max, min, merge are just a few of the algorithms. These are global functions that accept iterators from container classes to iterate all elements.&lt;p /&gt;
With .NET 3.5 algorithms are separated from collections as well. Static methods such as Count, Max, Min, First, Skip… are implemented by the Enumerable class. These methods are all extension methods based on the IEnumerable interface and thus can be used with every collection.&lt;p /&gt;
Let’s compare the implementation of C++ accumulate with .NET Aggregate. Both have several overloads, but I just want to compare just one. The others are very similar.&lt;p /&gt;
C++ aggregate is a template function with four parameters. The first two parameters mark the begin and end of the iteration. This algorithm requires an Input Iterator that implements the operators !=, ++, and *. The third parameter is used as initialization of the aggregation, and the last parameter accepts a function object that has two parameters (BinaryOperation). 
With a for loop every element that is enumerated is accessed, the binary operation invoked, and the result of the operation accumulated.&lt;p /&gt;
&lt;pre&gt;
template
Type accumulate(InputIterator _First, InputIterator _Last, Type _Val, BinaryOperation _Binary_op) 
{
   for (; _First != _Last; ++_First)
      _Val = _Binary_op(_Val, *_First);
   return (_Val);
}
&lt;/pre&gt;
Using the accumulate method a binary function can be defined that is invoked by accumulate, e.g. a simple multiplier.
&lt;pre&gt;
int action(int x, int y)
{
   return x * y;
}
&lt;/pre&gt;
&lt;br /&gt;
Calling the accumulate function requires the begin and end for the iteration that is returned from the begin and end methods of the vector class. For multiplying every integer in a vector, the initial value is set to 1, and the address of the action function is passed:
int result = accumulate(v1.begin(), v1.end(), 1, action);
The .NET version of the C++ accumulate does not differ a lot. Instead of having a begin and end of an iterator, here the IEnumerable interface is used. With C++ iterators just a naming convention is used to give the requirements of the iterator. C++ differentiates input, output, forward, bidirectional, and random access iterators that define what operators must be implemented. With .NET it’s clearly defined what methods must be implemented by the collection by the definition of the IEnumerable interface. The initial value that is passed is similar to the C++ implementation. The last parameter defines the signature of the method that is invoked by Aggregate: a method with two input parameters and a result. Instead of a for loop, .NET makes use of the foreach loop that is converted by the compiler to use the methods of the IEnumerable interface.&lt;br /&gt;
&lt;pre&gt;
public static TAccumulate Aggregate(this IEnumerable source,  
   TAccumulate seed, Func func)
{
   TAccumulate local = seed;
   foreach (TSource local2 in source)
   {
      local = func(local, local2);
   }
   return local;
}
&lt;/pre&gt;
&lt;br /&gt;
Because the Aggregate method is an extension method, it can be invoked like a member of the collection class to aggregate all values from the collection. The functionality that is invoked with every instance can be implemented by using a Lambda expression.&lt;br /&gt;
&lt;pre&gt;
int result = coll.Aggregate(1, (x, y) =&gt; x * y);
&lt;/pre&gt;&lt;br /&gt;
C++ and .NET have very similar implementations to separate the algorithms from containers. Lambda expressions are not yet available with C++, but will be with a future version C++0x. Algorithms that are available in one place (e.g. C++) can easily be implemented in the other (e.g. .NET).&lt;p /&gt;
Christian
&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415266" width="1" height="1"&gt;</description></item><item><title>Thoughts about 2009</title><link>http://blogs.thinktecture.com/cnagel/archive/2009/01/31/415263.aspx</link><pubDate>Sat, 31 Jan 2009 14:26:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415263</guid><dc:creator>CNagel</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415263.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415263</wfw:commentRss><description>It's nearly February, I'm a little late for my thoughts about the year 2009. Still I'm writing down what I'm expecting, my thoughts about important things to come.&lt;p /&gt;
In the first month of the New Year I've already covered a lot of different technologies in the first workshops: &lt;b&gt;Team Foundation Server&lt;/b&gt;, &lt;b&gt;WPF&lt;/b&gt;, &lt;b&gt;ASP.NET AJAX&lt;/b&gt;, and &lt;b&gt;C++&lt;/b&gt;.&lt;p /&gt;
What are the most important products I'm working on in the New Year? The first on my list of course is &lt;b&gt;Windows 7&lt;/b&gt;, the successor of Windows Vista. I'm running the Beta already on several of my systems. Depending on the hardware used there are some small issues (e.g. on an old HP Compaq NX7000 with the graphics driver, some issues on a Fujitsu Siemens Tablet T4220 in regard to the graphics card as well), but of course that's usual with a Beta product. In summary I'm really happy with &lt;b&gt;Windows 7&lt;/b&gt;.&lt;br /&gt;Primarily it's based on the code from Windows Vista with some good enhancements. Because the code is based primarily on Windows Vista and not a complete rewrite we can expect that it’s really running stable this is already the experience from many Beta testers. I expect shorter Beta cycles which I’m also reading out from &lt;a href="http://blogs.msdn.com/e7/archive/2009/01/30/our-next-engineering-milestone.aspx"&gt;Our Next Engineering Milestone&lt;/a&gt;. RC will be the next version for download. Windows 7 has a great new calculator (hey, is there a problem the &lt;a href="http://blogs.thinktecture.com/cnagel/archive/2004/03/25/95814.aspx"&gt;calculator is included with the operating system&lt;/a&gt;?). WordPad has the ribbon controls! Even more important – WordPad can save OOXML and ODT.  The new toolbar is really cool. There are many more great features... I’m already running Windows Vista from the early beginnings (of course Beta editions). Now I’m expecting many companies to move from Windows XP to Windows 7. Do you wait until SP1 or do the move earlier? Now is the time to not only find out if your applications run on Windows Vista (which was already done by most companies) because of the UAC, but also what advantages the application can get by running on Windows Vista and Windows 7. I offer a Workshop on this :-)&lt;p /&gt;
Another product I’m spending a lot of time with is &lt;b&gt;Windows Azure&lt;/b&gt;. Paying just for the resources that are needed can be a big improvement for startup companies. How many systems should we add to the Web server so the users get acceptable performance? Twitter, why don’t you just increment this configuration value instead of returning errors? I don’t think Windows Azure is just for startup companies. I would like to access my data from everywhere; I would like to use some CPU and disk resources just for specified time frames (e.g. the registration process for a conference). In current different economy times it might be a good decision to outsource some IT management and just pay for what’s needed.&lt;p /&gt;
Since the end of last year I’m running &lt;b&gt;Windows Home Server&lt;/b&gt;. Every home should have one. It’s really easy to configure that and all your PC’s are backed up, data on network shares is duplicated on different hard disks, and the data is even accessible from the road.
Easy to use systems and applications are important! I remember the days where I had to change some switches and jumpers before I could put a module inside a system. The Micro PDP 11 made things a lot easier – a lot easier to configure than PCs at that time. Now I’m adding hardware to systems by connecting them to the USB. No more configurations necessary, no search for drivers… Windows Media Center is – in my opinion – a lot easier to use than getting to know how to use several different remote controls to turn on and switch to the correct mode with Receiver, TV, and a DVD/hard disk recorder. Many users are lost to find the correct settings with that many remote controls. It’s still getting easier. &lt;b&gt;Silverlight&lt;/b&gt; brings completely new user interfaces to Web applications. Rich client experience that can be completely different to the experience we had with Web applications that have been used before - Silverlight for Web applications; &lt;b&gt;WPF&lt;/b&gt; for Windows applications. The user can be knowledgeable of its problem domain but no longer need to know how to use a Windows application. Not every person is a Word and Excel user.&lt;p /&gt;
Of course I’m not forgetting &lt;b&gt;Visual Studio 2010&lt;/b&gt; and &lt;b&gt;.NET 4.0&lt;/b&gt;. These are the products I’m using on my main system during this year so my customers can use my experience with this technology as soon as they need it. I’m already working for some time on the next edition of the Professional C# book: &lt;b&gt;Professional C# 4.0 and .NET 4.0&lt;/b&gt;. .NET 4.0 gives a lot to cover with the next edition!  I just received the Chinese version of Professional C# 2008. You can start the next translation early next year :-)&lt;p /&gt;
&lt;b&gt;Windows 7&lt;/b&gt;, &lt;b&gt;Windows Azure&lt;/b&gt;, &lt;b&gt;Visual Studio 2010&lt;/b&gt;, &lt;b&gt;.NET 4.0&lt;/b&gt;, &lt;b&gt;Silverlight 3.0&lt;/b&gt;... I still didn’t mention my most important... I can give you the expected arrival date: 3-June-2009. It can arrive a little earlier or later. Around that time I don’t do any travel, expecting a baby girl with my girlfriend Angela. This is going to be a really great year :-D
&lt;p /&gt;
Christian&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415263" width="1" height="1"&gt;</description></item><item><title>Windows Azure bei der .NET User Group Austria</title><link>http://blogs.thinktecture.com/cnagel/archive/2008/11/10/415216.aspx</link><pubDate>Mon, 10 Nov 2008 21:39:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415216</guid><dc:creator>CNagel</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415216.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415216</wfw:commentRss><description>Aktuellste Informationen von &lt;br /&gt;Peter Koen, Senior Program Manager bei Microsoft &lt;br /&gt;bei der &lt;a href="http://usergroups.at/blogs/dotnetusergroupaustria/archive/2008/11/03/845.aspx"&gt;.NET User Group Austria: &lt;br /&gt;Microsoft Windows Azure und Cloud Computing!&lt;/a&gt;
&lt;br /&gt;
11.11.2008, 18 Uhr&lt;br /&gt;
und mehr als 30 angemeldete Teilnehmer!&lt;p /&gt;
Christian
&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415216" width="1" height="1"&gt;</description></item><item><title>PDC 2008 - XAML with .NET 4.0</title><link>http://blogs.thinktecture.com/cnagel/archive/2008/10/31/415211.aspx</link><pubDate>Fri, 31 Oct 2008 00:54:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415211</guid><dc:creator>CNagel</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415211.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415211</wfw:commentRss><description>from #pdc2008: XAML enhancements!&lt;br /&gt;
XAML nowadays is used with the UI (WPF, Silverlight), Workflows (WF), and Electronic Paper (XPS).&lt;br /&gt; XPS is just going to be an ECMA standard!&lt;p /&gt;
With all these uses XAML is going into a language evolution. Goals of this is to make XAML faster and easier to use.&lt;p /&gt;
The XAML language extensions are defined by this list:
&lt;ul&gt;
&lt;li&gt;improved named references&lt;/li&gt;
&lt;li&gt;support for built-in types&lt;/li&gt;
&lt;li&gt;full generics support&lt;/li&gt;
&lt;li&gt;support for arbitrary dictionary values&lt;/li&gt;
&lt;li&gt;declarative events without compiling&lt;/li&gt;
&lt;li&gt;declarative definition of types&lt;/li&gt;
&lt;li&gt;arguments for non-default constructors&lt;/li&gt;
&lt;li&gt;factory methods&lt;/li&gt;
&lt;/ul&gt;
The notepad for XAML, XAMLPad, has been enhanced. Besides the XML and object box it now gives a DOM box to display the DOM model. With the F12 key, a visual representation of the XAML type is shown.
&lt;p /&gt;
For reading/writing/processing XAML, .NET 4.0 includes the System.Xaml.dll assembly. It contains XamlXmlReader, XamlXmlWriter, BamlReader, BamlWriter, DomReader, DomWriter, ObjectReader, ObjectWriter. Now it's easier to develop e.g. a SVG conversion. To convert from SVG to XAML, the SVGReader and XamlXmlWriter come into play. For creating objects on the fly out of SVG, SVGReader and ObjectWriter are used.&lt;br /&gt;
The System.Xaml assembly will be available here: &lt;a href="http://go.microsoft.com/fwlink/?LinkId=132499"&gt;http://go.microsoft.com/fwlink/?LinkId=132499&lt;/a&gt;&lt;p /&gt;
In the early days of XAML and WPF, simple applications have been shown that just need XAML code but no code-behind. Now it is possible to write an application that makes use of WPF, WF, and WCF purely using XAML.
&lt;p /&gt;
Christian
&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415211" width="1" height="1"&gt;</description></item><item><title>PDC 2008 - Parallel Extensions to the .NET Framework</title><link>http://blogs.thinktecture.com/cnagel/archive/2008/10/29/415209.aspx</link><pubDate>Wed, 29 Oct 2008 20:10:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415209</guid><dc:creator>CNagel</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415209.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415209</wfw:commentRss><description>From #pdc2008, Parallel extensions to the .NET Framework are part of .NET 4.0!&lt;p /&gt;
The thread pool has been enhanced with great new features. The new features can be accessed from the Task API. The Task API can be used similar to the Thread class and offers some advanced features. For the tasks to queue up, the pool now not only includes a global queue but also a local queue for every thread in the pool. This can enhance performance because of data cached in the CPU.&lt;br /&gt;
With the new API, other than starting tasks some more features: tasks can be started in a parent/child relationship, it is possible to suspend/continue/wait/cancel tasks, and get results from the task (using the Future class). This class might be renamed to Task as well (in the future).&lt;p /&gt;
Tasks are well integrated into Visual Studio 2010. For debugging tasks new windows Parallel Tasks and Parallel Stacks are available.&lt;p /&gt;
A common pattern is using threads in a loop to perform some actions on a list of items. The Parallel class gives an implementation of this pattern. Parallel.ForEach offers several overloads to do several actions in parallel with the thread pool.&lt;p /&gt;
Declarative data parallelism allows LINQ queries to run in parallel. This feature is for LINQ to objects thus collections that implement IEnumerable. All that needs to be done is to invoke the AsParallel method that does nothing more than casting the IEnumerale interface to IParallelEnumerable. The class ParallelEnumerable then offers extension methods for the IParallelEnumerable interface to call the LINQ operators using threads from the pool. 
&lt;p /&gt;
Christian
&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415209" width="1" height="1"&gt;</description></item><item><title>PDC2008 - Type System Changes with CLR 4.0</title><link>http://blogs.thinktecture.com/cnagel/archive/2008/10/29/415208.aspx</link><pubDate>Wed, 29 Oct 2008 15:25:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415208</guid><dc:creator>CNagel</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415208.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415208</wfw:commentRss><description>From #pdc2008: the CLR type system is changed regarding "type embedding" and "type equivalence". The primary idea was easier use of COM interop, but the features are also useful with pure managed code.&lt;p /&gt;
An issue that we have today regarding COM interop is the deployment of Primary Interop Assemblies (PIO). An application that uses Excel 2007, the primary interop assembly required by the application requires 1.2 MB. In reality you need to install the Office 2007 PIA Redist that requires 6.3 MB. And this is just for Office 2007. The next version requires another PIA redist install.&lt;br /&gt;
This is one of the issues solved with the new type embedding feature.&lt;p /&gt;
With type embedding PIAs are no longer required. Type embedding is possible by the new CLR and a new compiler switch.&lt;p /&gt;
The second feature for the CLR type system is type equivalence. Type equivalence is useful both with COM objects and .NET managed code. Interfaces marked with an GUID attribute are treated equivalent if the same GUID is used. Multi-targeting through interfaces. Does this influence System.AddIn? I've to try this out!&lt;p /&gt;

Christian&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415208" width="1" height="1"&gt;</description></item><item><title>PDC 2008 - C# Futures</title><link>http://blogs.thinktecture.com/cnagel/archive/2008/10/28/415205.aspx</link><pubDate>Tue, 28 Oct 2008 00:58:00 GMT</pubDate><guid isPermaLink="false">ff4ed322-7612-4f43-9d7f-220c081c7cfd:415205</guid><dc:creator>CNagel</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.thinktecture.com/cnagel/comments/415205.aspx</comments><wfw:commentRss>http://blogs.thinktecture.com/cnagel/commentrss.aspx?PostID=415205</wfw:commentRss><description>Again, Anders Hejlsberg had a great session at #pdc2008. This time about C# 4.0 and C# 5.0!
&lt;p /&gt;
C# 1.0 was the core about OO, C# 2.0 added generics. With C# 3.0 is the first version with new language features - LINQ, and this is expands with the future versions.
C# is a multi-paradigm language. Of course, it's an OO language (since 1.0), since 3.0 it can also be used as functional language.

The main areas of enhancements are in these areas:
&lt;ul&gt;
&lt;li&gt;declarative &lt;/li&gt;
&lt;li&gt;dynamic &lt;/li&gt;
&lt;li&gt;concurrent&lt;/li&gt;
&lt;/ul&gt;
&lt;p /&gt;
Microsoft is doing a shift in regard to C# and VB to recognize reality. Features from C# are brought into VB, and features from VB into C# - because the demand is here!
&lt;p /&gt;
C# 4.0 adds &lt;b&gt;dynamic&lt;/b&gt; programming. With this it is easy to call not only .NET objects but also easily COM objects, JavaScript, Python...
&lt;br /&gt;
The enhancements can be grouped into these areas:
&lt;ul&gt;
&lt;li&gt;dynamic keyword&lt;/li&gt;
&lt;li&gt;optional and named parameters&lt;/li&gt;
&lt;li&gt;co- and contra variance&lt;/li&gt;
&lt;/ul&gt;
&lt;p /&gt;
With the new &lt;b&gt;dynamic&lt;/b&gt; keyword, a variable can be declared in C# that references a object that is created during runtime, e.g. from COM or JavaScript. 
&lt;pre&gt;
dynamic calc = GetCalculator();
int sum = calc.Add(10, 20);
&lt;/pre&gt;
Every method that is invoked on a dynamic object returns a dynamic result that is dynamically cast to the type the return variable is declared (e.g. an int in the example). A great feature here is the syntax looks the same, no matter if the calculator is a COM object, JavaScript, Python or Ruby. Binders for each of these variants are available, and custom binders can be written as well.&lt;br /&gt;
Using C# it is also possible to create dynamic runtime-objects by implementing the interface IDynamicObject or deriving from the base class DynamicObject. 
&lt;p /&gt;
A many times requested feature that is available with C# 4.0 is optional and named parameters. Instead of defining several overloads, optional parameters can be defined:&lt;br /&gt;&lt;pre&gt;
StreamReader OpenTextFile(
   string path,
   Encoding encoding = null,
   bool detectEncoding = true,
   int bufferSize = 1024);
&lt;/pre&gt;
this can be called wih only the mandatory parameter:
&lt;pre&gt;OpenTextFile("foo.txt");&lt;/pre&gt;
and also with named arguments:
&lt;pre&gt;OpenTextfile("foo.txt", bufferSize : 4096);&lt;/pre&gt;
Of course, named arguments must be after the mandatory parameters.
&lt;p /&gt;
Optional and named parameters have a great COM Interop story. No more ref missing parameters. "It took 10 years to get back where we were".
&lt;p /&gt;
Covariance and contra-variance is another new feature. co-variance or contra-variance information can be added to generics, e.g.  and .  means that T can be used only in output positions,  only in input positions.  Existing interfaces and delegates such as IEnumerably and IComparable are changed to the new notation.
A blog entry with samples about this feature follows here!
&lt;p /&gt;
Anders also demonstrated C# 5.0 features. C# 5.0 opens up the compiler to offer modern ways for meta-programming - compiler as a service!&lt;p /&gt;

More information about C# futures:&lt;a href="http://code.msdn.microsoft.com/csharpfuture"&gt;http://code.msdn.microsoft.com/csharpfuture&lt;/a&gt; 
&lt;p /&gt;
Christian
&lt;img src="http://blogs.thinktecture.com/aggbug.aspx?PostID=415205" width="1" height="1"&gt;</description></item></channel></rss>