<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
  <channel>
    <title>Hristo Kosev's blog</title>
    <description>Hristo Kosev's blog</description>
    <link>http://blogs.telerik.com/HristoKosev/Posts.aspx</link>
    <docs>http://backend.userland.com/rss</docs>
    <item>
      <title>Saving a few lines of code. Part II - Doing reflection</title>
      <description>&lt;p&gt;I was just about to write the second blog post of the series, this time involving currying, the forward pipe operator and other functional programming beauties when two people discouraged me from doing it. First &lt;a href="http://blogs.telerik.com/MihailValkov/Posts.aspx"&gt;Mike&lt;/a&gt; from the WinForms team kindly implied that with functional C# programming I can get some permanent brain damages and I definitely won't keep my audience concentrated. Then came Joe Zydeco's comment to &lt;a href="http://blogs.telerik.com/HristoKosev/Posts/08-06-17/Saving_a_few_lines_of_code_Part_I_-_Infinite_loops.aspx?ReturnURL=%2fHristoKosev%2fPosts.aspx"&gt;my previous blog post&lt;/a&gt; and I gave up. I don't know why people don't like functional C# programming but point taken, no more functional C# in my blog posts (for those of you who like it, you could check this &lt;a href="http://code.msdn.microsoft.com/FunctionalCSharp"&gt;page&lt;/a&gt;).&lt;br /&gt;
Maybe I need to clarify that the purpose of the series of these blog posts is not to save a few lines of code &lt;strong&gt;at any cost&lt;/strong&gt;. In fact in some blog posts it may look quite the opposite as my preferred choice could contain more lines of code than the most compact solution.&lt;br /&gt;
Then comes the question "Ok, and how exactly are we saving a few lines of code?". The answer would be that you've written more lines of code today but in the long term you may find out that you've chosen the better option and that leads to less code in the future when you need to change your existing code. The "better option" could be somewhat ambiguous but at lest for me it takes into consideration concepts like readability, maintainability and extensibility.&lt;br /&gt;
For example today's post is dedicated to the way you're doing reflection. Typically the most common thing to do when dealing with reflection is to get a FieldInfo, PropertyInfo or a MethodInfo by doing the following: &lt;br /&gt;
 &lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;MethodInfo method = &lt;/span&gt;&lt;span style="color: blue"&gt;typeof&lt;/span&gt;&lt;span style="font-size: 11px"&gt;(Class1).GetMethod(&lt;/span&gt;&lt;span style="color: blue"&gt;"Method1"&lt;/span&gt;&lt;span style="font-size: 11px"&gt;);   &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p &gt;One line of code could hardly be optimized so we should start looking for other ways to make it better. And this could be done better by trying to make the reference to the "Method1" method statically typed. This will save us a lot of effort and, of course lines of code, if later you decide to &lt;a href="http://www.refactoring.com/catalog/renameMethod.html"&gt;rename&lt;/a&gt; Method1 to something else. &lt;br /&gt;
Again I've prepared a sample project with a helper class which thanks to lambda expressions allows you to get a field, property or method info in a statically typed manner. &lt;br /&gt;
e.g. &lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;Reflect.Method&amp;lt;Class1&amp;gt;(x =&amp;gt; x.Method1());   &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;Reflect.Property&amp;lt;Class1&amp;gt;(x =&amp;gt; x.Property1);  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;... &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt; &lt;br /&gt;
I've used &lt;a href="http://www.clariusconsulting.net/blogs/kzu/archive/2006/07/06/TypedReflection.aspx"&gt;Daniel Cazzulino's implementation&lt;/a&gt; as a base and made a few changes. Actually lambda expressions are not mandatory in this case even though they improve the syntax quite a lot. Oren Eini has done &lt;a href="http://www.ayende.com/Blog/archive/2005/10/29/8176.aspx"&gt;a similar implementation&lt;/a&gt; for .NET 2.0 by using generic delegates back in 2005. &lt;br /&gt;
Although this approach looks pretty good I think I should mention its drawbacks. The first drawback is that you need to reference the assembly which contains the reflected type and the second drawback is that you can't reflect private and internal fields, methods and properties. &lt;/p&gt;
&lt;p &gt;Anyway if these drawbacks do not apply to your scenario, statically typed reflections could save a lot of headache.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.telerik.com/Libraries/Hristo%20Kosev/Reflection.sflb?download=true"&gt;Source Code&lt;/a&gt;&lt;/p&gt;
</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/08-07-16/Saving_a_few_lines_of_code_Part_II_-_Doing_reflection.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/08-07-16/Saving_a_few_lines_of_code_Part_II_-_Doing_reflection.aspx</comments>
      <guid isPermaLink="false">26eeadb5-2905-45a2-8603-ed22ec6929f0</guid>
      <pubDate>Wed, 16 Jul 2008 09:00:46 GMT</pubDate>
    </item>
    <item>
      <title>Saving a few lines of code. Part I - Infinite loops.</title>
      <description>&lt;p&gt;Inspired by Scott Hanselman's &lt;a href="http://www.hanselman.com/blog/ReadingToBeABetterDeveloperTheCoding4FunDevKit.aspx"&gt;quest to read source code to be a better developer&lt;/a&gt; I decided to start a series of blog posts and write about anything which comes to my mind in the everyday encountering with THE code here at Telerik. As Scott is doing a great job with his quest I would rather focus on topics in which the distinction between right and wrong is not clear enough. I'm not talking about starting &lt;a href="http://en.wikipedia.org/wiki/Flaming_(Internet)"&gt;flame wars&lt;/a&gt; but rather talking about all the aspects and the different pros and cons of each approach. &lt;/p&gt;
