Friday, May 28, 2010

Looking ahead to Q2 2010, Part 2

futureExit A few weeks ago, I started sharing with you highlights from the rapidly approaching July Q2 2010 Telerik release. We looked at the road maps for ASP.NET AJAX, ASP.NET MVC, and WinForms and I hand-picked a few of the updates for each product that should get you really excited about what’s coming in less than 8 weeks time. But this is 2010 and a Telerik release means updates to 9 developer products!

What else should you be looking forward to in Q2 2010? Here are some ideas:

  • RadControls for Silverlight/WPF
    • [!NOTE] Only SL4/WPF4 builds will get new controls (v3 will be bug fixes only)
    • [NEW CONTROL] RichTextBox (incredible, Word-like editor)
    • [NEW CONTROL] TreeListView
    • [NEW CONTROL] RadFilter
    • New BusyIndicator being added to all controls for auto remote-request UX
    • [RadGridView] New multi-cell selection (foundations for advanced copy/paste)
    • [RadCart] New annotations, exploding radial series, log axis
    • [RadScheduler] Improved perf (UI virtualization), improved rendering, grouping
    • New theme and animations
    • Improved VS2010 support (Collection Editor, SmartTag)
  • OpenAccess ORM
    • Support for WCF Ria & Data Services
    • New DataTransporterObjects (self-tracking entities)
    • DataAnnotations support
    • Improved RLINQ visual designer (support for reverse & forward mapping!)
    • [NEW DB SUPPORT] SQLite
  • JustCode
    • [NEW] Unit Test Runner!
    • Enhanced XAML navigation and refactoring support
    • New visual cues for easier access to all features
    • At least 3 new refactorings
    • Improved code navigation and code analysis engine
  • Telerik Reporting
    • [NEW] Interactive reports (hyperlinks for drill down, navigation, & external links)
    • New data source components for OpenAccess ORM and EF
    • Improved Silverlight support

On top of all that, Q2 will also introduce the first official release of JustMock (including basic JustMock integration with JustCode) and TeamPulse (our new team planning tool). Combine that with the list of new stuff from my last post, and once again you’ve got a huge release coming your way this summer.

Fortunately, betas for Q2 are just around the corner. Betas will start shipping as early as next week (with a JustCode beta) and then continue shipping throughout June. Keep your RSS reader locked here for more updates as we make our way to Q2.

Thursday, May 27, 2010

Improved, Easy Email Template “Engine” with Smarter ToString Extension

This blog often focuses on Telerik and Microsoft news, and rarely do I bring you much “original thought” code (especially lately). But this class is just too useful not to share.

Let me just lead with the scenario:

  1. You have a program that is going to send auto-generated emails
  2. You want templates for your emails that support value merging
  3. You want to maintain your templates as HTML files for easier editing
  4. You want something as easy to use as String.Format

While there are tons of templating engines for C#, I just wanted something simple and to the point. The solution Scott Hanselman provided a couple of years ago was very close to what I wanted, but it doesn’t support collections (very important for Master-MasterDetail type messages). So I added the tweak to support these scenarios.

Here’s how you use it:

//Create a simple template
string template = "Hello {FirstName}! You've ordered: <ul>{Items:<li>{Name}</li>}</ul>";

//Create your object with the template values (can by anonymous type)
//(Let's use some pseduo LINQ to get a customer with a specific ID)
var myTemplateValues = myObjects.Where(o => o.Id == id).Select(o => new
   {
       FirstName = o.FirstName,
       Items = o.Items //Assume each item in ICollection has Name property
   });

//Merge values with template 
string mergedTemplate = myTemplateValues.ToStringWithFormat(template);

The result of the above code should be a string that looks something like:

Hello Todd! You’ve ordered: <ul><li>Item Name 1</li><li>Item Name 2</li></ul> You can, of course, add formatting to your objects in your template, too, such as: {Birthdate:dd MMM yyyy} But when you’ve got a collection, you can use the object format string to include nested property values, like this: {Customers:<li>{Birthdate:dd MM yyy}</li>} Pretty cool! It’s a nice balance between the templating engines that are super complex and a plain-jane String.Format. It doesn’t do everything you could ever want, but it does enough for many auto-email scenarios. In my own usage, I have a simple method that let’s me quickly merge my context values with my template when I’m ready to build an email’s body:
public static string GetMergedTemplate<T>(string template, T contextInstance)
{
   if (String.IsNullOrWhiteSpace(template))
       return null;

   return contextInstance.ToStringWithFormat(template);
} 
Which brings us to the implementation of ToStringWithFormat. This is a modified version of the extension method from Hanselman that gives us the extra power we desire:
/// <summary>
/// Returns a string and replaces named place holders with object values
/// </summary>
/// <remarks>Originally from Scott Hanselman's Blog: http://www.hanselman.com/blog/ASmarterOrPureEvilToStringWithExtensionMethods.aspx </remarks>
/// <param name="anObject"></param>
/// <param name="aFormat"></param>
/// <returns></returns>
public static string ToStringWithFormat(this object anObject, string aFormat)
{
   return StringExtensions.ToStringWithFormat(anObject, aFormat, null);
}

public static string ToStringWithFormat(this object anObject, string aFormat, IFormatProvider formatProvider)
{
   if (anObject == null)//Can't merge null object. Be nice and return original format string.
       return aFormat;

   StringBuilder sb = new StringBuilder();
   Type type = anObject.GetType();
   //Old pattern: @"({)([^}]+)(})" - Doesn't handle nested brackets
   //New pattern:"({)((?:[^{}]|{[^{}]*})*)(})" - Handles ONE LEVEL of nested brackets
   Regex reg = new Regex(@"({)((?:[^{}]|{[^{}]*})*)(})", RegexOptions.IgnoreCase);
   MatchCollection mc = reg.Matches(aFormat);
   int startIndex = 0;
   foreach (Match m in mc)
   {
       Group g = m.Groups[2]; //it's second in the match between { and }
       int length = g.Index - startIndex - 1;
       sb.Append(aFormat.Substring(startIndex, length));

       string toGet = String.Empty;
       string toFormat = String.Empty;
       int formatIndex = g.Value.IndexOf(":"); //formatting would be to the right of a :
       if (formatIndex == -1) //no formatting, no worries
       {
           toGet = g.Value;
       }
       else //pickup the formatting
       {
           toGet = g.Value.Substring(0, formatIndex);
           toFormat = g.Value.Substring(formatIndex + 1);
       }

       //first try properties
       PropertyInfo retrievedProperty = type.GetProperty(toGet);
       Type retrievedType = null;
       object retrievedObject = null;
       if (retrievedProperty != null)
       {
           retrievedType = retrievedProperty.PropertyType;
           retrievedObject = retrievedProperty.GetValue(anObject, null);
       }
       else //try fields
       {
           FieldInfo retrievedField = type.GetField(toGet);
           if (retrievedField != null)
           {
               retrievedType = retrievedField.FieldType;
               retrievedObject = retrievedField.GetValue(anObject);
           }
       }

       if (retrievedType != null) //Cool, we found something
       {
           string result = String.Empty;
           if (toFormat == String.Empty) //no format info
           {
               if (retrievedObject is ICollection)
               {
                   foreach (var item in (retrievedObject as ICollection))
                   {
                       //In this branch toFormat is blank, so just call toString on
                       //each object in collection (ex:{Items})
                       result += item.ToString();
                   }
               }
               else
                   result = retrievedObject.ToString();
           }
           else //format info
           {
               if (retrievedObject is ICollection) //Process first level collection
               {
                   foreach (var item in (retrievedObject as ICollection))
                   {
                       //In this branch toFormat contains nested property name, so
                       //make recursive call to ToStringWithFormat to process property value
                       //(ex: {Items: {PropertyName}})
                       result += item.ToStringWithFormat(toFormat);
                   }
               }
               else
                   result = String.Format(formatProvider, toFormat, retrievedObject);
           }
           sb.Append(result);
       }
       else //didn't find a property with that name, so be gracious and put it back
       {
           sb.Append("{");
           sb.Append(g.Value);
           sb.Append("}");
       }
       startIndex = g.Index + g.Length + 1;
   }
   if (startIndex < aFormat.Length) //include the rest (end) of the string
   {
       sb.Append(aFormat.Substring(startIndex));
   }
   return sb.ToString();
}
A key limit in this approach is the RegEx, which technically is not adept at finding nested bracket patterns. RegEx works fine if you accept a fixed number of supported nested levels, but it cannot dynamically handle unknown levels of nesting. A single level was fine for my needs and thus I left it at that, but this could be extend to provide even richer support for collections if RegEx were replaced.

