in

Matt’s Blog

  • Windows 7 RC Training Kit for Developers

    If you are a developer looking to get a headstart on Windows 7 development you should consider downloading the Windows 7 RC Training Kit for Developers.   The Training Kit includes hands on labs, presentations, and demos demonstrating key windows features such as:

    • Taskbar
    • Libraries
    • Multi Touch
    • Sensors and Location
    • Ribbon
    • Trigger Start Services,
    • Instrumentation and ETW
    • Application Compatability

    To fully utilize the the training resources you need to have:

    Other resources you may also find helpful learning about Windows 7 development include:

    Posted Jun 29 2009, 10:52 AM by mbohn with no comments
    Filed under:
  • Windows 7 Enhanced Default Location Provider

    If you are wanting to experiment with writing code for Windows 7 that leverages the Sensor and Location API, you may be interested in the Enhanced Default Location Provider (eDLP) available from Microsoft on MSDN.   The enhanced default location provider is a WPF application built on top of the Windows 7 Beta SDK and the Windows 7 Sensor and Location Interop Library.

    To use the tool you will need the following prerequisites: 

    1. .NET 3.5 SP1 
    2. Visual Studio 2008
    3. Download and install the Windows 7 Beta SDK -  This is an ISO DVD image.

    You can also find more information on each of these at this link http://code.msdn.microsoft.com/SensorsAndLocation.

    To run the application you need to open the solution for the Windows 7 Sensor and Location Sample Library and build it.

    The next step is to open the solution for the Enhanced Default Location Provider add a reference to the Windows 7 Sensor and Location Interop Sample Library DLL and build the project.

    To use the the application you will need to run the WPF application as an administrator.

     

    To change your location right click on the map.   Clicking the "Save Address" button will save the address as the Windows default location.

     

    Posted Jun 16 2009, 01:41 PM by mbohn with 1 comment(s)
    Filed under:
  • Windows 7 - Accessing Sensors in .NET and C# Example

    In my previous post Setting up the Windows 7 SDK Beta Virtual Light Sensor, I walked through the setup of the Windows 7 SDK Beta, the Virtual Light Sensor,  Windows 7 Sensor and Location Interop Sample Library, and the Sample MSDN Reader application.  

    The Windows 7 SDK Beta provides APIs for interacting with sensors using native code.   If you are a .NET developer the Windows 7 Sensor and Location Interop Sample Library demonstrates how you can access Sensors using managed code.

    In this post, I will walk through the code necessary to retrieve a list of sensors and get data from the Virtual light sensor.  If you want to follow along I would recommend performing the setup outlined in Setting up the Windows 7 SDK Beta Virtual Light Sensor.   This example borrows from the MSDN Reader Demo, the main difference is this example is highly simplified.  It primarily focuses on retrieving sensors and getting data from a sensor.

    The code in this post requires the following prerequisites:

    1. .NET 3.5 SP1 
    2. Visual Studio 2008
    3. Download and install the Windows 7 Beta SDK -  This is an ISO DVD image.
    4. Download and un-zip the Windows 7 Sensor and Location Interop Sample Library.

    The first step you need to perform is building the Interop Sample library.   Open the project file located at UnzipLocation\Windows7IntegrationLibrary_Sensor_and_Location\ Windows7.SensorAndLocation\Windows7.SensorAndLocation.csproj.  Where UnzipLocation is the folder where you unzipped the library.

    Once the project is open, build it and the Windows7.SensorAndLocation.dll should be output to UnzipLocation\Windows7IntegrationLibrary_Sensor_and_Location\Windows7.SensorAndLocation\bin\.

    Now you are ready to create a new .NET project.   Create a new C# Windows Form Application called CSharpLightSensorExample.   The next step is to add a reference to the interop library (Windows7.SensorAndLocation.dll). 

    Now add two labels, a combo box, and a button to the form so that your form looks like this:

    Name the combo box "comboBoxSensors", the button "btnGetDataReport", and the bottom label "labelDataReport".

    Open Form1.cs and add the following using statements to make the Sensor objects available:

    The next step is to initialize the combo box with a list of available sensors.  To do this double click the form to add FormLoad event and add the following code so the event looks like this:

    Note how SensorManager.GetAllSensors() retrieves the list of available sensors.  If you build and run the project now, you should see a list of installed sensors loaded into the combo box.

    The next step is to retrieve a data report from a selected light sensor.  To do that add a button click event to btnGetDataReport and modify the code so that it looks like this:

     

    Line 25 retrieves the selected sensor from the combo box.  In lines 27-30 we check to make sure that the selected sensor is an Ambient Light Sensor.  Without this check the rest of the code might throw an exception for unexpected types of sensors.   Once we have the sensor and are sure it is an ambient light sensor we use the case statement to take action based on the current sensor state.    Lines 35-37 retrieves a data report and sets the label text to the current Lux value.

    Now if you start the virtual light sensor application, and run this form application you can select a sensor and click the button to get the current LUX value reported by the sensor.

     

  • Windows 7 Calculator Features for Developers

    Windows 7 has had several classic programs such as Paint, WordPad, and Calculator updated with new features. The classic Windows Calculator has several enhancements that I find helpful as a developer.   Calculator now includes Standard, Scientific, Programmer, and Statistics modes.   If you need unit conversions you can use the new unit conversion view to convert between almost any unit of measure. 

    As a developer one of my personal favorites, is the addition of the Date Calculation view.  Using this you can determine the difference between two dates, or add or subtract days to a date.  This is quite helpful when debugging date routines in SQL and .NET.

    Other features that may be helpful to developers is the addition of new binary operators (RoR, RoL, and Rsh).   In programmer mode there is also an improved display of binary numbers.  Binary numbers are shown grouped and key bit positions are indicated underneath.

     

  • Windows 7 Sticky Notes

    Today, I'm going to deviate from my typical technical discussions about code or SDKs.   Why?  I just found a new feature in Windows 7 that I'm really liking.   Has your monitor ever started to look like a giant pastel flower because of all the sticky notes adorning the edges?  Then you will love Windows 7 Sticky Notes.

    To check this feature out,  click the Start Menu and click "Sticky Notes"

    This will create a new sticky note on your screen.  Simply click the note with your mouse and begin typing the text for your note.  Your note might look like this.

    By clicking the '+' icon you can create a new note.  Clicking the 'x' in the right corner deletes your note.  You can click and drag the lower right corner to resize your note.  Click an drag the top of the note to put it anywhere you want on your desktop.

    If you prefer green sticky notes to yellow, just right click your note and select green or whatever your favorite color might be.

    My favorite thing about the new Windows 7 Sticky Notes is that the feature is simple, useful, and easy to use.

    Posted May 22 2009, 04:56 PM by mbohn with no comments
    Filed under:
  • Setting up the Windows 7 SDK Beta Virtual Light Sensor

    In my previous, post Windows 7 Sensor and Location API I spoke at a very high level on what the Sensor and Location APIs bring into Windows 7.   Now I'd like to delve a little deeper and show how to setup the Virtual Light Sensor that comes with the Windows 7 SDK Beta.  If you don't have existing hardware sensors on you computer the Virtual Light Sensor is a good way to experiment with the APIs.   Given that one of my favorite programming languages is C#, I'd like to be able to setup a sensor and use C# and the .NET framework to interact with it. 

    I can do just that using the Windows 7 Sensor and Location Interop Sample Library, which includes a simple wrapper for a few sensor and location APIs and objects.  It also includes two sample applications, a version of an MSDN reader that adjusts based on ambient light sensor information and a simple game that moves a Marble around on the screen using an accelerometer.   I first learned of this .NET sample code and the Virtual Light Sensor on the Windows Team Blog in Yochay Kiriaty's post Windows 7 Sensor and Location .NET Interop Sample Library.  In this post, I will expand on setting up the Virtual Light Sensor and testing your environment with the sample MSDN Reader mentioned in Kiriaty's post.

    To start experimenting with Windows 7 Sensor and Location .NET Library you need to have a few prerequisites.

    1. .NET 3.5 SP1 
    2. Visual Studio 2008
    3. Download and install the Windows 7 Beta SDK -  This is an ISO DVD image.
    4. Download and install Microsoft XNA Game Studio 3.0 - This is only required if you want to run the Marble game demo.
    5. If you want to run the Marble game demo in the sample library, you will need a hardware accelerometer.

    Once these prerequisites are installed, you can proceed to setting up the Virtual Light Sensor that comes with the Windows 7 Beta SDK.  

    Step 1 - Go to Device Manager, right click your compurer name, and Select "Add legacy Hardware"

    Step 2 - In the add new hardware wizard make sure you choose to manually select the driver.

    Step 3 -  When prompted to select the type of hardware you are installing, select "Sensors".

     

    Step 4 - When prompted to select a device driver, choose "Have Disk".

    Step 6 - In the location dialog browse to C:\Program Files\Microsoft SDKs\Windows\v7.0\bin which is the location of the Virtual Light Sensor driver.

    After selecting the driver location, continue thru the wizard until installation is complete.

    Step 7 - Enable the sensor

    Before you can use the virtual light sensor it needs to be enabled. Go to Control Panel -> Hardware and Sound -> Location and Other Sensors.  You will see a screen like that below.  Check the box to enable the sensor and click apply. 

    Step 8 - Run the Virtual Light Sensor Application

    Now that the sensor is enabled, open Windows Explorer and navigate to C:\Program Files\Microsoft SDKS\Windows\V7.0\Bin and run VirtualLightSensor.exe as an Administrator.  Note: In my environment running this application triggered another install of the sensor.  If that occurs, you may need to repeat Step 7 and select the newly installed sensor.

    Once launched you should see the application which looks like this:

    You can now use this application to adjust the current light level and the app will trigger the appropriate events and reports through the sensor API.

    To see this in action navigate to the location where you un-zipped the Windows 7 Sensor and Location Interop Sample Library and open the solution file Windows7.sln.  Once this is opened, launch the MSDN reader application, and try changing the light intensity using the slider in the Virtual Light Sensor application.  You should be able to see the interface change as you change the lighting environment with the slider.

    You now should have everything you need to start building your own application that uses the Virtual Ambient Light sensor.

     

     

  • Windows 7 Sensor and Location API

    One of the exciting new additions coming in Windows 7 is the Windows 7 Sensor and Location Platform.   The Windows 7 Sensor and Location Platform is an API built into Windows 7 that will allow application developers to interact with sensors in a standard way, and it allow a standard way for hardware vendors to create their sensor interfaces.  Hence,  it allows hardware and software developers to speak a common language.  Application developers will be able to create enviromentally aware applications much easier by using these standard API interfaces built into Windows 7, instead of writing code for each specific piece of sensor hardware they want to use.   The APIs are provided primarily as native code interfaces using C++ and COM.  However, a lightweight .NET Interop Library has been published for .NET development.

     

    Sensors could include GPS devices, accelerometers, light sensors, temperature sensors, or logical sensors (logical sensors are software based sensors).   An application could easily interact with GPS data to plot your current location on your laptop as you are driving.  An application might use a logical sensor to detect your location based on your current IP address.  Or, if you go from a bright office setting to a dark conference room environment, your application might adjust your display brightness and decrease your laptop volume to better fit the change in environment.  These are just a few examples, the platform is flexible in that it will allow hardware vendors to create and publish new categories and types of sensors. 

     

     For more information on the Windows 7 Sensor and Location Platform check out these links:

     

     

  • SQL 2005 & 2008 - Passing complex data sets with the XML type

    Sometimes as a web developer you need to pass more complex data as input to a stored procedure.   Take for example, a user profile with a question that has multiple check box answers and a database that stores each answer as a seperate row in a table.

    Say our target answer table was created like this:

     CREATE TABLE AnswerTable (

            AnswerID int Primary Key,

            QuestionID int,

            AnswerValue varchar(10)

    )

     

    We can save multiple answers for a given QuestionID at one time by creating an xml document to represent  the answer data and passing it to SQL. 

    We could create an XML string like this:

    string xmlString = "<answers><answer>a</answer><answer>b</answer><answer >c</answer></answers>";

     And a store procedure to receive it like this:

    CREATE PROCECURE [dbo].[sproc_AddAnswers]

    @AnswerXml Xml,

    @QuestionID int

    AS BEGIN

    INSERT INTO AnswerTable SELECT @QuestionID, Item.i.value('.', 'varchar(30)') from @AnswerXml.nodes('answers/answer') as Item(i) 

    END

     Note how Item.i.value selects the value of the node selected by x-path expression 'answers/answer' pass to @AnswerXml.nodes.   The nodes() function of the XML type converts XML data to a relational result set. 

     

    To send the XML to the stored procedure we do something like this:

       //send XML document to SQL server to add answers
       using (SqlConnection conn = new SqlConnection(connectionString))
       {
           SqlCommand myCommand = new SqlCommand("sproc_AddAnswers", conn);
          myCommand.CommandTimeout = 1200;


          myCommand.CommandType = CommandType.StoredProcedure;

          myCommand.Parameters.Add("@AnswerXml", xmlString);

          myCommand.Parameters.Add("@QuestionID", 1);

          conn.Open();
          myCommand.ExecuteNonQuery();
          conn.Close();
       }

     

     

     

     

     

  • Silverlight 2.0 Beta 1 DataGrid Sample

    At the recent MIX 08 conference, several new features were unveiled for SilverLight 2.  The DataGrid component is one of those new additions, which I recently decided to explore by building a simple SilverLight 2.0 application that loads an RSS feed into the new DataGrid.  This post will also illustrate calling a web service in SilverLight 2.0 Beta 1 and binding the DataGrid using LINQ with XML.

    If you decide to follow along with this example, you will need the following prerequisites:

    Once you have the above pre-requisites installed, create a new SilverLight project by going to File | New Project.  Select the Silverlight project type and the SilverLight application template as you see in the figure below.

     

     

     

     

    After you click OK, the "Add Silverlight Application" dialog will appear.  Select the radio button labeled "Add new Web to the solution for hosting the control", select the "Web site" project type, and Name the web  "SilverLightDataGridSample_Web".   See the figure below for a snapshot of this dialog after completing these steps:

     

     

    Once you have made all the selections as described above, click OK.  You should now see a blank canvas on your screen. 

     

    In order to use the DataGrid, you will need to add a reference to System.Windows.Controls.Data as seen below.

     

     

    This application will allow a user to enter an RSS feed URL into a text box and click a button to fill the DataGrid with data from the feed.  To accomplish this we will need to add a TextBox, a Button, and a DataGrid to the page (and a few controls to make it look pretty).   Here is the XAML to layout the interface:

     

    <UserControl xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="SilverLightDataGridSample.Page"

    xmlns="http://schemas.microsoft.com/client/2007"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Grid x:Name="LayoutRoot" >

    <Grid.Background>

    <RadialGradientBrush Center=".1,.1" RadiusX="1" RadiusY="1">

    <GradientStop Color="DarkBlue" Offset=".1"/>

    <GradientStop Color="Aquamarine" Offset="1.5"/>

    </RadialGradientBrush>

    </Grid.Background>

    <Canvas>

    <Rectangle Fill="Black" Width="800" Height="600" Canvas.Top="105" Canvas.Left="205" Opacity="0.25">

    </Rectangle>

    <Border BorderThickness="1" BorderBrush="#BBBBBB" Opacity="1.0" Background="Silver" Width="800" Height="600" Canvas.Top="100" Canvas.Left="200">

    <StackPanel x:Name="stpMain" Margin="10 10 10 10">

    <TextBlock x:Name="tbURLLabel" Text="Feed Url" ></TextBlock>

    <TextBox x:Name="txtURL" BorderBrush="Black" Height="20" Width="300" HorizontalAlignment="Left" FontSize="12">

    </TextBox>

    <Button x:Name="btnFetch" Content="Fetch Data" ToolTip="Fetch" Height="20" Width="100" ClickMode="Press" Click="btnFetch_Click" HorizontalAlignment="Left" Margin="0 10 0 0" >

    </Button>

    <my:DataGrid x:Name="dgFeeds" AutoGenerateColumns="False" IsReadOnly="True" Height="450" Width="750" RowHeight="50" Visibility="Collapsed" HorizontalAlignment="Left" Margin="0 10 0 0" ColumnWidth="685" >

    <my:DataGrid.Columns>

    <my:DataGridTemplateColumn>

    <my:DataGridTemplateColumn.CellTemplate>

    <DataTemplate>

    <StackPanel Margin="5 5 5 5" Width="600">

    <TextBlock Text="{Binding Title}"/>

    <HyperlinkButton Content="View Post" NavigateUri="{Binding PostUri}" TargetName="_blank"></HyperlinkButton>

    </StackPanel>

    </DataTemplate>

    </my:DataGridTemplateColumn.CellTemplate>

    </my:DataGridTemplateColumn>

    </my:DataGrid.Columns>

    <my:DataGrid.RowDetailsTemplate>

    <DataTemplate>

    <StackPanel Margin="5 5 5 5" Width="600" Height="75" >

    <TextBlock Text="{Binding CleanedDescription}" TextWrapping="Wrap" Width="600" FontSize="10"/>

    </StackPanel>

    </DataTemplate>

    </my:DataGrid.RowDetailsTemplate>

    </my:DataGrid>

    </StackPanel>

    </Border>

    </Canvas>

    </Grid>

    </UserControl>

     

    Before compiling, you will also want to add an OnClick event to Page.xaml.cs that looks like this:

     

    private void btnFetch_Click(object sender, RoutedEventArgs e)

    {

    }

    We will add code to this method later.  At this point you should be able to run the application and see something that looks like this:

     

     

    Our next step is to bind our data grid to an RSS feed.  There is one challenge with this since SilverLight will only allow us to make cross domain requests if the server has a policy file defined.  Since we cannot assume there is a policy file for every url the user might enter, we will create a server side web service that will query the desired url and return the XML for the feed.   To accomplish this, add a new web service to the SilverLightDataGridSample_Web that is used for hosting the control,  call this web service RSS_Fetcher.   In RSS_Fetcher.cs located in the App_Code folder, add a web method like the following:

     

        [WebMethod]

        public string GetRSS(string Url)

        {

            try

            {

              

                XmlReader xr = XmlReader.Create(Url);           

                XmlDocument xmlDoc = new XmlDocument();

                xmlDoc.Load(xr);

             

                return xmlDoc.OuterXml.ToString();

            }

            catch (Exception exc)

            {

                return exc.Message;

            }       

        }

     

     

    This method will fetch the XML for the input url and return it back to our SilverLight control.  After adding the web service in the SilverLightDataGridSample_Web project, right click references in the SilverLightDataGridSample project and select Add Service Reference.   When the dialog appears, click Discover, select the RSS_Fetcher.asmx, and then enter RSS_Service for the namespace.  See the screen shot below:

     

     

     

    Once you click OK, the reference will be added.  Before we can finish wiring the web service results to the DataGrid, we need to create a class that will

    represent the post data in the RSS feed.   So create a new class in the SilverLightDataGridSample  called PostItem.cs, and add the following code to this class:

     

     

    using System;

    using System.Windows;

    using System.Windows.Controls;

    using System.Windows.Documents;

    using System.Windows.Ink;

    using System.Windows.Input;

    using System.Windows.Media;

    using System.Windows.Media.Animation;

    using System.Windows.Shapes;

    using System.Text.RegularExpressions;

     

    namespace SilverLightDataGridSample

    {

        public class PostItem

        {

            private string _title;

            private string _link;

            private string _description;

            private DateTime _pubdate;

     

            public string Title

            {

                get { return _title; }

                set { _title = value; }

            }       

           

     

            public string Link

            {

                get { return _link; }

                set { _link = value; }

            }      

           

     

            public string Description

            {

                get { return _description; }

                set { _description = value; }

            }

          

     

            public DateTime PubDate

            {

                get { return _pubdate; }

                set { _pubdate = value; }

            }

     

            public Uri PostUri

            {

                get

                {

                    return new Uri(Link);

                }

            }

     

            public string CleanedDescription

            {

                get

                {

                    string cleanedText = StripHTML(_description);

                    if (cleanedText.Length > 200)

                        cleanedText = cleanedText.Substring(0, 200);

     

                    return cleanedText;

                }

            }

     

            private string StripHTML(string HTML)

            {

                string ReturnString = "";

     

                // Replace all HTML tag matches with the empty string

                Regex thisExpression = new Regex("<(.|\n)+?>");

                ReturnString = thisExpression.Replace(HTML, "");

               

                ReturnString = ReturnString.Replace("&nbsp;", " ");

     

                return ReturnString;

            }      

                       

       

     

    }

     

     

    You will notice that this class is defining a few basic properties that are commonly found in an RSS feed.  You may also notice that the XAML posted

    earlier contains bindings to properties with the same names.   To complete our application we need to call the web service from the button click event, and bind the data to the DataGrid.

     

    To call the web service we will need to do two things.  The first is to add code to btnFetch_Click so that it looks like the following:

     

    private void btnFetch_Click(object sender, RoutedEventArgs e)

            {

                //determine what the URL of the service should be on our server

                string wsUrl = System.Windows.Browser.HtmlPage.Document.DocumentUri.AbsoluteUri;

                wsUrl = wsUrl.Substring(0, wsUrl.LastIndexOf('/') + 1) + "RSS_Fetcher.asmx";

     

     

                //create the binding and set the MaxReceivedMessageSize

                System.ServiceModel.BasicHttpBinding binding = new System.ServiceModel.BasicHttpBinding();

                binding.MaxReceivedMessageSize = int.MaxValue;  //Without this large feeds will throw an exception

     

                //instantiate and call the service

                RSS_Service.RSS_FetcherSoapClient rssSvc = new RSS_Service.RSS_FetcherSoapClient(binding, new System.ServiceModel.EndpointAddress(wsUrl));

                rssSvc.GetRSSCompleted += new EventHandler<RSS_Service.GetRSSCompletedEventArgs>(rssSvc_ServiceCompleted);

                rssSvc.GetRSSAsync(txtURL.Text);

            }

     

    To complete the web service wire up, add the following method to handle the GetRSSCompleted event.   You will also need to right click on References and

    in the SilverLightDataGridSample project and add a reference to System.Xml.Linq.

     

    void rssSvc_ServiceCompleted(object sender, RSS_Service.GetRSSCompletedEventArgs e)

            {

     

                System.Xml.Linq.XDocument rssFeed = System.Xml.Linq.XDocument.Parse(e.Result.ToString());

                var posts = from item in rssFeed.Descendants("item")

                            select new PostItem

                            {

                                Title = item.Element("title").Value,

                                Link  = item.Element("link").Value,

                                Description = item.Element("description").Value,

                                PubDate = Convert.ToDateTime(item.Element("pubDate").Value)

                            };

     

                dgFeeds.ItemsSource = posts;

                dgFeeds.Visibility = Visibility.Visible;

                dgFeeds.RowDetailsVisibility = DataGridRowDetailsVisibility.VisibleWhenSelected;          

               

            }

     

    You will notice in this method we create an instance of an Xdocument and use LINQ to select all "item" nodes into a list of items of type PostItem.

    Once we have the list of PostItem objects we can very easily bind it to the DataGrid by setting the ItemsSource property.

     

    Now if you compile and run the application, you should be able to enter an RSS feed link and click the button to populate the grid.  The results should look like the figure below:

     

     

     

     

    If we re-examine the XAML for the DataGrid we will see that the DataGridTemplate column renders the title and hyperlink on all rows and the RowDetailsTemplate renders the section that expands out each time we select a row.   From this example we have illustrated how to call a web service from SilverLight 2.0 Beta 1,  and how to bind a data grid from XML data using LINQ.

     

     

     

     

     

  • Topics from MIX08

    Here is the outline from the presentation this morning.   The powerpoint is also attached.


    IE 8 Beta 1

    • Standards Based - CSS 2.1 and HTML 5
    • Web slices
    • Web activities
    • Ajax Navigation
    • Connection Events
    • Developer Tools
    • Local Storage
    Silverlight 2.0 Beta
    • Adaptive streaming in conjunction with Windows Media Services 2008
    • Bit rate throttling
    • Multi-language Support
    • New UI controls - Text boxes, grid, etc
    •  Deep Zoom and Deep Zoom Composer (Sea Dragon)
    • Better support of user controls
    • Integration with advertising
      • Click tracking integration
      • Double click to release Silverlight API later this year
      • Video events
      • Quickly create fly out ads etc

    WPF 3.5

    • Graphics enhancements - Combine 2D and 3D graphics
    • More APIs for syndicated content
    • Improved performance
    • More controls coming such as a data grid and improved item controls

    ASP.NET 3.5 Extensions Preview

    Demos

    I hope to post some code demos in the future.

  • MIX08 Day 2

    Today at MIX there was still no shortage of sessions on WPF and SilverLight. This morning I attended a session on "Whats New in WPF and .NET 3.5". The key improvements noted were

    1. Deployment improvements - The size of the core .NET runtime needed to run WPF has been made smaller and more compact. Developers will also be able to give WPF installs their own branding without any Microsoft.NET branded interruptions.

    2. An add-in model has been included so custom add-ins can be written for a WPF application.

    3. Data improvements include improvements to XLINQ binding, dataset performance, and improved performance in XML DOM binding.

    4. Additiional capabilities for Interactive 2D on 3D. For example a textbox can be placed on a 3d surface given background textures or animation, but at the same time it will still function as a textbox

    5. Improvements for syndicated client experiences - This further facilitates apps such as content readers etc that consume content via the internet.

    These are very high level and I hope to have some demos to run in the future.

    In the afternoon, Steve Ballmer and Guy Kawasaki had a keynote or rather Guy interviewed Steve. Steve re-iterated Ozzie's position on expanding Microsoft's advertising platform by potentially acquiring Yahoo. He did mention that Microsoft has made an offer. I hope to have more posts coming soon on WPF and SilverLight.

     

    I hope to have more posts coming soon on WPF and SilverLight.  

  • MIX Day 1

    Who said Johny Cash and Microsoft don't mix?  Well at MIX they do, as listeners were serenaded with Johny Cash as they waited for the event to start.  Once it started there was no lack of eye popping demos.   

    Microsoft kicked off MIX today with keynotes from Ray Ozzie,  Scott Guthrie, and Dean Hachamovitch.

    Ray Ozzie, announced Microsoft's commitment to expanding their advertisement platform,  potentially through acquiring Yahoo.   Wow!!   He also discussed Microsoft's software + services strategy to enable users to connect all their devices, to enable connected entertainment, and to enable business to connect like they never have before.  In the user space, Microsoft's direction would be to allow a user to synchronize all their devices using Microsoft software and the internet as a hub.  One example Ozzie used was having devices report their status via the web and allow them to be remotely managed.  Instead of thinking in terms of a single PC, users would have a mesh of devices they could manage. 

    For businesses Microsoft seemed to communicate a vision of having software products that live on a PC and services such as Office Live that would provide rich internet applications and services over the web.  Ozzie also mentioned having exchange and communications server available as products an enterprise could install on their own server or could pay for as services in the cloud, which would reduce the IT burden on some companies.  He also spoke briefly regarding SQL Data Services, it wasn't quite clear if and when this will be available, but it seemed that this would would equate to Microsoft providing database solutions as a service.

    After Ozzie,  Scott Guthrie was next up talking about .NET 3.5,  Visual Studio 2008,  IIS 7,  the ASP.NET MVC Preview, and the Silverlight 2.0 Beta 1 preview.    .NET 3.5 contains enhancements that include javascript intellisense,  integrated javascript debugging with VS 2008, and LINQ (language integrated query).  

    Scott then handed it over to Dean Hachamovitch to talk about IE 8 and I would guess every developer liked what they heard.  One of the major goals of IE 8 is to allow developers to spend less time getting their code to work in all browsers.  To that end IE 8 will be standards compliant with CSS 2.1 and HTML 5.   Microsoft also is working toward a CSS certification process with the W3C, and to that end they have submitted testcases to W3C under the BSD license.  They have requested developer feedback on the test cases.  My understanding of this is that Microsoft isn't certifying IE 8 as much as trying to promote a standard test and certification process for all browsers to under go to be compliant, which I think is a great idea.  The other area of improvement in IE 8 should be performance.   It was mentioned that scripting performance could improve by 2.5x.  Some other nice features that will be unveiled in IE 8 are listed here:

    • Improvements for AJAX and usability - For example, in IE 8 clicking the back or forward button will allow you to actually go back thru your history of AJAX partial page updates. 
    • Connectivity events -  This should allow events to be raised in the browser when a user's internet connection is lost.  If they are on a form their data can be saved locally until the connection is restored. 
    • Developer Tools -  IE 8 will provide developer tools very similar to the FireFox plugin FireBug.  This tool will allow developers to debug client script much like they debug code in Visual studio.  They can set watches, break points, and browse and search styles.   Applause??  This feature got the applause from the developers in the crowd.
    • Web Activities - This concept is very new and very hard to describe without demo.  One example shown was a user right clicking on a street address and the context menu had a "map it" option.  Microsoft has created an open service spec that would allow developers to create their own activities.
    • Web slices - This feature would allow a user to subscribe to a portion of a page they are interested in and add it to their favorites so they can stay updated.

    IE 8 Beta 1 is now available at http://www.microsoft.com/windows/products/winfamily/ie/ie8/default.mspx

    After the IE 8 presentation, SilverLight took the show.  SilverLight 2.0 should have the following features and benefits

    • Reduced total cost of ownership - This will be achieved thru adaptive streaming and Windows Media Services 2008 (which is free for any edition of 2008 server system)
    • Progressive download and bit rate throttling via IIS and the media services pack.  This will allow admins to allow a burst of data to be streamed and then throttle the rate back.  The idea is to save cost since more content may get streamed that a user will actually watch
    • Adaptive streaming - This allows SilverLight to adjust the streaming bit rate as connection speed changes.
    • Integrating Advertising - SilverLight 2.0 will allow better integration with click tracking services.
    • Multi language support
    • A subset of the WPF framework is contained within Silverlight to allow developers to build rich internet applications with textboxes and grids etc.
    • Deep Zoom -  This will provide a framework for developers to quickly create stitched zooming applications very similar to google maps.  Deep Zoom Composer will be a tool that will automatically generate the slices to do this easily.

    The preview release of SilverLight 2.0 Beta 1 was made available today at http://www.microsoft.com/downloads/details.aspx?FamilyId=E0BAE58E-9C0B-4090-A1DB-F134D9F095FD&displaylang=en.

     Thats alot for a day!

     

     

     

  • MIX08 Registration a Breeze

    Microsoft did a good job of organizing the registration for this event.  I waited in line maybe 15 - 20 minutes at most (not bad in my opinion for an event this size).  No paperwork just verify an ID and its that simple.  The online session registration tool is also very helpful in helping you schedule and choose breakout sessions.

     I'm curious to see what topics emerge in the open space forums, where Microsoft is letting conference attendees post topics to discuss.

  • Smooth Fusion visits MIX 08

    Smooth Fusion arrived in Las Vegas today, after a day of travel.  I'm excited to attend tomorrow's sessions on Flash to Silverlight and building rich internet applications with Silverlight.  I look forward to a week of informative presentations from Microsoft, and I hope to bring back many ideas to start fusionovating with.  Well its time to go register,  check back for more updates on whats happening at MIX.

Powered by Community Server (Commercial Edition), by Telligent Systems