&lt;p&gt;Today's topic will be about infinite loops and mostly about infinite loops in which you additionally need some counter in order to use it as an indexer for a collection or for some logging purposes. Typically you need such loops when the break condition is not easily definable. In most cases first you don't even need a counter and the most natural thing to write is:&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;{  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    ...  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (some_condition)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;} &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Later on you may extend this code with:&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="font-size: 11px"&gt; i = 0;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px"&gt;)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;{  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    ...  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (some_condition)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    i++;  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;} &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Of course there's nothing wrong with this unless you (like me) dislike using the "while (true)" &lt;strong&gt;statement&lt;/strong&gt;. May be I dislike it because of this - it acts like a statement but still it's not a "legal" statement. Anyway, this is just my prejudice and you don't need to take it into consideration.&lt;br /&gt;
The other way to do the same is writing:&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="font-size: 11px"&gt; i = 0; i &amp;lt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="font-size: 11px"&gt;.MaxValue; i++)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;{  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    ...  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (some_condition)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;} &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This looks pretty neat and now we don't have "so infinite" loop which could possibly cause an OutOfMemoryException.&lt;br /&gt;
Inspired by &lt;a href="http://weblogs.asp.net/podwysocki"&gt;Matthew Podwysocki's&lt;/a&gt; "quest to deliver F# goodies to C#" you could use the Unfold method to define an infinite collection. I've attached a sample project where you could find the necessary classes. With the InitializeInfinite method you could do the following:&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;var infiniteSequence = UnfoldHelper.InitializeInfinite(x =&amp;gt; x + 1);  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (var i &lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="font-size: 11px"&gt; infiniteSequence)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;{  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    ...  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (some_condition)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;        &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;}  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The benefit of using the Unfold method is that you could easily define different both finite and infinite collections without the need to create new classes and yielding custom sequences.&lt;br /&gt;
For example with Unfold you could get and the Fibonacci sequence the following way:&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt; &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;Unfold(&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="font-size: 11px"&gt; =&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 11px"&gt; Option.Some(Tuple.New(x.Item1, Tuple.New(x.Item2, x.Item1 + x.Item2))), Tuple.New(1, 1));   &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Not that you'll need the Fibonacci sequence (maybe for calculating the &lt;a href="http://blog.karmona.com/index.php/category/scrum/"&gt;story points&lt;/a&gt; of a large user story :) that often but just in case.&lt;br /&gt;
Maybe you'll feel tempted to do the following and save an extra line of code:&lt;/p&gt;
&lt;div style="border-right: #7f9db9 1px solid; border-top: #7f9db9 1px solid; font-size: 11px; overflow: auto; border-left: #7f9db9 1px solid; line-height: 100%! important; border-bottom: #7f9db9 1px solid; font-family: courier new; background-color: white"&gt;
&lt;table style="border-top-width: 0px; border-left-width: 0px; margin: 2px 0px; width: 99%; border-bottom: #eee 0px solid; border-collapse: collapse; background-color: #fff; border-right-width: 0px" cellspacing="0" cellpadding="0"&gt;
    &lt;colgroup&gt;&lt;col style="padding-left: 10px; font-size: 11px; border-bottom: #f7f7f7 1px solid; font-family: courier new; white-space: nowrap" /&gt;&lt;/colgroup&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px"&gt;UnfoldHelper.InitializeInfinite(x =&amp;gt; x + 1).ForEach(i =&amp;gt;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;{  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;    ...  &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px"&gt; (some_condition)  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="font-size: 11px"&gt;;  &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: #f7f7f7"&gt;}); &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;First maybe you've noticed that I've used a custom "ForEach" extension method rather than calling ToList().ForEach. Calling the ToList() method for an infinite sequence is a BAD idea. Second the truth is that even with a custom ForEach method the "return" won't get you out of the Action as the ForEach extension method won't respect it. We could achieve a good result with a Func returning a boolean but this way the lines of code will grow which is not the desired effect :)&lt;/p&gt;
&lt;p&gt;Should you think of other approaches or pros and cons which I've not mentioned, feel free to comment.&lt;/p&gt;
&lt;a href="http://blogs.telerik.com/Libraries/Hristo%20Kosev/Unfold.sflb?download=true"&gt;
&lt;p&gt;Source Code&lt;/p&gt;
&lt;/a&gt;
</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/08-06-17/Saving_a_few_lines_of_code_Part_I_-_Infinite_loops.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/08-06-17/Saving_a_few_lines_of_code_Part_I_-_Infinite_loops.aspx</comments>
      <guid isPermaLink="false">130a2eaf-9876-49fc-a60b-468dbd213ada</guid>
      <pubDate>Tue, 17 Jun 2008 10:16:40 GMT</pubDate>
    </item>
    <item>
      <title>WPF Grids - to be or not to be</title>
      <description>&lt;p&gt;Recently both &lt;a href="http://www.paulstovell.com/blog/datagrid-isnt-a-control-its-a-lifestyle"&gt;Paul Stovell&lt;/a&gt; and &lt;a href="http://jcooney.net/archive/2008/06/09/55615.aspx"&gt;Joseph Cooney&lt;/a&gt; blogged about one very interesting topic - "Do people really need grid controls in WPF?". They're saying that people actually don't need grids in WPF and this is what makes their blog posts worth reading. Imagine if they had said the opposite: "People need grid controls for WPF!". It would have been quite boring and wouldn't have spurred much of a discussion. For many people the idea of not having grids for WPF sounds unconventional but Paul made an interesting parallel to justify his claim "Using grids in WPF is like buying a Ferrari to pick up milk from the deli".&lt;br /&gt;
I deeply respect both Joseph Cooney and Paul Stovell. Btw, Paul has made a great library called &lt;a href="http://www.codeplex.com/bindablelinq"&gt;Bindable LINQ&lt;/a&gt; (a.k.a. SyncLINQ) and his &lt;a href="http://www.paulstovell.com/blog/my-software-super-villain"&gt;"Big 'A' Architect"&lt;/a&gt; software super villain is my favorite. I agree with them but to the extent that people don't need conventional Grids, ComboBoxes, ListBoxes, TreeViews, Menus and Tab controls in WPF. To clarify my point, "conventional" for me means "non-lookless" (or should I say "lookful"?) WPF components which don't offer a solid performance and which are rigid when it comes to UI customization. People really don't need such components, and especially Grids. My belief is that people need grids which have completely modifiable UI and which could easily be made to look like something different but still having the grid features which people actually need and to which they are accustomed.&lt;br /&gt;
While many people dream about the future and see everyone using Carousels, Cubes, CoverFlows, etc. or about replacing the plain old mouse and keyboard with &lt;a href="http://www.microsoft.com/surface/index.html"&gt;Surface&lt;/a&gt;, &lt;a href="http://www.engadget.com/2008/05/23/microsofts-lasertouch-prototype-brings-hand-control-to-any-disp/"&gt;LaserTouch&lt;/a&gt;, &lt;a href="http://www.cs.cmu.edu/~johnny/projects/wii/"&gt;the Wii remote&lt;/a&gt;, &lt;a href="http://www.cynergysystems.com/blogs/page/rickbarraza?entry=connecting_to_the_wii_control"&gt;Minority Report-like gloves&lt;/a&gt; or &lt;a href="http://www.mperfect.net/wpfAugReal/"&gt;Augmented Reality stuff&lt;/a&gt;, many people are not ready for radical changes in the way they see data and they work with it. For many people it has to come as an evolution, not a revolution (even though I've always envied the revolutionaries :).&lt;/p&gt;
&lt;p&gt;Even if we assume that the table layout is a bit outdated as a UI visualization, people will still need the functionality which stays "behind the tables". They need sorting, grouping, aggregates, filtering, concurrency, selection, editing, hierarchy, etc. The problem is that once we want to have all of these features at a single place we can't escape much from the tabular view. Let alone that for most users it is expected. That's the way life goes. After all most of the time we're binding to relational data, right? My argument would be that we need WPF Grids and that we can enhance it with fancy animations, visuals, transformations and so on so that we have a brand new experience. And what's most important, if the Grid is lookless, this will allow developers to morph their UI accordingly when new UI paradigms emerge. And this could all happen without them re-working everything. &lt;/p&gt;
&lt;p&gt;As we firmly believe that the WPF Grid is here to stay, and we agree with most of the points that Paul Stovell and Joseph Cooney made, we tried to bridge things - make a heavy-duty Grid has tons of features that loads millions of records truly fast, which is lookless and is completely stylable in Blend. That is, a Grid that is not shaped by us, but by you and which allows you to deliver new experiences based on your needs. Think of it as a parking lot full of different vehicles - you can pick which one to use for each occasion. &lt;br /&gt;
In case you've missed our &lt;a href="http://www.telerik.com/products/wpf/overview.aspx"&gt;WPF controls beta release&lt;/a&gt; here's the place to remind you that you can already download it and give it a try. It's an early beta but now it's the best time to get your feedback and make the necessary corrections.&lt;/p&gt;
</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/08-06-11/WPF_Grids_to_be_or_not_to_be.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/08-06-11/WPF_Grids_to_be_or_not_to_be.aspx</comments>
      <guid isPermaLink="false">cd708c1a-aac2-4c98-ba9a-5b8ecb45928f</guid>
      <pubDate>Wed, 11 Jun 2008 07:01:59 GMT</pubDate>
    </item>
    <item>
      <title>RadControls for WPF CTP</title>
      <description>&lt;p&gt;This week we are about to release a private CTP of RadControls for WPF. We will be sending the CTP build to all people who have previously requested WPF controls. If you still haven't requested WPF controls from our support or sales folks don't hesitate to drop them a line and we'll send you a build.&lt;/p&gt;
&lt;p&gt;If you're reading regularly the Telerik blogs may be you haven't missed &lt;a href="http://blogs.telerik.com/VassilTerziev/Posts/08-03-12/WPF_Silverlight_and_the_Telerik_MIX_Show_Off_videos.aspx?ReturnURL=%2fVassilTerziev%2fPosts.aspx"&gt;Vassil's post&lt;/a&gt; about the Show Off videos which we prepared for MIX 08.&lt;br /&gt;
In case you've watched carefully the &lt;a href="http://www.telerik.com/documents/MIX/telerik_WPF_showoff_video.wmv"&gt;"Telerik Resort Explorer" video&lt;/a&gt; you probably are asking yourself at least a couple of questions:&lt;br /&gt;
1) Oh my! Telerik will release another "cube-like-control" - a RadRotatingEarth3D control. Somebody stop them!&lt;br /&gt;
2) Well, I see a grid. Does that mean that Telerik will release a grid control for WPF?&lt;/p&gt;
&lt;p&gt;The good news is that our WPF offering has just one connection to the Silverlight Cube we built - it's made to impress. The Silverlight Cube was impressive from a visual standpoint and it showed a tiny aspect of the cool new visualizations you can achieve in Silverlight with minimal effort. With our WPF offering we will try to impress in many more aspects - we will try to show you how easy it is to create a slick grid UI, with lots of capabilities out of the box and with unbeatable performance. &lt;/p&gt;
&lt;p&gt;Getting back to the second question, the answer is "yes". There will be a very powerful grid control in our WPF line up and it will:&lt;br /&gt;
- have very slick UI&lt;br /&gt;
- have several easily customizable themes&lt;br /&gt;
- be lookless and easily styleable&lt;br /&gt;
- perform very well even when loaded with lots of data records&lt;/p&gt;
&lt;p&gt;Those of you who are already customers know that we've never accepted the common wisdom that what is feature rich and looks good has to be heavy and slow. We haven't made a compromise and from the very beginning we've designed our WPF grid control with performance in mind. We have tested it with 1 million records and I've captured a &lt;a href="http://blogs.telerik.com/Photos/Storage/kosev/RadGridView.wmv"&gt;video&lt;/a&gt; to show how the grid performs when loaded with 1 million records.&lt;/p&gt;
&lt;p&gt;As you don't have a second chance to make a first impression, what was your first impression of our WPF grid?&lt;/p&gt;
</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/08-04-16/RadControls_for_WPF_CTP.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/08-04-16/RadControls_for_WPF_CTP.aspx</comments>
      <guid isPermaLink="false">29a53ea6-468f-42f7-8015-13f8393c58df</guid>
      <pubDate>Wed, 16 Apr 2008 11:09:24 GMT</pubDate>
    </item>
    <item>
      <title>Have a safe trip from WinForms to WPF</title>
      <description>&lt;p&gt;We have received several requests so far by customers who one way or another ask for the same thing: "Can you make your WPF controls in such a way that later when I convert my WinForms application (which use your WinForms controls) to WPF I wouldn't need to deal with different APIs and inconsistencies?".&lt;br /&gt;
 &lt;br /&gt;