I hope you enjoy this simple update on a classic. As commenters pointed out in Scott’s original post, this approach does create opportunity for “evil” when it comes to refactoring and performance, so there is still plenty of room to improve. But for a pragmatic solution, I’ve found this very useful.

Thursday, May 06, 2010

Telerik TV v2 beta now live!

ttv2-homepage As you know, video is increasingly becoming an important part of learning on the web, and at Telerik we’ve been embracing video for a while now. The current version of Telerik TV moves more than 2 terabytes of data every month and it continues to grow in popularity. It has served its purpose, but as we continue to add products and more videos, we recognized the need for a better portal.

The main goal for Phase One of Telerik TV v2 (or TTV2, as we call it) is to make it easier to find videos. In the current system, you have very limited options for finding videos, and often older videos are very difficult to locate. The system aims to resolve that by introducing multiple “paths” to a video so that people with all styles of browsing preference can find Telerik video content.

In the Phase One beta, you’ll find many new features, including:

  • Multiple featured videos on the home page (presented with Telerik’s Silverlight CoverFlow)
  • Video series (a collection of ordered, related videos)
  • Video ratings (tell us if you love or hate a video)
  • Video feedback (send us comments about a video)
  • TweetMeme and Facebook Like support (FB like is disabled in Beta)
  • Dedicated page for every Telerik product with helpful video resources (including “Getting Started” video series)
  • Progressive Enhancement tooltips (hover over a video to see more details)
  • Improved video search
  • Browse videos by Category and Tag

TTV2 is built on ASP.NET MVC 2 using the Telerik Extensions for ASP.NET MVC and OpenAccess ORM for data access. And, yes, we are still using Flash for video delivery, but that is changing in Phase Two (more on that in a moment).

Check-out the live Beta of Telerik TV 2 now and let us know what you think!

What’s Next

We don’t plan a long beta for TTV2. In fact, we are primarily running this beta to make sure there are no major issues and to make sure all configuration of the new site is complete (we already know a few areas need some more attention). If everything looks good, we’ll be taking TTV2 to production as early as next week.

Phase Two
After Phase One ships, we’ll be working quickly to prepare Phase Two. Some of the things we hope to achieve in Phase Two with TTV2 are:

  • Silverlight-based media encoding and delivery (with uncompromised delivery performance)
    • With the possible addition of HTML5 video playback to enable TTV viewing on iPads and iPhones
  • Chapters in videos
  • Enhanced video analytics (so we know more about how you’re using videos, and then make them better)

Post-Phase Two
We also recognize that the future is not just video. It’s multimedia- or “transmedia” as it’s now being termed. So as we look past Phase Two and in to Phase Three for TTV2, we will be delivering innovative web-based experiences that blend code snippets and text, synchronized with video, in an immersive online learning experience. Similar to the innovation already found in our Telerik Trainer, but made more accessible through the web. Our goal is to provide the best web-based learning experience available for software products.

For now, enjoy the beta and send us your feedback. We hope that these changes help make your lives as developers even easier.

Tuesday, May 04, 2010

Code Converter (finally) updated, Still in Beta

CodeChangerLogo Over three years ago, in my first days as an “official” Telerik employee, I created a small little project as a simple way of showing-off some of Telerik’s RadControls for ASP.NET (this was pre-Prometheus days). The project, Code Converter, is a simple tool for converting code between C# and VB.NET, and it has steadily grown in popularity over the years and is now used by thousands of developers every day.

Today, the conversion approach used by Code Converter got much better! We’re still using the NRefactory open source libraries to power our conversions, but there are three significant improvements:

  1. We updated the NRefactory libraries to the latest available version (4.0.0.5757)
  2. We changed the way code snippet processing is handled, abandoning the old “dummy class wrapper” approach and instead using the more efficient approach described by Fabien in the Code Converter forums.
  3. We added some additional RegEx-based “clean-up” parsing to the conversion to try to fix a few of the errors that NRefactory currently lets slip when converting code. In particular, when converting something like Session(“key”) from VB to C#, our conversion output will correctly change the parenthesis to brackets, or Session[“key”]. No other online converter is doing that today.

The end result of these back-end changes is more accurate conversions. Many of the bugs that have been reported in the Code Converter forums are now fixed by this update. For example, converting this C#:

for (int x = 1; x <= 100; x++) {
int a;
a = x;
}

Now correctly outputs this VB:

For x As Integer = 1 To 100
Dim a As Integer
a = x
Next