In general, this could be achieved if we had:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;the same feature set in these two product lines&lt;/li&gt;
    &lt;li&gt;the same API for our WinForms controls and WPF controls&lt;/li&gt;
&lt;/ul&gt;
&lt;p &gt;The first point is feasible and we'll do our best to do it. &lt;br /&gt;
 &lt;br /&gt;
The second, however, is something we probably won't do. Believe us, you wouldn't want us to give you a set of WPF controls having the same API as our WinForms controls, just for the sake of conversion. It's not that the API of our WinForms controls is not good - quite the opposite. It's because WPF and WinForms are too different. The main difference is in the UI which in WinForms is customizable through the API, while in WPF the best place to put your UI customizations in is the XAML. In WPF we also have some new concepts like dependency properties, attached properties, routed events, templates, styles, triggers, etc. which could change a lot the way you achieve certain things in WPF. &lt;br /&gt;
 &lt;br /&gt;
Of course, it always depends on what you'd like to accomplish. In case you want to extend your WinForms application and add a little bit of WPF flavor in it, but you still don't want to rewrite your whole application, then most probably you don't need a conversion. The better route will be to host WinForms controls in WPF, or have WPF elements in WinForms.&lt;br /&gt;
 &lt;br /&gt;
In case you'd want your WinForms application to become a 100% WPF application, then you should be ready to spent some time converting not only the code which uses 3rd party WinForms controls (e.g. ours), but also the rest of the code which doesn't deal with controls. My personal recommendation is that you throw away most (or better all) of the code dealing with UI in your WinForms application and do it the WPF way in your WPF application.&lt;br /&gt;
 &lt;br /&gt;
But are there any good news? Yes. The first good news is that &lt;a href="http://www.telerik.com/products/winforms/overview.aspx"&gt;RadControls for WinForms&lt;/a&gt; enforce a strict separation between UI customizations and business logic through the built-in theming mechanism (the themes built with our Visual Style Builder are serialized as xml files). That spares you the trouble of reviewing all your code and porting UI-related stuff to XAML while keeping business logic intact.&lt;br /&gt;
The other good news is that &lt;a href="http://www.telerik.com/products/winforms/controls/tpf/overview.aspx"&gt;we've already adopted some of the WPF paradigms&lt;/a&gt; in our WinForms controls: we're using commands, a similar dependency property mechanism and routed events. If you're already using them chances are that you'd have an easier conversion on WPF once you start doing it.&lt;/p&gt;
</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/08-02-20/Have_a_safe_trip_from_WinForms_to_WPF.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/08-02-20/Have_a_safe_trip_from_WinForms_to_WPF.aspx</comments>
      <guid isPermaLink="false">524ebb7c-5494-4f22-97d8-cc24e8dd121f</guid>
      <pubDate>Wed, 20 Feb 2008 09:31:00 GMT</pubDate>
    </item>
    <item>
      <title>Pony returns</title>
      <description>&lt;p align="justify"&gt;&lt;img alt="" style="FLOAT: right; WIDTH: 240px; HEIGHT: 176px" src="http://blogs.telerik.com/Photos/Storage/kosev/circles009_3.jpg" /&gt;Well... I haven't blogged for so long that I almost forgot about this activity. One of my last posts was around the time we made "the big Bang release". It was so long ago (April 2007) that we spelled Rad as r.a.d. at that time. May be you remember that at that time there was a quest about the release and there was &lt;a href="http://www.telerik.com/community/forums/thread/b311D-tmbdk.aspx"&gt;a forum thread about the quest&lt;/a&gt;. One guy (Mark Fitzpatrick) asked for RadPony. Well, we couldn't release a pony and it's still not sure it's going to appear on the roadmap but somehow for me the pony turned into a symbol of something great, something really cool, novel and crazy that people would love to see in our ever-growing product lines. "The RadPony release" was a blockbuster (New WinForms controls, Reporting Tool, AJAX controls, Silverlight 1.0 controls, etc.). We could stop then and rest on our laurels for a long time but... well, we couldn't resist the temptation to push the limits of some of the emerging technologies).&lt;/p&gt;