No more of the dreaded System.Math.Max(System.Threading.Interlocked.Increment(i),i - 1)! Other scenarios that now convert correctly:

  • Regions (C# to VB)
  • Using statements in a namespace (C# to VB)
  • Type conversions (VB to C#)
  • Lambda expressions (C# to VB)
  • RaiseEvent (C# to VB)

There are, of course, still limits imposed by the underlying NRefactory engine. Among the limits most likely to affect your conversions:

  • No support for converting LINQ syntax
  • No support (yet) for .NET 4 language features

As soon as NRefactory supports these language features, we’ll try to improve our support. In the mean time, enjoy the improved conversion engine and let us know what you think. There are lots of things that could be done with Code Converter in the future, but we want to hear your voice. What would make Code Converter an even more valuable tool for you?

Toronto Code Camp wrap-up

toronto-code-camp So, yeah…in my busy haste to finish 1,001 tasks last week, prep a brand new HTML5 session for the Toronto Code Camp, speak at the South Houston .NET Users Group, and join Carl Franklin and Richard Campbell for their Houston .NET Rocks! Road Trip stop, I kinda sorta ran out of time to actually mention that I was going to Toronto this weekend to speak. So, to kill two birds with one blog post, this is both your “heads-up” post that I’m speaking at the Toronto Code Camp 2010 and the wrap-up!

I presented two sessions this weekend, and I was pleased that they were two of the most popular sessions at the entire event. It always amazes me that people are willing to stand for 75 minutes to watch a session when a room is full. You guys are hardcore and get bonus points in my book. Thanks to everyone that attended the sessions, though! I hope you took away at least one useful bit of info.

My sessions at this event were:

  • Maximizing Ajax Performance – Not new, but always useful for people to see how Ajax really works and what you can do as an ASP.NET developer to get the most out of Ajax. Unfortunately, I was a bit rusty delivering this session in Toronto because I was prepping the next session…
  • The Rich Standard: Getting Familiar with HTML5 – Brand new for Toronto Code Camp, I’ll be doing this session a lot this summer and fall. This is your primer to HTML5 and a must see if you A) care about standards, or B) are a web developer.

Slides for both sessions are available below. The slide notes contain a lot of links to additional resources, so be sure to check them out if you’re trying to dive deep on these topics (especially HTML5). I’ll post code soon, but it needs some tidying before it’s “download ready.”

Overall, it was a great event and more than 600 developers ventured-out for the day of learning. Other than a more than frustrating experience with Canadian immigration cops, I had a great time and would encourage anyone to attend this event in the future!

The Rich Standard: Getting Familiar with HTML5
[Slides (PPTX)]

Maximizing Ajax Performance
[Slides (PPTX)]

[Picture courtesy of Joey DeVilla’s Code Camp Flickr set]

Wednesday, April 21, 2010

CAPTCHAs are less secure than you think

captcha-math Quick! What does CAPTCHA stand for (without consulting Wikipedia)? Completely Automated Public Turing…and then things get foggy. Try again. Completely Automated Public Turing test to tell Computers and Humans Apart. Yes, they cheated a little with the acronym (it should be CAPTTTCHA), but regardless of what it stands for, we all know what a CAPTCHA looks like. Those little, often hard to decipher, images on a form designed to only be readable by humans so as to prevent bots from submitting forms.

But are those images really unreadable by computers?

I was prompted to consider this after reviewing a blog post by one of the Telerik ASP.NET AJAX Team Leads about RadCaptcha and OCR software. The nature of the blog post was not meant to be a definitive test of RadCaptcha’s security, but it was clear through the comments that people are interested in that information. In the blog post, it is demonstrated that RadCaptcha cannot be understood by off-the-shelf OCR software, which is a fun test, but clearly not a definitive measure of security. In the “real world,” algorithms are custom tailored for attacking CAPTCHAs.

Weak CAPTCHAs

As it turns out, for years now, computers have been able to automatically parse many of the CAPTCHA images you find on the web. Research done by various universities, such as Simon Fraser University and UC Berkeley, has produced algorithms capable of “seeing” almost all CAPTCHAs that rely on simple text transformation and “busy backgrounds” to stump computer character recognition. Take the following CAPTCHA image examples:

captcha-18 captcha-71

Each of these CAPTCHAs can be successfully read by algorithms developed by university researchers with a 92% success rate! I’m sure you’ve seen a few forums or web forms that have CAPTCHAs that look a lot like this. (You may be the owner of one of those sites today.)

In short: CAPTCHAs that rely on background noise, color, and text distortion are generally ineffective at stopping modern CAPTCHA bots.

Stronger CAPTCHAs

If you must use a visual CAPTCHA today, the much more effective technique for spoiling bots is visual segmentation. When a CAPTCHA bot tries to understand an image, it will first try to remove all background noise and “obviously” unnecessary image data (think about what you’d do in Photoshop to clean-up an old damaged photo – that’s what the bots do). Then, bots will go about trying to “segment” the remaining data in to areas that can be eventually parsed in to characters. With sufficient overlapping and thick cross-cutting lines, bots are unable to accurately translate segments in to characters. For example, the following image is much more effective at blocking bots than the previous images even though there is no background noise or color:

captcha-good

Of course, even strong CAPTCHA images like this are being broken with advanced research, but in the current cat and mouse chase of CAPTCHA security, this is among the best options for balancing human readability and computer bot blocking.

Optimizing RadCaptcha

Given this new understanding about the current state of CAPTCHA bots, there are some easy takeaways for configuring RadCaptcha for maximum bot blocking:

  1. Don’t rely on visual CAPTCHA protection only
    Bots often give away their identity by trying to submit forms too quickly or by trying to submit a form too many times. Take advantage of RadCaptcha’s non-visual protections to maximize bot prevention.
  2. Maximize Line Noise Level, Eliminate Background Noise Level
    Research says background noise is first thing a CAPTCHA bot throws-out, so it offers little value to your image. Instead, maximize your CAPTCHA image line noise and font warp factor to make segmentation hard for bots. Set properly, RadCaptcha can produce very secure CAPTCHA images like this:

    captcha-rad
  3. Use a Custom Character Set
    Many bots rely on encountering a predictable set of characters or words to accurately parse a website’s CAPTCHA image. By using a custom character set with RadCaptcha that includes non-alphanumeric characters (like @, !, #, $), you can increase your odds of beating the bots.

No visual CAPTCHA image is perfect, and with the modern trend of employing humans to beat CAPTCHAs, a CAPTCHA is a road bump at best. Still, they prevent the casual spam bot from infiltrating your site and protect your forms from the script kiddies.

Telerik will continue to add improved security features to RadCaptcha in future releases, but by following these simple guidelines, you can confidently get the most value out of a CAPTCHA today that a CAPTCHA can provide.

Tuesday, April 20, 2010

JustMock unofficial FAQs (update)

justmock-faq With all of the attention on the just announced TeamPulse and WebUI Test Studio QA Edition, the JustMock Beta is over due for more face blog time. Hopefully you managed to attend today’s JustMock introduction webinar (if you did, you are now a proud license holder) and start to learn more about how JustMock benefits your unit testing. But whether you attended that event or not, I figured I’d start to round-up and address some of the most burning questions about Telerik’s newest developer tool.

In the same vein as the Unofficial FAQs for the MVC Extensions, here is round-one for JustMock. If I missed a question you want answered, let me know in the comments.

JustMock Unofficial FAQs

Q: What is JustMock?
JustMock is a new Visual Studio productivity tool from Telerik that helps you create unit tests more quickly by automatically mocking, or “faking,” objects in your tests. Mocking helps you break dependencies in your unit tests so that you can focus on testing a single concern and provide more complete unit test coverage. You can read a complete intro to JustMock from the Product Team on the Telerik Blogs.

[NEW] Q: What is mocking and why do I need it?
Mocking (Wikipedia) is a concept in unit testing where real objects and substituted with fake objects that imitate the behavior of the real deal. Mocking is done so that a test can focus on the code being tested and not on the behavior or state of external dependencies. For example, if you have a data repository class that runs business logic and then saves information to a database, you want your unit test to focus on the business logic and not on the database. Mocking the “save” calls to your database ensures your tests run quickly and do not depend on the availability or state of your database.

When you’re ready to make sure the “save” calls are working, then you’re moving on to integration testing. Unit tests should not cross system boundaries, but integration tests are allowed to cross boundaries and make sure everything works together (your code, your database, your web services, IIS, etc.).

Wikipedia does a good job explaining additional reasons for using mock objects, such as working with objects that have non-deterministic results (like DateTime.Now), have states that are difficult to reproduce (like testing how your code behaves if a web service is unavailable), or have operations that are slow to test (like using a test database with setup/teardown scripts).

[NEW] Q: How does JustMock help with mocking?
Mock objects can be created and maintained manually, but this is time consuming and ultimately unproductive approach. A tool like JustMock allows you to focus on writing tests and forget about the mocking details. Mock objects are created automatically in memory when the tests run based on your simple configuration in the unit test. There are no “physical” mock objects that have to be maintained as your project changes.

JustMock goes even further and does not force you to distinguish between “mocks,” “fakes,” and “stubs.” You have a single API for mocking and JustMock handles the rest.

[NEW] Q: Why not mock everything with JustMock?
It is possible to overuse mocking. The goal of mocking is to isolate the code you want to test from other components in the system. There are two rules of thumb that should be followed to ensure mocking is done properly:

  1. Only test (and thus mock) the external behavior of any object
    Mocking the internal behavior of objects can make unit tests brittle and hard to maintain during refactoring.
  2. Mock all objects and external dependencies that are not being actively tested
    Mocking all objects obviously produces meaningless test results. Use mocking to keep unit tests focused the behavior of the method you’re testing. Nothing more. Nothing less.

Q: Is JustMock included in the Telerik Premium Collection?
No, JustMock will not be part of the Premium Collection. Instead, it is one of the new tools included in the recently introduced Ultimate Collection (along with WebUI Test Studio Developer Edition).

Q: Is JustMock available as a standalone product?
Not today, but it will be when it is officially released. Final pricing is not yet set, but you can expect it to be very price competitive with other commercial mocking tools. We currently expect pricing to fall somewhere between $299 and $399.

Q: Is JustMock free and open source?
The beta (which is available now) is free, but the final product will be commercial. JustMock is not an open source product, nor does it derive from an open source library. It’s built from the ground-up by Telerik.

Q: When will JustMock be released?
JustMock is currently in beta, and it will be officially released with our Q2 2009 release (slated for July). The beta is free, though, so download it today and take it for a spin.

Q: How is JustMock different from existing mocking frameworks?
We are well aware that there are many great mocking frameworks available for .NET developers, both open source and commercial. In our experience as a software development company, though, none are perfect and we see room to fill in some gaps and create a better competitive environment around mocking tools. Among the many features in the JustMock beta, here are areas we aim to provide unique value:

  • Performance – We provide both “simple” (aka, Proxy) and Profiler API-based (aka, Elevated) approaches for mocking so that you can use the technique best suited for your code. The simple method is comparable to many open source frameworks and is fast and easy to setup/deploy. The Profiler-based approach is what commercial mocking frameworks tend to employ, and it is more powerful, capable of mocking just about everything. Our hybrid approach is unique and gives you the best of both worlds.
  • Simplicity – We know that mocking is still new for many of you, so we are providing simple to use strongly-typed, fluid API that employs the AAA Patern- Arrange/Act/Assert. There is one simple way to use JustMock, based on the latest framework features, so no “legacy” concepts pollute the API.
  • Integration – Of course, one of the advantages of a Telerik mocking tool is that it’s part of the legendary Telerik stack that includes great support. We plan to really build on the integration story with other tools like JustCode in future releases.

Q: Why does JustMock use the Arrange/Act/Assert pattern? What about Record/Replay?
The Arrange/Act/Assert pattern is a more logical and clean approach to unit testing than the legacy Record/Replay. With AAA, you group your testing actions by function, making it clear what part of your test is involved in setup versus verification. The pattern can be applied to all unit testing, but it is especially useful when mocking is involved.

Record/Replay is an older pattern and it is similar to using GOTO statements in your unit tests. This makes the pattern more difficult to follow and clearly less ideal from a programming perspective. Therefore, JustMock is focused on supporting the AAA pattern.

Q: Is there any JustMock documentation?
Of course! Even in the beta release there is documentation, though most of it exists as “learn by example.” When you download the beta, you’ll find a demo project that shows you through code all of the various ways you can use JustMock. For the final release, we’ll be updating and providing complete product documentation.

You can (and should) also follow Team Lead Mehfuz Hossain’s blog, where he is posting regularly on JustMock.

Looking ahead to Q2 2010, Part 1

futureExit I know, I know. You’ve just started looking at the Q1 service packs, you’re still trying to digest all of last week’s announcements, and now we’re already talking about Q2?! Time marches on, and Q2, believe or not, will be here in less than three months. With three major releases every year, things move fast at Telerik. What can you expect to find in the next major release?

Fortunately, there are road maps for that, and many of the Developer Tools road maps are now available on Telerik.com. Here are some direct links and highlights from the Q2 2010 road maps:

  • RadControls for ASP.NET AJAX
    • [NEW CONTROL] TagCloud
    • [FEATURE] RadAsyncUpload – New Flash/Silverlight upload modes
    • [FEATURE] RadEditor – Option to have DIV content area instead of IFRAME
    • [FEATURE] RadGrid – New GridDragDropColumn
    • [FEATURE] RadListView – Client template support
    • [FEATURE] RadScheduler – Reminders + time zone support
    • [MAJOR UPDATE] RadRotator – Load-on-demand support + carousel mode
    • SharePoint 2010 web parts for Grid and Editor
  • Telerik Extensions for ASP.NET MVC
    • [NEW CONTROL] Combobox
    • [NEW CONTROL] Editor
    • [NEW CONTROL] Window
    • [FEATURE] Grid – Hierarchy, edit form, and resizable column support
  • RadControls for WinForms
    • [MAJOR UPDATE] RadGridView – new data engine + many new UI features
    • [NEW CONTROL] Desktop Alert
    • [NEW CONTROL] TabView
    • [FEATURE] RadScheduler – Reminders, Time Zones, + many new features
    • [FEATURE] RibbonBar – New Office 2010 UX
    • 30% performance improvement in TPF thanks to new optimizations and caching

Be sure to click on the links to examine the full road maps in detail. There is obviously much more happening in Q2 than I highlighted here, so read the road maps if you want all of the nitty-gritty.

There are also clearly some “missing” road maps today. They will be published towards the end of this week and early next. Stay tuned for part two of “looking ahead” for the links and highlights for XAML, ORM, Reporting, and JustCode. Until then, set your alarms and start dreaming of the ways you can use the new controls and features when they ship in July.

Monday, April 19, 2010

Q1 2010 Service Packs Available

telerikDrill While April has become a big month for more new products and announcements from Telerik, the bits released about a month ago as part of Q1 2010 are already receiving the first round of service packs. Of course, with the official VS 2010, .NET 4, and Silverlight 4 releases last week, SP1 is a perfect time for Telerik to ship official support for Microsoft’s latest platforms. And that’s definitely part of what you find in Q1 2010 SP1.

Available now are service packs for (with selected highlights):

  • RadControls for ASP.NET AJAX (2010.1.415)
    • VS 2010/.NET RTM support
    • [RadCaptcha] Audio captchas now embedded in page!
    • [RadEditor] Improved Paste from Word support
    • [RadRotator] New cross fade animation
  • Telerik Extensions for ASP.NET MVC (2010.1.416)
    • A few breaking changes: Grid, Treeview
    • OSS NOTE: Remember, only the “commercial” license gets updated for SPs and hotfixes. The OSS branch is updated for major releases.
  • RadControls for WinForms (2010.1.409)
    • VS 2010/.NET 4 RTM support
    • Client profile support
    • New Office 2010 & Breeze Extended themes
    • Major improvements to new Visual Style Builder
  • JustCode (2010.1.415)
    • VS 2010/.NET 4 RTM support
    • Significantly improved/enhanced typing assistance
    • Additional memory/performance optimizations

Service packs for the remaining developer tools- Telerik Reporting, OpenAccess ORM, and the RadControls for Silverlight and WPF- will be available very soon, too. These SPs will all focus on delivering official support for VS 2010 and .NET 4, in addition to polishing some of the features introduced in Q1 2010. For example:

Stay tuned for the last of the service packs this week and get started now downloading the four SP1s available today!

Another Webinar Week starts Tuesday, License giveaways

webcastPeople As many of you know, at Telerik we like to run “Webinar Weeks” around the time of a release to help you quickly get up-to-speed with all of the new features, controls, and (increasingly) products that are part of a Quintessential release. Most recently, we hosted the Q1 2010 Webinar Week and hundreds of you joined us live to learn. This week, we are hosting another new Webinar Week!

With all of last week’s announcements, April is almost as big- if not equally big- as our “official” Q1 Release Week. That means you’ve probably got tons of questions, and it definitely means we’ve got tons to share. A Webinar Week is the perfect solution.

Everything starts on Tuesday, April 20th at 11 AM Eastern with lots of chances to win free software:

  1. Introduction to JustMock, Tuesday, April 20th
    Co-hosted by Josh Holt and Lead Developer Mehfuz Hossain. A great introduction to mocking and how JustMock makes it easy. Everyone attending live will get a FREE JustMock license.
  2. Introduction to TeamPulse, Wednesday, April 21st
    Hosted by Joel Semeniuk, EVP Team Productivity Tools. Come learn more about what TeamPulse does for teams and how it creates a planning sandbox for TFS. Everyone attending live will get a FREE TeamPulse license.
  3. Introduction to WebUI Test Studio QA Edition, Thursday, April 22nd
    Hosted by Chris Eyhorn, EVP Testing Tools. An introduction to the brand new QA edition of WebUI Test Studio. One Test Studio QA Edition license ($2500 value) will be raffled to live attendees.
  4. Introduction to WebUI Test Studio Developer Edition, Friday, April 23rd
    Also hosted by Chris Eyhorn. Learn what’s new in the developer-oriented version of WebUI Test Studio. One Test Studio Dev Edition license ($1500 value) will be raffled to live attendees.

Clearly, you don’t want to miss these webinars. Each starts at 11 AM Eastern, and, of course, we’ll be recording for those that can’t attend live. Register for each using the links above and we’ll see you on Tuesday!

Friday, April 16, 2010

In Case You Missed It, Part VIII

incaseyoumissed It has been more than a year since I last provided an update in the ICYMI series, but now more than ever it’s time to make sure you haven’t missed some important news. As a reminder, ICYMI posts are designed to highlight some of the important posts that are flying by on the very active Telerik Blogs that you might have missed. With all of the recent Telerik and Microsoft announcements, there are more than a few great posts to share that you shouldn’t miss, but here’s the most important you definitely must read:

New products. New releases. It’s all great Telerik reading. With an average of 50 posts per month over the last 12 months, the Telerik Blogs are a great resource for what’s new with Telerik products. Subscribe today and don’t miss the next round of important news!

New divisions at Telerik, DevConnections wrap-up

vs2010-yellow-ninja In case you weren’t watching the Telerik Blogs, or the Telerik Twitter account, or the Telerik Facebook Page, we were in Las Vegas this week celebrating the launch of Visual Studio 2010, Silverlight 4, and…the introduction of two new divisions at Telerik! A busy week to say the least. We also re-launched Telerik.com and launched a beta of the new Telerik TV (more details soon).

On Monday, we introduced two new divisions at Telerik:

  • Team Productivity Tools
  • Automated Testing Tools

Team Productivity Tools
This brand new division has been created to focus on building tools that help teams better collaborate and work efficiently through the entire application lifecycle. At Telerik, we recognize that building great software doesn’t start with writing code, it starts with capturing ideas, planning requirements, and managing the software development process. As a software development company ourselves, we see gaps in the tools available today for accomplishing these tasks and we aim to fill those gaps with the tools coming out of this division. This division is based in Winnipeg, Canada and headed by ALM and TFS expert (and Microsoft RD) Joel Semeniuk.

We introduced the beta of the first new tool out of this division this week:

  1. TeamPulse (licensing TBA)
    TeamPulse is best described as a planning sandbox for TFS. It helps teams quickly capture project requirements, define application personas, and plan the work that must be done to build software. It’s an innovative tool built on Silverlight 4 that we think will be essential to any TFS shop.

Automated Testing Tools
This division is the result of a merger with ArtOfTest, the company Telerik has been partnered with for the last year to provide WebUI Test Studio. Now that we can operate as one company, we can more effectively combine our efforts and bring new solutions to the automated testing and QA world. This new division establishes a Telerik office in Austin, Texas (my neighbor), and it is headed by Christopher Eyhorn and Faris Sweis.

At the same time, we’re introducing two new versions of WebUI Test Studio:

  1. WebUI Test Studio QA Edition ($2499)
    Aimed at the non-technical QA, this is a standalone version of WebUI Test Studio that does not require Visual Studio. It’s brand new and super easy to use. It sports TFS integration to ensure dev teams can easily collaborate with QA teams.
  2. WebUI Test Studio Developer Edition ($1499)
    This is the “replacement” for the original WebUI Test Studio edition. It’s aimed at developers and it is a Visual Studio plug-in that provides all of the features found in the QA edition.

Clearly, with news this big, it dominated our time at DevConnections and demanded that we do something special. Something like our in-your-face green .NET Ninja shirts that over 200 people wore to the Silverlight 4 keynote, our Telerik VIP Lounge party bracelets, our green Telerik guitars given away by Carl Franklin and his band (that we flew to Vegas to perform), and no less than 4 unique t-shirt designs given away at the booth! It was a big week and everyone that engaged with Telerik went home a winner.

Stay tuned for much more news about our new products, our new divisions, and new things happening across all of the existing areas where Telerik is working hard! Also, be sure to visit our Facebook page for more photos from DevConnections and new videos coming soon.

Wednesday, March 31, 2010

Louisiana DNUG Road Trip wrap-up

telerik-road-trip Last week, I spent three days crisscrossing Louisiana on a .NET User Group Road Trip. I made stops in New Orleans, Baton Rouge, and Lafayette, and I had a great time interacting with the LA .NET community (that’s LA as in the state, not the city). We packed the house and talked about what’s new in Silverlight 4 and ASP.NET 4. It was a lot of information to cover, but we managed to get through it all, and hopefully there are 100+ developers in Louisiana more ready for .NET 4 this week than there were last week. Thanks to everyone that came out for the events!

The slides from my Louisiana talks are available below, but most of the demos I used were borrowed from other great minds in the .NET community. As promised, here some some direct links to the original demo source:

Of course, one final reminder, make sure you’re following/subscribing to these people in the Microsoft community to keep-up with all of the Silverlight 4 news:

What’s New in Silverlight 4 and ASP.NET 4
[Slides (PDF)]

Monday, March 29, 2010

Ask the Experts answers (updated)

peabody-telerik This past Friday, Telerik hosted a new “Ask the Experts” webinar where a panel of Telerik experts, including Evangelists, Developer Support Specialists, and Telerik MVPs, answered your questions about the Q1 2010 release. It was a successful experiment, and many questions and answers were exchanged. A huge thanks to those of you that attended and brought questions, and of course, join me in thanking our Telerik MVP experts for their time.

The video recording of this event will be posted to Telerik TV soon, but in the mean time we are providing a complete recap of the major questions with their answers! We hope you enjoy this resource and join us for more “Ask the Experts” events in the future.

Continue reading Ask the Experts Answers

General Questions

  1. Are there any limitations or issues in using any of the new Q1 2010 products in VS 2005 such as ASP.NET AJAX, Open Access or Telerik Reporting? OpenAccess ORM, Telerik Reporting, and the RadControls for ASP.NET AJAX all work in VS 2005, VS 2008, and VS 2010. Obviously, some features that are specific to new versions of the framework, such as LINQ, will not be available in 2.0 projects, but otherwise, these are supported IDEs. More information can be found on the “System Requirements” page for each product.
  2. You said Telerik Q1 2010 supports the .NET 4.0 framework. Our project is still on 3.5 and we don’t plan to upgrade to 4.0 anytime soon. Can we still upgrade to Q1 2010? The Q1 2010 release did indeed add support for the .NET 4.0 framework but that does not mean that it exclusively targets 4.0. As with our previous releases we still provide support for the .NET 2.0 and .NET 3.5 frameworks. These are offered via different assemblies, which are located in your local installation folder (usually C:\Program Files\Telerik\RadControls for ASP.NET AJAX Q1 2010) under Bin (2.0) and Bin35 (3.5). If you are currently using .NET 3.5 and are looking to upgrade you will have no issues with installing and using the Q1 2010 release.
  3. Does the new CDN support SSL? The new CDN does indeed support SSL. When you are using a SLL connection the RadScriptManager and RadStyleSheetManager controls will fall back to Amazon's S3 service. In this case the following hosts are used: Scripts- https://telerik-aspnet-scripts.s3.amazonaws.com Skins - https://telerik-aspnet-skins.s3.amazonaws.com
  4. Can you share the future direction of your UI controls, particularly the AJAX and Silverlight controls. Any certain things you will focus on or add? Thanks. The future of our UI controls for both Silverlight is actually heavily influenced by you, our developer community. With the launch of PITS, we have provided a nice and easy way for users to submit requests for our controls and vote upon them. If you see a particular feature that you would like to be included either in an existing control or perhaps a brand new one, vote on it! Through these submissions you can directly influence the evolution of our RadControls and our other products.

ASP.NET AJAX/MVC Questions

  1. Any chance of seeing the Outlook Bar from Silverlight in the ASP.NET suite? As always, Telerik’s bases it plans on feedback from customers. If you’d like to see this tool in a future release, be sure to submit a Feature Request in the Telerik Public Issue Tracking System (and vote on other existing requests you want to see).
  2. Is there any plan to add more validation controls for ASP.NET? Looking at our release history you can see that we always try to add validation to our controls. If you have not tried the RadInputManager, you will discover that it is a very powerful control that makes it easy to apply basic validation to many textboxes on a page. We are also researching the option to add direct support for Data Annotations to the RadControls to make validation configuration easier. Don’t forget to log your request in PITS so that your votes for new validation controls can be heard!
  3. ASP/AJAX question: Is there a way to create a template for exporting RadGrids to Excel, PDF, etc? I've used the built-in export, but the format doesn't look like the Grid. I would like to be able to pass the RadGrid style/look to the different export options. Although there is no exportation template for the RadGrid we do have quite a few events that you can hook into in order to get the exported RadGrid to look exactly the way you want. You might want to have an exact duplicate (in terms of style etc.) of the RadGrid you have on your page, or you might want something different - either scenario can be achieved by using these events. The following links should be able to provide details about specific exportations, and which events you can subscribe to: Exportation Overview - http://www.telerik.com/help/aspnet-ajax/grdexport.html ExcelML Exportation - http://www.telerik.com/help/aspnet-ajax/grid-excelml-export.html PDF Exportation - http://www.telerik.com/help/aspnet-ajax/grid-pdf-export.html

    There are also other formats which you can export to (see the Overview article) and each one has a specific documentation article discussing what you can do in order to achieve the style you are looking for.

  4. Are AJAX controls compatible with mobile browsers? Will there ever be a product line that focuses on mobile? Currently our RadControls for ASP.NET Ajax only officially support the browsers found on our Browsers Support page: http://www.telerik.com/products/aspnet-ajax/resources/browser-support.aspx

    Although it is not an Ajax product we can also note that the browser for Windows Phone 7 does seem to support most of our RadControls for Silverlight as some preliminary tests have shown: http://blogs.telerik.com/blogs/posts/10-03-18/mix10_is_in_history_windows_phone_7_is_here.aspx

  5. RadAjax Grid: I'm attempting to use a Count Aggregate on a Boolean field. I found on the forums an example - but how can I then use that same functionality - for a field that gets grouped? So, if the user Groups by a column named Flight, how can I get the group footer to count the Skins checkbox - broken out by flight? When it comes to having a Count Aggregate being displayed in the footer of a grouped item there are two approaches you can take. The first would be to declaratively set the text and aggregate which appears in the footer. An example of this, along with further details on the functionality available for a group footer, can be found in this documentation article: http://www.telerik.com/help/aspnet-ajax/gridgroupfooters.html

    Another way of manipulating what is displayed in the group footer is the code-behind approach in which you subscribe to the OnItemDataBound event and customize the footer this way. Although this article goes over the approach for a GridGroupHeaderItem you can actually substitute this for a GridGroupFooterItem and follow the same approach. http://www.telerik.com/help/aspnet-ajax/grdcustomizegridgroupheaderitem.html

    As seen in the above article there is a lot of manipulation that can be done via this approach. If you are looking to do something outside of just a Count Aggregate the later approach is the recommended implementation.

  6. How about some more MVC webinars and examples? We will continue to expand our MVC resources in 2010. Make sure you don’t miss the recently posted videos to Telerik TV showing you how to work with the Telerik MVC Grid. You will learn how to setup an MVC project with the Telerik Extensions, how to configure data binding, and how to setup inline data editing.

WinForms Questions

  1. Can we use the Telerik themes as a basis for new themes in the new Visual Style Builder for WinForms? The Telerik themes have not yet been converted to the new theme repository format. We plan on updating them all for the Q2 release. You will then be able to use them as the basis for new themes.

Silverlight/WPF Questions

  1. How similar can the SL GridView control behave like Excel? You can make the GridView perform similar to Excel, but keep in mind that a GridView is not designed to be a complete Spreadsheet replacement. There is a CurrentCellChanged event, in which you set e.NewCell.BeginEdit(). With this set, every time the cell changes, it instantly enters edit mode. If you subscribe to RowEditEnded, you either save changes or add new records based on EditOperationType. The end result is that every change you make to a row triggers a save in the database. That said, this is still not spreadsheet and you can’t do things like cell referencing, multi-cell selection (coming Q1 SP1), or formulas in the cells from the client-side.
  2. How can I fill the DataCarouselPanel in WPF with data from WCF services ? We have a help article for that addresses this scenario: http://www.telerik.com/help/wpf/carousel-data-binding.html
  3. Can you post the source for that MVVM sample? The source for the MVVM demo will be made available on Ross Wozniak’s blog. You can subscribe to his blog and catch the update by visiting the Telerik.com Blogs.
  4. Silverlight Question: Where can I find the template/code for textbox with search/magnifier icon shown on the Telerik Silverlight demo apps? Thanks. In this specific case, the code is part of the Telerik QSF, and only available as source if you have a subscription license. An easier solution is to use a tool like Silverlight Spy, which lets you dive into styles and XAML by “picking” elements on the screen. With this tool, you can quickly examine the Telerik QSF and see the template being applied to the TextBox.
  5. What is the best way to debug performance issues in Silverlight? I’m having a problem where my RadComboBoxes are taking a long time to expand (up to 5 seconds with only 48 items). I am not able to recreate the problem in a basic demo application. Starting with Silverlight 4, you can now use the Visual Studio 2010 profilers to profile Silverlight applications. You should be able to use these tools to get started analyzing your application’s performance. Details regarding VS2010 profiling are available on the MSDN Blogs.
  6. Will Telerik create a MVVM framework similar (but better) than Prism and Silverlight FX? Telerik is not currently looking to build another MVVM framework. There are great options available for free today, such as Prism, SilverlightFX, and MVVM Light. We also offer tools like RadCommandManager to make it easier to work with MVVM-like concepts.

OpenAccess ORM Questions

  1. I added a new model to OpenAccess and I see the article and video where you show me how to obtain data from database. How can I use the same model to update and insert data to database? Josh Holt will be posting an example shortly that shows insert/update/delete using OpenAccess in windows and web scenarios using the new context object. Follow his blog on the Telerik Blogs to learn more.
  2. When will OpenAccess support WCF RIA Services using POCO? OpenAccess ORM will offer support for WCF RIA Services in an upcoming release. As for POCO (Plain Old CLR Objects), we are evaluating the reasons why/when such support should be added. From our perspective developing Data Transporter Objects and Self-Tracking Entities will cover all the scenarios were POCOs would be used, with relatively small impact to performance, so you will see these first. If POCO support is important to your project, be sure to vote for the feature in PITS.
  3. Does the visual designer replace the wizard-based "reverse engineer" feature? The answer is yes, but it is a bit complicated at the moment. In Q1, we still don’t have a translation tool between the two formats (pre-Q1 OpenAccess and Q1 OpenAccess). Our advice is to use the new designer for new projects only until we provide support for upgrading complex projects based on previous versions of OpenAccess. In fact, by Q2, the designer will be a “roundtrip” editor (forward and reverse mapping), so you will have a way to alter the database as well.
  4. Can you add validation attributes? You will be able in the Q2 release. We are talking Data.Annotations attributes, of course.
  5. Are we basically throwing out the old way of OpenAccessing data? Do we still need to create scopes, and dispose of them...etc? The answer is a bit complex. We prefer to say that we are changing the designer experience and the API usage-pattern to better fit the .NET ORM world, where developers are familiar with tools like LinqToSQL and Entity Framework. The underlying OpenAccess “engine” remains the same and continues to provide the core support for features like data caching, object tracking, etc.
  6. Will there be a way to create a Domain Model from an existing OpenAccess project in the future? Definitely. We regard this as a “must” for the new OpenAccess designer, and we will be providing a tool to make this type of “migration” easy.
  7. So with the Data Context and with no scopes, are all transactions persisted instantly instead of batched till a commit? No you still must call context.SaveChanges() to persist changes to the database. The DataContext provides a more convenient way for working with the OpenAccess API, managing scopes for you internally.
  8. I saw you were able to get data from the database without using an ObjectScope. Is that replaced by the new Data Context? Yes, however, in the Q1 2010 release, only when doing reverse mapping. Forward mapping support for the new Data Context and designer will be added in an upcoming release.
JustCode Questions
  1. Will JustCode display the Fonts & Colors when printing? Currently, fonts and colors will not be printed. This is a limit of Visual Studio we are actively researching to work around. We will try to provide printing support for custom fonts and colors in an upcoming release.
  2. I just moved over from ReSharper. If I forget to include the using library statement or don’t know which library is needed for a type, will JustCode give me a hint to place the using statement in the class? Once you have typed the type name, put the cursor on the statement, hit Alt+Enter, and JustCode will present an option to add the missing reference. Review all JustCode keyboard shortcuts in the online docs.
  3. I noticed that there was only one Code Template in the JustCode menu for VB.Net. Is it possible to add more templates? Yes, it’s possible to create more templates, however VB templates cannot be context sensitive in the current version. We will continue to improve VB support for templates in an upcoming release.
  4. How changeable are the hotkeys for the JustCode menus? I’m programming on a MacBook without an end key (technically it's there, but its a 2 key combo) JustCode shortcuts can be completely changed from VS -> Tools -> Options –> Keyboard
  5. How do you configure JustCode Color Identifiers? VS -> Tools ->Options->Fonts and Colors. When JustCode is installed you will see entries in the list that start with “JustCode” for adjusting fonts and colors.
  6. Will there be a unit test runner built-in to JustCode? Yes! This is a feature we are working hard to provide in the Q2 2010 release.

Telerik Reporting

  1. I have 3 reports I would like to add to a report book. Individually they have SqlDataSources with parameters which I pass through code. I want to add them all to a single report. How do I pass the parameters? Robert Shoemate will provide example code and a complete explanation for handling this scenario on his blog this week. Follow his blog on the Telerik.com Blogs to catch the updates. [UPDATE: The blog post has been posted.]

Wednesday, March 17, 2010

Q1 Webinar Week wrap-up

Let me take a quick break from the MIX action to deliver a post I tried to pull together before jumping on the plane to Vegas. Many of you joined us last week for the big Telerik Q1 2010 release and related Release Week Webinars. These daily webinars are your way to “jumpstart” your knowledge of “what’s new” in Q1 and our hope is that they make it easier for you to get started with the new bits.

The live webinars are great, especially with the extended Q & A, but we know not everyone can attend live. That’s why everything is recorded and on Telerik TV! Here are the direct links to all 4 Q1 2010 release week webinar recordings:

Enjoy the recordings and enjoy the Q1 release. More Q1 videos are hitting Telerik TV daily, so stay tuned for more helpful content.

Tuesday, March 16, 2010

LIVE @ MIXnote, Day Two

msft-jquery

One day is in the history books here at MIX10, but Day Two is just about to get kicked-off with another keynote here in the Mandalay Bay Ballroom. I’m once again settled in to my seat (with more battery than yesterday) and I will be compiling your real-time “cliff notes” of the keynote news and announcements. It’s not live blogging- there’s a live stream feed that makes that pointless- but if you just want the highlights, this is your post.

After yesterday’s YoYo Champ warm-up act, today Microsoft is giving the stage to one of their designers who is doing a digital painting on what looks like a Wacom touch-screen monitor. The real stuff starts soon…

9:05 AM: Dean Hachamovitch, head of Internet Explorer, taking stage as opening speaker. Today’s keynote is going to start by being a standards-based (HTML/Script/CSS) talk.

  • “Chakra” is the new IE9 JavaScript engine- will compile and run JS against multi-core hardware
  • IE9 passes nearly 600 CSS3 selector tests, Passes 55/100 ACID3 test checks (will continue to improve)
  • Microsoft submit 100+ test cases to W3C to try to improve consistent rendering between browsers
  • HTML5 runs on GPU in IE9 (built on DirectX) – significantly more performant than FF/Chrome when handling complex visuals. Rendering engine built from the ground-up to run on graphics hardware.

9:27 AM: Key phrase from the performance section of talk: “Same markup. Same script. Just working across browsers.”

  • IE9 Platform Preview available today. Lightweight shell around IE9 engine (“Trident”) with demos.
  • Platform Preview will be updated every 8 weeks.
  • IE9 supports hardware accelerated HTML5 video – very high performance, even with HD

9:35 AM: Microsoft’s keypharse for IE9: Same markup, Better performance.

9:36 AM: ScottGu taking stage to transition talk in to talking about server tools and platforms. Getting started by reviewing what’s coming in VS2010. Reviewing what’s new in ASP.NET 4, MVC, etc. Old news for most people, I think.

hanselman-mix

9:45 AM: We’re in the middle of some Hanselman demos, showing MVC 2, VS2010. Again, nothing new if you’ve been following along with MVC/VS2010 beta/RC.

  • Microsoft is going to start contributing code to jQuery + testing and QA resources
  • 1st contribution: a new jQuery client-side templating engine (co-created with jQuery)

10:00 AM: ScottGu is reviewing how Microsoft has made it easier to get started with .NET (Spark programs, WPI, etc.)

10:05 AM: ScottGu is done with his part of the keynote. Turning over to Doug Purdy to talk about “Services Powering Experiences.” Sounds more like a breakout session than a keynote topic…

doug-purdy-mix

  • Netflix Catalog API has been launched in OData
  • iPhone support for OData announced today (people are bored in the keynote…)
  • OData released under Apache open source license (another mild audience reaction)
  • Most interesting part of this segment: new web-based tool, codenamed “Houston,” for developing/managing SQL Azure databases!

10:37 AM: My first instinct was right. The last 30 minutes have felt more like a developer breakout session than a keynote. Very data focused. Surprised this topic has received so much stage time at MIX. Almost think they ran-out of “keynote topics” and used this as filler.

10:42 AM: Bill Buxton taking stage to close out keynote. Refreshing return to keynote-style content and focus on design. Unfortunately, this part of the keynote is probably not going to be good for extracting “highlights.” Skip to this time in the on-demand recording of keynote for Bill’s content.

bill-buxton-mix

  • “Project Gustav” is the painting program used at the opening of the keynote. Being built by Microsoft Research. Hardware is actually prototype hardware from Wacom- some mashup of multiple components that has high quality stylus and 10-point multi-touch.

And things are wrapping-up now. Great opening and closing in today’s keynote. Middle…eh. Now on to another full day of sessions and Telerik booth/kiosk work. More updates as the week rolls on, both here on Telerik Watch and on Twitter.

Monday, March 15, 2010

LIVE from MIX10 (update)

mix-yoyo Welcome Telerik Watch readers to another LIVE update from a major Microsoft event! I’m settling in to my seat at the MIX10 opening-day keynote, where there are lots of exciting announcements expected. In the past, I’ve typed feverishly to bring you play-by-play updates from keynotes like this, but now that MIX is streaming the keynote live, that seems a bit redundant. So, instead, I’ll be “live blogging” the highlights. All the big news that’s worth remembering post-keynote.

To get things started, this year’s keynote “warm-up act” is a 16-year old Seattle-native Yo-Yo Champion (Sterling Quinn). If you thought (like me) that being able to “walk the dog” with a Yo-Yo was skill, you don’t want to watch this kid.

More big news as it happens…

9:11 AM: Things are getting started with some Killers playing after a quick Bing Maps show-off video. Room is pretty much packed now. Not sure how many people…I’d guess somewhere between 2,000 to 3,000. ScottGu taking the stage…

Scott is jumping right-in to content. Very different from last year’s long “abstract” design talk by Bill Buxton. Scott said he is going to focus on Silverlight today- on the RIA, media, and phone.

Highlights:

  • Silverlight now on 60% of PCs worldwide (according to ScottGu)
  • Microsoft is “open sourcing” the Vancouver Olympics media player + rough cut editor
  • SL4 will support full-screen in a single monitor (“first web technology to enable that”)
  • Adding new “Pivot” feature to Silverlight (very tepid response from audience – light clapping)

9:20 AM: ScottGu seems a bit off of his game. Lots of “uhs.” Almost as if he’s a little uncomfortable or unprepared.

  • Blend 4 will be a free upgrade for Blend 3 (audience much happier about this than Pivot)

9:26 AM: eBay demoing their new Quick Listing tool that is built on SL4. Cool app. Takes advantage of SL4 custom out-of-browser chrome. App built by Cynergy. Audience energy is low right now. Very quiet. I think people must be waiting for a big “surprise” to wake up…

  • Silverlight 4 RC now available (with VS 2010 tools, Blend 4, etc)
  • Silverlight 4 RTW available next month

9:35 AM: Scott came out and just shut-down the SL4 talk. Casually announced the SL4 news and pushed us in to the Windows Phone 7 part of the keynote. Audience picked-up. This is clearly what everyone is here to see. Demos now by Joe B.

10:00 AM: Joe is done with demos. Rest of keynote will be dedicated to talking about how you build apps for Windows Phone 7. ScottGu is back on.

  • Silverlight on Windows Phone 7 is same Silverlight as PC (“One Silverlight”)
  • VS2010 has integrated WinPho7 templates + WYSIWYG designer + built-in emulator
  • Phone emulator is full VM with full integration with VS debugger

10:10 AM: ScottGu built and deployed a simple Twitter app for WinPhone. Biggest applause of the day. Not “thunderous,” but definitely best of the day so far. Scott is back in his element.

  • VS2010 & Blend will be FREE for phone development

10:26 AM: Scott Stanfield showing-off Netflix Instant Watch on WinPhone. For me, my battery is near dead (forgot to charge last night). More details and highlights soon…

…And I’m back online with battery. Fortunately, there wasn’t much (any?) news after my battery death in the Day One keynote. Just a lot of demos showing apps running on WinPhone 7. Most important news in the keynote (highlighted in red above) came early. And sadly, no surprise dev unit Win7 phones for the MIX crowd…which I guess makes sense since the current unit has yet to pass through the FCC.

One to Day Two.