&lt;p align="justify"&gt;As it's modern in the Hollywood movies, we decided to expand the series and include much more visual effects and animation. In this year's Pony movie you'll see some new heroes (Prometheus without beta tag, WPF, Silverlight 2.0) and some of the old heroes (WinForms, Reporting) will have new special, previously unknown, abilities. Soon I'll post some pictures of the WPF superhero to stop the speculations that he'll be the "invisible man". Actually he'll be full of colors.&lt;br /&gt;
So get some popcorn, sit comfortably and enjoy the movie! And remember that the movie is still in production and you can influence the script and the final cut - send us your ideas about the things you'd like to see in it and be a director! I promise we'll put your name in the credit titles.&lt;/p&gt;
</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/08-02-01/Pony_returns.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/08-02-01/Pony_returns.aspx</comments>
      <guid isPermaLink="false">a7401e72-ac93-43ff-b37c-442f9631b506</guid>
      <pubDate>Fri, 01 Feb 2008 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Visual Studio island in Second Life</title>
      <description>It looks like &lt;a href="http://blogs.msdn.com/brada/archive/2007/06/28/visual-studio-in-second-life.aspx"&gt;Microsoft is investing in Second Life&lt;/a&gt; and soon several events will take place on the &lt;a href="https://www.visualstudioisland.com/"&gt;Visual Studio island&lt;/a&gt; they're building.&lt;br&gt;This news isn't sensational but I like the idea.&lt;br&gt;A lot.</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/07-06-28/Visual_Studio_island_in_Second_Life.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/07-06-28/Visual_Studio_island_in_Second_Life.aspx</comments>
      <guid isPermaLink="false">da9f2cb2-4a99-4294-beb1-4796c4fe31ed</guid>
      <pubDate>Thu, 28 Jun 2007 14:39:00 GMT</pubDate>
    </item>
    <item>
      <title>RadControls for Silverlight June CTP. Registration now open!</title>
      <description>You can now &lt;a href="http://www.telerik.com/products/silverlight/telerik-silverlight-ctp.aspx"&gt;register&lt;/a&gt; for the CTP release of our Silverlight controls and you'll soon receive an e-mail with instructions about where you can download the installation. The controls are using Silverlight 1.0 so all you need to have installed is the Silverlight 1.0 plugin and Visual Studio 2005 or Visual Studio Orcas Beta 1.&lt;br&gt;We've added a MediaPlayer control to the set of controls with which you may have already got acquainted from our &lt;a href="http://www.telerik.com/demos/aspnet/silverlight/Cube/Examples/RoomDesigner/DefaultCS.aspx"&gt;online examples&lt;/a&gt;.&lt;br&gt;Some of the cool features of the MediaPlayer control which you also may find intriguing are:&lt;br&gt;- Coming with three predefined themes: Telerik, &lt;a href="http://blogs.telerik.com/photos/storage/kosev/VistaTheme.jpg"&gt;Vista&lt;/a&gt; and &lt;a href="http://blogs.telerik.com/photos/storage/kosev/SimpleTheme.jpg"&gt;Simple&lt;/a&gt;&lt;br&gt;- Support for &lt;a href="http://blogs.telerik.com/photos/storage/kosev/Playlist.jpg"&gt;Playlists&lt;/a&gt;&lt;br&gt;- Support for &lt;a href="http://blogs.telerik.com/photos/storage/kosev/FullScreen.jpg"&gt;fullscreen&lt;/a&gt; with the toolbar appearing on the bottom of the screen&lt;br&gt;- Support for &lt;a href="http://blogs.telerik.com/photos/storage/kosev/Watermark.jpg"&gt;watermarking the video&lt;/a&gt;&lt;br&gt;- and more...&lt;br&gt;Please, bear in mind that this is a CTP build and you may have some difficulties using the controls in more complex scenarios. The documentation is also incomplete but we're working on it too.&lt;br&gt;Anyway we'll be happy to hear your feedback and will welcome any suggestions you have on the Silverlight controls.</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/07-06-21/RadControls_for_Silverlight_June_CTP_Registration_now_open.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/07-06-21/RadControls_for_Silverlight_June_CTP_Registration_now_open.aspx</comments>
      <guid isPermaLink="false">e0199963-477b-465e-90d6-61c328eef8bf</guid>
      <pubDate>Thu, 21 Jun 2007 20:04:00 GMT</pubDate>
    </item>
    <item>
      <title>Who says the web can't be interactive?</title>
      <description>&lt;p&gt;Three&amp;nbsp;days ago we made the biggest release so far in the history of Telerik. It was a very exciting moment for everyone on our team for a number of reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We released &lt;a href="http://www.telerik.com/products/aspnet-prometheus/overview.aspx"&gt;a whole new suite for ASP.NET AJAX&lt;/a&gt; (having the pompous codename "Prometheus").&lt;/li&gt;
&lt;li&gt;We released three major new controls for &lt;a href="http://www.telerik.com/products/winforms/overview.aspx"&gt;our WinForms suite&lt;/a&gt; - Grid, Treeview and Chart.&lt;/li&gt;
&lt;li&gt;We released the first version of &lt;a href="http://www.telerik.com/products/reporting/overview.aspx"&gt;Telerik Reporting&lt;/a&gt;, our new report generation engine.&lt;/li&gt;
&lt;li&gt;We offered as a download &lt;a href="http://www.telerik.com/support/self-paced-tutorial.aspx"&gt;a 550+ page self-paced tutorial for our controls&lt;/a&gt;, the first such major learning tool&lt;/li&gt;
&lt;li&gt;We released everything on time&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;You know that our slogan says "Deliver more than expected" and we always try to live up to your expectations. So, what's the surprise? &lt;/p&gt;
&lt;p&gt;If you've been following the MS blog posts and the agendas of the recent conferences, there is no way you could have missed the WPF/E name. Recently WPF/E got renamed to "&lt;a href="http://www.microsoft.com/silverlight/"&gt;Silverlight&lt;/a&gt;" but its essence stayed the same - to give a new meaning to RIA. The acronym originally stands for Rich Internet Applications, however, Microsoft's goal is to help you take things further and deliver RIA (Rich Interactive Applications). &lt;/p&gt;
&lt;p&gt;It was an exciting moment not only for Microsoft. As soon as we started experimenting with Silverlight months ago, we also got excited about its capabilities and the doors which it will open for all of us who felt that technology was to an extent limiting our vision for truly interactive applications.&lt;/p&gt;
&lt;p&gt;The good news for customers is that our excitement had an immediate implication - we started conceptualizing our Silverlight product line as soon as we got our hands on the WPF/E bits. We've been quiet about this new initiative as our initial plan was to announce the new suite to the community once we reach a CTP or a BETA milestone. Nonetheless, our excitement was overwhelming and this time we decided to be more transparent and start showing you our progress on a regular basis even while the product is in its infancy. &lt;/p&gt;
&lt;p&gt;You can visit &lt;a href="http://www.telerik.com/silverlight"&gt;http://www.telerik.com/silverlight&lt;/a&gt;, read about the current state of the Silverlight controls, browse some of the examples we've put online and send us your feedback. We'll be glad to hear your first impressions about our newest product line.&lt;/p&gt;</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/07-04-25/Who_says_the_web_can_t_be_interactive.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/07-04-25/Who_says_the_web_can_t_be_interactive.aspx</comments>
      <guid isPermaLink="false">d6e46673-90a0-4933-a655-97bf5b80b6ed</guid>
      <pubDate>Wed, 25 Apr 2007 19:28:00 GMT</pubDate>
    </item>
    <item>
      <title>WPF - What Products Follow?</title>
      <description>&lt;p&gt;Since we released the first version of our &lt;a href="http://www.telerik.com/products/winforms/overview.aspx"&gt;Windows Forms UI controls&lt;/a&gt; we've received quite a lot of questions about our plans for WPF. Basically the questions revolve around the following:&lt;br&gt;&amp;nbsp;- Is Telerik going to offer products for WPF?&lt;br&gt;&amp;nbsp;- When will they be public?&lt;br&gt;&amp;nbsp;- What controls will be included?&lt;br&gt;&amp;nbsp;&lt;br&gt;Most of you probably know the answer to the first question and is an unequivocal "Yes"! Even though there are some misconceptions that WPF is good only for displaying cool things on the sides of a rotating cube, we believe that even in its current form it offers a lot to build upon. WPF is a great platform and as being such it inevitably brings great value both for developers and end users. Developers can now concentrate on the business logic of the application while designers can unleash their imagination and create very appealing UIs with Expression Blend. On the other side the end users can enjoy a whole new experience which is very hard to bring with the traditional WinForms instruments. Even though our &lt;a href="http://www.telerik.com/products/winforms/overview.aspx"&gt;Windows Forms UI controls&lt;/a&gt; offer many unique features that you can find in WPF, they have to deal with the limitations of GDI+ and you cannot enjoy the same interactivity. With so many potential benefits for both our customers and end-users we just can't miss the opportunity to get creative and add a WPF product line to our portfolio.&lt;br&gt;&amp;nbsp;&lt;br&gt;The second important question is "When we shall release the first version of these controls?". Without being too secretive, the best answer I can give at this point is: this year. I know that this information is not enough but there're few steps which we have to make before we commit ourselves to a more precise roadmap for the WPF controls. Writing software is never the hard part if you have a passion for it. The difficult part comes when you have to update it and support it and that is why we are approaching WPF very carefully. For us, and for other vendors, WPF represents our big bet for years to come. Unlike others, we are more cautious to start development as we are still not comfortable to architect our next generation products on a platform that may change in its next releases just as Atlas changed with every release until it morphed into the official release of ASP.NET AJAX. Apart from our concern not to roll out something that might turn out to be bad legacy in the future, our second major point is that we want to ensure that all of our new developments do not affect adversely any of our existing customers. &lt;br&gt;Our goal for 2007 is to release a CTP, then collect some feedback and then make the necessary changes based on feedback. We'll also need to conform with each beta release of VS Orcas and Expression Blend. Even if we have some firm plans about what and when we're going to release, everything we release will be labeled as Beta until both Visual Studio Orcas and Expression Blend ship out.&lt;br&gt;&amp;nbsp;&lt;br&gt;As for the last good question "What controls we'll include in our WPF suite?" I would have to once again give ambiguous information: You'd better wait for the first CTP. We've always been listening carefully to our customers' requests and feedback and we'll continue to work the same way. What we've learned is that one of the worst things you can do is to overpromise and underdeliver and unfortunately this happens quite often when you venture into a new territory.&lt;/p&gt;
&lt;p&gt;To recap, we are already working on WPF and you can have assurance that Telerik will come up with a compelling WPF offering in the near future and you will be able to once again rely on Telerik for interface development. If you would like to see a specific control in the first CTP of the WPF controls don't hesitate to contact us. We will be very happy to involve your input from the very early stage of development. Share your specific needs for WPF controls and we will do our best to deliver them.&lt;/p&gt;</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/07-03-01/WPF_-_What_Products_Follow.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/07-03-01/WPF_-_What_Products_Follow.aspx</comments>
      <guid isPermaLink="false">48f6eeab-b93c-43be-a00e-bf3eec7d2c2e</guid>
      <pubDate>Thu, 01 Mar 2007 20:07:00 GMT</pubDate>
    </item>
    <item>
      <title>Telerik WinForms controls are finalists at the Jolt Awards</title>
      <description>The finalists for the &lt;a href="http://joltawards.com/2007/"&gt;2007 Jolt Product Excellence Awards&lt;/a&gt; have been announced and our &lt;a href="http://www.telerik.com/products/winforms/overview.aspx"&gt;radControls for WinForms&lt;/a&gt; are amongst the finalists under the "Libraries, Frameworks and Components" category. Frankly, this is equally pleasing as well as surprising and let me tell you why. There is no doubt that we find this achievement to be a great recognition for our work. For one, the radControls for WinForms suite has been available to the public for slightly over three months and despite being in infant stage, our WinForms suite has proven to be ripe enough for development and production use. Certainly the appreciation shown by the Jolt Awards judges gives us greater confidence in continuing our quest to provide a different, richer, and technologically better presentation framework for Windows Forms development.&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;"Our prestigious Jolt Judges . define who is ahead of the curve, honoring products that are universally useful; that are simple, yet rich in functionality; that redefine their product space; or solve a nagging problem that has consistently eluded other products and books. Our judges and their decisions is one of the major reasons the Jolts are so coveted." (&lt;a href="http://joltawards.com/jolts/"&gt;http://joltawards.com/jolts/&lt;/a&gt;)&lt;br&gt;&lt;br&gt;We haven't spared any effort to make our WinForms controls look nice, and we literally pushed the limits of GDI(+) to help developers build Vista style applications which can work well (and fast) on Windows 2000, Windows XP, and Windows Vista. But looks is not all - we did our best to bring the same Windows Vista user experience to our WinForms suite. Hence, our ad goes "The First Ever. Vista style controls for WinForms."&amp;nbsp;&lt;br&gt;&lt;br&gt;This achievement is a great honor for us not only because our product is a finalist, but also because it has been elected to be in the company of some very distinguished products, namely ".NET Framework 3.0", "Microsoft XNA Game Studio Express, XNA Framework", and NetAdvantage for .NET. We see this both as an accomplishment and a challenge in order to keep up with such worthy rivals. Needless to say, despite the fact that we were late entrants in the field we plan to continue our journey to deliver the most advanced UI suite for desktop development and we hope that desktop application developers will be able to benefit from our passion for building great UI components.</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/07-01-22/Telerik_WinForms_controls_are_finalists_at_the_Jolt_Awards.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/07-01-22/Telerik_WinForms_controls_are_finalists_at_the_Jolt_Awards.aspx</comments>
      <guid isPermaLink="false">93e05ca2-9d9a-42e7-bae7-47a6bab4df70</guid>
      <pubDate>Mon, 22 Jan 2007 20:35:00 GMT</pubDate>
    </item>
    <item>
      <title>The Q4 Release</title>
      <description>&lt;p&gt;As I said in my previous blog post, the three ingredients needed for a good Vista-like applications are known... But this begs the question - what does telerik do about it? May be you'll find the answer in our latest Q4 2006 release. Specifically for the &lt;a href="http://www.telerik.com/products/winforms/overview.aspx"&gt;WinForms controls&lt;/a&gt; we've improved quite a lot the RibbonBar control (ScreenTips, KeyTips, Gallery, etc.), we've introduced scaling for all of the framework element / items, we've added a new control (&lt;a href="http://www.telerik.com/products/winforms/controls/panelbar/overview.aspx"&gt;r.a.d.panelbar&lt;/a&gt;) and the docking controls now support MDI.&lt;/p&gt;&lt;p&gt;A picture is worth a thousand words so here are some screenshots of the examples which we have added in the latest release:&lt;br&gt;&lt;a title="BubbleBar" href="/photos/storage/kosev/Q4/BubbleBar.jpg"&gt;1&lt;/a&gt;, &lt;a title="CollapsiblePane" href="/photos/storage/kosev/Q4/CollapsiblePane.jpg"&gt;2&lt;/a&gt;, &lt;a title="ComboBox Example" href="/photos/storage/kosev/Q4/ComboBoxExample.jpg"&gt;3&lt;/a&gt;, &lt;a title="ComboBox With Zoom" href="/photos/storage/kosev/Q4/ComboBoxWithZoom.jpg"&gt;4&lt;/a&gt;, &lt;a title="Docking" href="/photos/storage/kosev/Q4/Docking.jpg"&gt;5&lt;/a&gt;, &lt;a title="Gallery" href="/photos/storage/kosev/Q4/Gallery.jpg"&gt;6&lt;/a&gt;, &lt;a title="Magnifier" href="/photos/storage/kosev/Q4/Magnifier.jpg"&gt;7&lt;/a&gt;, &lt;a title="Menu Example" href="/photos/storage/kosev/Q4/MenuExample.jpg"&gt;8&lt;/a&gt;, &lt;a title="PanelBar" href="/photos/storage/kosev/Q4/PanelBar.jpg"&gt;9&lt;/a&gt;, &lt;a title="PanelBar Outlook" href="/photos/storage/kosev/Q4/PanelBarOutLook.jpg"&gt;10&lt;/a&gt;, &lt;a title="RibbonBar Gallery" href="/photos/storage/kosev/Q4/RibbonBarGallery.jpg"&gt;11&lt;/a&gt;, &lt;a title="Key Tips and Screen Tips" href="/photos/storage/kosev/Q4/RibbonBarTips.jpg"&gt;12&lt;/a&gt;, &lt;a title="Visual Style Builder" href="/photos/storage/kosev/Q4/VisualStyleBuilder.jpg"&gt;13&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As to the &lt;a href="http://www.telerik.com/products/aspnet/overview.aspx"&gt;web controls&lt;/a&gt;, I'll let the &lt;a href="http://www.telerik.com/demos/aspnet/Controls/Examples/Default/DefaultCS.aspx"&gt;examples&lt;/a&gt; speak for themselves. The AJAX spellchecking, the grid client side features and the improved chart control are just a small part of the improvements we've made in the latest Q4 release.&lt;/p&gt;&lt;p&gt;Btw, today we're also releasing &lt;a href="http://www.telerik.com/community/forums/thread/b311D-gecac.aspx"&gt;the second CTP of the Reporting Tool&lt;/a&gt; and if you've been waiting for the PDF export, and rendering and binding events, go ahead and download the latest CTP.&lt;br&gt;I think this pretty much wraps up our work for this year.&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;Happy Holidays and have a great time!&lt;br&gt;&amp;nbsp;&lt;br&gt;And if you would like to give us a Christmas present, don't forget to cast your vote in the &lt;a href="http://dotnet.sys-con.com/general/readerschoice.htm"&gt;SYS-CON 2007 Readers' Choice Awards&lt;/a&gt;.&lt;br&gt;:)&lt;/p&gt;</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/06-12-21/The_Q4_Release.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/06-12-21/The_Q4_Release.aspx</comments>
      <guid isPermaLink="false">b1d1fa49-97fd-4b67-a604-235ea210003d</guid>
      <pubDate>Thu, 21 Dec 2006 20:26:00 GMT</pubDate>
    </item>
    <item>
      <title>Recipe for Vista. A step ahead</title>
      <description>&lt;p&gt;The first &lt;a href="http://msdn2.microsoft.com/en-us/asp.net/bb187358.aspx"&gt;CTP of WPF/E&lt;/a&gt; is official and it rocks!&lt;/p&gt;
&lt;p&gt;If I were Steve Ballmer I would shout: Designers, designers, designers, designers, designers.... Why designers? May be because as a developer (or at least that's how I consider my mindset) I miss too much WPF features in WPF/E at the moment, starting from the handy, nice layouts. I hope someone from the telerik UX team will try it and share his/her experience to the reading public. &lt;/p&gt;
&lt;p&gt;Btw, there're new Expression tools (announced as &lt;a href="http://www.microsoft.com/products/expression/en/news-press/expression-news-press-2006-12-04.mspx"&gt;Expression Studio&lt;/a&gt;) so expect some blog posts from the people who make our site and products look so nice.&lt;/p&gt;
&lt;p&gt;Today's blog post will be dedicated to Vista, and what it takes for an application to look native in Vista. My recipe for Vista style application could be generalized in three main ingredients: sugar, spice and everything nice.&lt;/p&gt;
&lt;p&gt;The sugar is the main ingredient and it stands for very rich UI. The major purpose of the rich UI should be usability. The ribbon control is an example of how a control with a complex structure comes to the rescue when an application UI becomes unusable, because of all the controls that should be provided. Sweet!&lt;/p&gt;
&lt;p&gt;The spice comes for Appearance. I don't need to be Gartner to say that a visually appealing presentation layer and&amp;nbsp;consistent look-and-feel across different platforms have quite an impact on the user's perception of a given application. I want it Sweet and Spicy!&lt;/p&gt;
&lt;p&gt;"Everything nice" covers the many new additions like slick gradients, shapes, animations, scaling, rotation, opacity, etc. Listed like that all these "effects" seem to have come out of a computer game, rather than from a software vendor. But used properly and carefully, they can make working with one's application a very pleasant experience. Just take a look at Vista and you will see what I mean. I think it is a very good example of how all these bells and whistles improve user experience. Very Nice.&lt;/p&gt;
&lt;p&gt;Consider this post more like an introduction to my next post in which I'll try to explain what we're doing here at telerik in order to provide you a good amount of these ingredients, and help you "cook" some really tasty and modern applications.&lt;/p&gt;</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/06-12-12/Recipe_for_Vista_A_step_ahead.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/06-12-12/Recipe_for_Vista_A_step_ahead.aspx</comments>
      <guid isPermaLink="false">f1f8cbbf-4719-4dbe-93a4-ef1d9deff6ab</guid>
      <pubDate>Tue, 12 Dec 2006 20:19:00 GMT</pubDate>
    </item>
    <item>
      <title>WPF/Everywhere, somewhere?... Anywhere?</title>
      <description>The last time I've heard something about WPF/e was at the Mix conference this year in Las Vegas. Because of all the noise around WPF, and some really good community sites which started showing up and were mostly dedicated to WPF, I almost forgot about WPF/e.&lt;br&gt;&amp;nbsp;&lt;br&gt;Several days ago I searched about WPF/e and found a &lt;a href="http://blogs.msdn.com/jstegman/archive/2006/11/12/checking-in.aspx"&gt;blog post by Joe Stegman&lt;/a&gt; who says that an external CTP is expected to be released soon. I've been waiting for quite some time to put my hands on WPF/e and see exactly what are its limitations comparing it to its big brother - WPF. I also wonder whether the next CTP of Expression Interactive Designer and the extensions for Visual Studio 2005 will support WPF/e. &lt;br&gt;&amp;nbsp;&lt;br&gt;Hope to get the answers to these questions soon. If you have any information, please share it. I will be happy to learn more on the current state of WPF/e.</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/06-11-29/WPF_Everywhere_somewhere_Anywhere.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/06-11-29/WPF_Everywhere_somewhere_Anywhere.aspx</comments>
      <guid isPermaLink="false">7921fe17-06b1-4aee-b15f-2cd9f60e6d6e</guid>
      <pubDate>Wed, 29 Nov 2006 16:07:00 GMT</pubDate>
    </item>
    <item>
      <title>Evaluate r.a.d.controls for WinForms and go to Hawaii. Not bad?</title>
      <description>&lt;p&gt;There's a telerik contest going on. The requirements are simple - you have to prepare a small app using our&amp;nbsp;&lt;a href="http://www.telerik.com/products/winforms/overview.aspx"&gt;WinForms&amp;nbsp;controls&lt;/a&gt; and fill in a &lt;a href="http://www.telerik.com/products/winforms/surveys/survey-information.aspx"&gt;survey&lt;/a&gt;. We've already started receiving participants' applications and I'm really amazed how quickly people get used to our&amp;nbsp;controls, and especially how fast they've learned to use the Visual Style Builder application (the application which helps you create a theme and style each telerik Windows Forms UI control).&lt;/p&gt;
&lt;p&gt;We'll be offering three iPods as 3rd prizes, an Xbox 360 as the second prize, and the winner will get a fabulous 4 day trip to Hawaii! Why Hawaii? Well, there's no symbolism in that. While Microsoft uses names of the Pacific Northwest islands for the Visual Studio codenames (Whidbey, Orcas, etc.), we don't use codenames. Hawaii is just a cool place and we thought you might feel about it the same way:)&lt;br&gt;We'll be grateful (and generous:) to get your feedback about our new product line.&lt;/p&gt;
&lt;p&gt;BTW, it looks like &lt;a href="http://www.eweek.com/article2/0,1759,1815855,00.asp"&gt;Visual Studio Hawaii&lt;/a&gt; will be on the pipeline just after Orcas ships out.&lt;/p&gt;</description>
      <link>http://blogs.telerik.com/HristoKosev/Posts/06-11-26/Evaluate_r_a_d_controls_for_WinForms_and_go_to_Hawaii_Not_bad.aspx</link>
      <author>Hristo Kosev</author>
      <comments>http://blogs.telerik.com/HristoKosev/Posts/06-11-26/Evaluate_r_a_d_controls_for_WinForms_and_go_to_Hawaii_Not_bad.aspx</comments>
      <guid isPermaLink="false">c568f1bd-9948-4ee8-b04e-bcabf7b7f6ca</guid>
      <pubDate>Sun, 26 Nov 2006 20:58:00 GMT</pubDate>
    </item>
  </channel>
</rss>