January 2006 - Posts

Tons of people have been waiting eagerly for the official Beta 2 Preview of Internet Explorer 7. So here it is: download now.

Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks


Want to test-drive some Windows Live services already? Take a look at http://ideas.live.com/. Starring:

  • Windows Live Messenger, the successor of MSN Messenger
  • Windows Live Custom Domains, a mailservice bound on your own domain
  • Windows Live Mail, the successor of MSN Hotmail
  • Windows Live Favorites, a new star at the horizon
  • Windows Live Safety Center and Windows OneCare Live to keep your pc healthy
  • Windows Live Local, the place to find maps, satellite photos and more about your region (US only currently)
  • Windows Live Search, to find stuff on the internet you can use immediately on mobile devices (search, save, get maps, establish communication)
  • Windows Live Expo, the online market place and social networking site
  • ... and more to come soon

Have fun!

Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks


Get connected today


With great innovative technologies, top speakers and community peers


Microsoft event time in Belgium once more. I'm happy to announce the Developer & IT Pro Days 2006 will be held on 7 & 8 March 2006 in the ICC in Ghent. This time the event's slogan is "The Connected Generation" focusing on the art of writing and maintaining connected software and building connected systems, using the latest available technologies and products including:

  • Infrastructure:
    • Windows Server 2003 R2
    • Virtual Server 2003 R2
    • Exchange Server 2003 R2
    • Microsoft Operations Manager 2005
    • Live Communication Server 2005
    • Data Protection Manager
  • Development:
    • .NET Framework 2.0
    • ASP.NET 2.0
    • Visual Studio 2005
    • SQL Server 2005
    • BizTalk 2006
    • Windows Mobile 5.
  • Future technologies:
    • ASP.NET 2.0 "Atlas
    • Office "12"
    • Exchange "12"
    • Windows SharePoint Services "3.0
    • WinFX - WCF, WPF and WWF
    • Windows Vista
    • Windows Longhorn Server

Three keynotes are scheduled as well, talking about "The Connected Generation", "The Networked Society" and "Get Connected" (by Rafal Lukawiecki).

And last but not least, I'm glad to present the session "WinFX - Windows Presentation Foundation: A Lap Around the Windows Presentation Foundation" on Day 1 of the event running from 1:00 PM to 2:15 PM. More details will follow later, so keep an eye on your RSS reader or on my blog. The session's description can be found here already.

So, if there's one event not to miss in Q1 this year, it's Developer & IT Pro Days 2006. Check out the website on www.dev-itprodays.be and register now. The first 400 registered attendees will receive a Microsoft Press Book for free.



Two days of 100% pure technical education

(-: Stay alert, get connected, be prepared to be excited :-)

Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

A couple of days ago I received the news that Tech Ed 2006 has been rescheduled to November and will coincide with IT Forum in November this year. You can find the official announcement below. Also check out http://www.microsoft.com/europe/teched as well as Hans Verbeeck's blog. Hope to see you at Barcelona this fall for two weeks of premier class technical education, networking with peers, technology evaluation and not to forget two weeks of parties? :o

 

 

Technical Events Strategy

2006 

Communication

 

To better serve the developer and IT professional communities in the Europe, Middle East and Africa region, Microsoft is evolving its pan-European technical events (Tech Ed Europe and IT Forum) in 2006.

 

“Microsoft Tech Ed 2006: Developers” will be a deep-dive technical event addressing the specific requirements of developers while “Microsoft Tech Ed 2006: IT Forum” will be replacing IT Forum but will retain its focus on IT professionals and their distinctive needs.

 

The two conferences will for the first time run back-to-back in November 2006, creating Microsoft’s premier technical education platform in the region and a central feature of the IT industry calendar.

 

Key Messages

 

Following an internal review of the Microsoft EMEA technical events strategy, a number of changes will be implemented in 2006 to better serve the developer and IT professional communities in the region.

 

For a number of years Microsoft organized Tech Ed Europe (target audience 50% developers, 50% IT professionals) in the first week of July and Microsoft IT Forum (100% IT professionals) in the third week of November.

 

In 2006 Microsoft will host the following 2 technical events:

 

  • Tech Ed: Developers (week of November 6th, CCIB Barcelona, Spain)
  • Tech Ed: IT Forum (week of November 13th, CCIB Barcelona, Spain)

 

  • Tech Ed: Developers will be a deep-dive technical event addressing the specific requirements of developers.
  • Tech Ed: IT Forum will be replacing IT Forum but will retain its focus on IT professionals and their distinctive needs. This is just a change in branding.

 

The two conferences will for the first time run in consecutive weeks in November 2006, creating Microsoft’s premier technical education platform in the region and a central feature of the IT industry calendar.

 

Tech Ed 2006: Developers Positioning Statement

 

Microsoft Tech Ed 2006: Developers will be Microsoft’s premier European conference designed to provide developers with deep dive technical training, information and community resources focusing on building software solutions with Microsoft development tools for current and soon to release products and technologies.  

  

Tech Ed 2006: IT Forum Positioning Statement

 

Microsoft Tech Ed 2006: IT Forum will be Microsoft’s premier European conference designed to provide IT professionals with technical training, information and community resources to build, plan, deploy and manage the secure connected enterprise.

 

Key Benefits for Delegates

 

  • Tech Ed: Developers
    • The event will offer developers a platform focused on their needs, interests and priorities
    • Technical Knowledge Sharing: more deep dive technical content
    • Technology Evaluation
    • Community and Networking

 

  • Tech Ed: IT Forum
    • The slightly re-branded IT Forum remains an IT professional-specific conference and its content will reflect the agenda of this audience (IT administrators, including system, network, database, messaging, web, applications, file/storage, security, desktop configuration, etc)
    • Technical Knowledge Sharing
    • Technology Evaluation
    • Community and Networking

 

  • Both events now running in November
    • Better timing than July:
      • July is a holiday month in parts of Europe
      • Speaker conflicts with 4th July (US Holiday)
      • Clash with the WWPC (World Wide Partner Conference)
      • Busy times before MGB in mid July (Microsoft Global Briefing)
    • No conflict with Tech Ed US (running mid-June)
    • Fresh content vis-à-vis Tech Ed US in mid-June
    • Better timing for news announcements 

Q&A

 

 

§         Why is Microsoft evolving Tech Ed Europe and IT Forum?

 

Microsoft’s priority is to provide both developers and IT professionals with the best, most valuable technical training experience, and it believes that providing the most relevant, and specific content is central to achieving this. As a result, Microsoft EMEA will host Tech Ed: Developers and Tech Ed: IT Forum. The two conferences will for the first time run in consecutive weeks in November 2006, creating Microsoft’s premier technical education platform in the region and a central feature of the IT industry calendar.

 

 

§         Why rescheduling Microsoft Tech Ed Europe to November?

 

For the past 12 years, Tech Ed Europe took place during the month of July. This timeframe has proven relatively popular; however, July represents the start of the summer holiday season (particularly in Northern Europe), so not an ideal timing for some. Other considerations were the close proximity of Tech Ed US and the organizational challenges that were implicit with that, together with the July 4 US holiday and WWPC.

 

 

§         Who should attend Microsoft Tech Ed 2006: Developers?

 

Tech Ed 2006: Developers is a 100% developer focused event. Anyone interested in building software solutions with Microsoft development tools for the professional market should attend this event. The content will be a deep dive into the technology.

 

We will also offer some sessions that are more in the IT infrastructure space and this specifically for people in mixed job functions. This will be IT infrastructure content that is relevant for developers.

 

There will be specific content for software architects.

 

 

§         Who should attend Microsoft Tech Ed 2006: IT Forum?

 

The slightly re-branded IT Forum is the event for IT Professionals focusing on planning, deploying and managing the secure connected enterprise. This is the conference for IT administrators, including system, network, database, messaging, web, applications, file/storage, security, desktop configuration, etc.

 

We will also offer some sessions that are more in the software development space and this specifically for people in mixed job functions. This will be development content (like scripting) that is relevant for system administrators.

 

In addition there will be specific content for infrastructure architects.

 

 

§         What will the new events strategy offer to attendees?

 

Both events will have a similar format with the past Tech Ed Europe and IT Forum events but be focusing on a single audience instead of a mixed audience, which was the case with Tech Ed Europe.

 

They will be 4 day events focusing on technical knowledge sharing, technology evaluation and community and networking. Tech Ed: Developers will be 100% focused on developers and Tech Ed: IT Forum will be 100% focused on IT professionals. They will both have a pre-conference opportunity, keynote, lots of break-out sessions, chalk & talks, lightning demos, hands-on labs, community platforms, a communications network and fun activities.

 

 

§         Where and when will these events take place?

 

Both events will take place in Barcelona, Spain during the month of November 2006. Tech Ed: Developers will run in the week of November 6 and Tech Ed: IT Forum will run in the week of November 13.

 

 

§         Can one attend both events?

 

Of course! Microsoft will offer special packages.

 

 

§         I am a developer and I am also an IT professional maintaining systems. Which event should I attend?

 

In the IT world there are some grey areas between developers and IT professionals and some mixed job functions, especially on the database side. Therefore, Tech Ed: developers will offer some IT infrastructure sessions to cover mixed job functions. This will be IT infrastructure content that is relevant for developers.

 

Tech Ed: IT Forum will offer some sessions that are more in the software development space and this specifically for people in mixed job functions. This will be development content (like scripting) that is relevant for system administrators.

 

Microsoft will also offer special packages for attendees to attend both events. Microsoft encourages attendees to look at the session offering for each event and take a decision based on their needs.

 

·         What about SQL Server content?

 

Both events will offer sessions about SQL server. Tech Ed: Developers will offer SQL server sessions from a development perspective and Tech Ed: IT Forum will have SQL server sessions from an IT infrastructure point of view.

 

 

§         What will the delegate fees be?

 

The delegate fees for either event will be comparable to the 2005 ones; more details will be communicated during the first half of 2006. Please visit the event websites (www.microsoft.com/Europe/teched and www.microsoft.com/europe/msitforum) for more information in due course.

 

 

·         How many attendees are you expecting at Microsoft Tech Ed 2006 Developers?

 

Because Microsoft Tech Ed 2006: Developers will be the first developer-specific event in the region for many years, it is difficult to provide an accurate forecast. Looking at attendee numbers for Microsoft Tech Ed Europe in 2005 and the number of developers’ active in the region; we are hoping to sell out the event with about 4,000 attendees.

 

 

·         How many attendees are you expecting at Microsoft Tech Ed 2006: IT Forum?

 

IT Forum 2005 sold out with more than 4.000 attendees. Since we are only slightly re-branding the event to be globally consistent, we expect to sell out again. Early registration will be appropriate.

Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Previously I posted a sample on C interop basics in C#. In this post I try to avoid a "reputation mismatch" that could be caused by providing the least possible example, so here is a more exhaustive one. Have fun.   

 

This is the C#-code. Build this code in a Console Application Project.

 

using System;
using
System.Text;
using
System.Collections.Generic;
using
System.Runtime.InteropServices;

namespace
CallC
{
    /// <summary>
    /// Helper struct to pass Coordinate object through.
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct Coordinate
    {
        /// <summary>
        /// X-coordinate
        /// </summary>
        public int x;

        /// <summary>
        /// Y-coordinate
        /// </summary>
        public int y;

        /// <summary>
        /// Z-coordinate
        /// </summary>
        public int z;
    }

    /// <summary>
    /// Demo application of interop with a native C library.
    /// </summary>
    class Program
    {
        /// <summary>
        /// Makes the sum of two integer numbers.
        /// </summary>
        /// <param name="a">First value (a)</param>
        /// <param name="b">Second value (b)</param>
        /// <returns>Sum of a and b</returns>
        [DllImport("c_test_lib.dll")]
        public static extern int Sum(int a, int b);

        /// <summary>
        /// Returns the square of a given number using an output parameter.
        /// </summary>
        /// <param name="input">Input value</param>
        /// <param name="output">Output value (square)</param>
        [DllImport("c_test_lib.dll")]
        public static extern void Square(int input, out int output);

        /// <summary>
        /// Returns the square of a given number by changing the number by reference.
        /// </summary>
        /// <param name="a">Input/output value (will be squared)</param>
        [DllImport("c_test_lib.dll")]
        public static extern void Square2(ref int a);

        /// <summary>
        /// Demo of array manipulations; will double all of the elements in the array.
        /// </summary>
        /// <param name="a">The array with integer numbers</param>
        /// <param name="n">The length of the array</param>
        [DllImport("c_test_lib.dll")]
        public static extern void DoubleElements(int[] a, int n);

        /// <summary>
        /// Simple callback function.
        /// </summary>
        /// <param name="a">Some integer parameter.</param>
        public delegate void CBFUNC(int a);

        /// <summary>
        /// Demo of a simple callback.
        /// </summary>
        /// <param name="f">Function to call back to</param>
        /// <param name="a">Parameter which will be returned through the callback</param>
        [DllImport("c_test_lib.dll")]
        public static extern void DoCallback(CBFUNC f, int a);

        /// <summary>
        /// A second simple callback function with arguments and a return value.
        /// </summary>
        /// <param name="a">First parameter (a)</param>
        /// <param name="b">Second parameter (b)</param>
        /// <returns>Some binary operation result on a and b</returns>
        public delegate int CBFUNC2(int a, int b);

        /// <summary>
        /// Demo of more complex callback.
        /// </summary>
        /// <param name="f">Function to call back to</param>
        /// <param name="a">First parameter (a)</param>
        /// <param name="b">Second parameter (b)</param>
        /// <returns>Some callback value</returns>
        [DllImport("c_test_lib.dll")]
        public static extern int DoComplexCallback(CBFUNC2 f, int a, int b);

        /// <summary>
        /// Demo of working with structures (Coordindate sample).
        /// </summary>
        /// <param name="a">Coordinate a</param>
        /// <param name="b">Coordinate b</param>
        /// <param name="c">Sum of a and b</param>
        [DllImport("c_test_lib.dll")]
        public static extern void AddCoordinates(Coordinate a, Coordinate b, ref Coordinate c);

        /// <summary>
        /// Reverse a given string in-place.
        /// </summary>
        /// <param name="s">StringBuilder instance containing the string to be reversed</param>
        /// <remarks>Because strings are immutable, we need to supply a StringBuilder instead</remarks>
        [DllImport("c_test_lib.dll")]
        public static extern void Reverse(StringBuilder s);

        /// <summary>
        /// Calls a crashing function in the C-library.
        /// </summary>
        [DllImport("c_test_lib.dll")]
        public static extern void BeCareful();

        static void Main(string[] args)
        {
            //
            // Calling a simple function.
            //
            {
                Console.WriteLine(Sum(1,2));
            }

            //
            // Using output parameters.
            //
            {
                int res;
                Square(2, out res);
                Console.WriteLine(res);
            }

            //
            // Using pass-by-reference.
            //
            {
                int a = 3;
                Square2(ref a);
                Console.WriteLine(a);
            }

            //
            // Working with arrays.
            //
            {
                int[] arr = new int[] { 1, 2, 3 };
                DoubleElements(arr, arr.Length);
                List<int> l = new List<int>(arr);
                l.ForEach(delegate(int a) {Console.Write("{0}\t",a);});
                Console.WriteLine();
            }

            //
            // Callback mechanisms.
            //
            {
                DoCallback(Callback, 1);

                Console.WriteLine(DoComplexCallback(Adder, 1, 2));
                Console.WriteLine(DoComplexCallback(Multiplier, 1, 2));
            }

            //
            // Passing structures.
            //
            {
                Coordinate a = new Coordinate();
                a.x = 1; a.y = 2; a.z = 3;

                Coordinate b = new Coordinate();
                b.x = 4; b.y = 5; b.z = 6;

                Coordinate c = new Coordinate();
                AddCoordinates(a, b, ref c);

                Console.WriteLine("({0},{1},{2})",c.x,c.y,c.z);
            }

            //
            // Working with strings.
            //
            {
                StringBuilder s = new StringBuilder();
                s.Append("Hello world!");
                Reverse(s);
                Console.WriteLine(s.ToString());
            }

            //
            // Crashing in C.
            //
            try
            {
                BeCareful();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        /// <summary>
        /// Callback method to be called by the C-library.
        /// </summary>
        /// <param name="a">Some integer number parameter</param>
        public static void Callback(int a)
        {
            Console.WriteLine("Callback: {0}", a);
        }

        /// <summary>
        /// Callback method to be called by the C-library. Adds two numbers.
        /// </summary>
        /// <param name="a">Integer value a</param>
        /// <param name="b">Integer value b</param>
        /// <returns>Sum of a and b (a+b)</returns>
        public static int Adder(int a, int b)
        {
            return a + b;
        }

        /// <summary>
        /// Callback method to be called by the C-library. Multiplies two numbers.
        /// </summary>
        /// <param name="a">Integer value a</param>
        /// <param name="b">Integer value b</param>
        /// <returns>Product of a and b (a*b)</returns>
        public static int Multiplier(int a, int b)
        {
            return a * b;
        }
    }
}

 

Below you can find the C-code of the native library to interop with. Create a Visual C++ Win32 DLL empty project, create a file test.cpp and paste the following in it. Finally build the file.

 

#include <string.h>

typedef
void (__stdcall * CBFUNC) (int);
typedef
int (__stdcall * CBFUNC2) (int, int);

extern
"C" __declspec(dllexport) int _stdcall Sum(int a, int b)
{
return a+b;
}

extern
"C" __declspec(dllexport) void _stdcall Square(int a, int *b)
{
*b = a*a;
}

extern
"C" __declspec(dllexport) void _stdcall Square2(int* a)
{
*a = (*a)*(*a);
}

extern
"C" __declspec(dllexport) void _stdcall DoubleElements(int arr[], int n)
{
int i;
for
(i = 0; i < n; i++)
arr[i] *= 2;
}

extern
"C" __declspec(dllexport) void _stdcall DoCallback(CBFUNC f, int in)
{
f(in);
}

extern
"C" __declspec(dllexport) int _stdcall DoComplexCallback(CBFUNC2 f, int a, int b)
{
return f(a, b);
}

typedef
struct { int x; int y; int z; } Coordinate;

extern
"C" __declspec(dllexport) void _stdcall AddCoordinates(Coordinate a, Coordinate b, Coordinate *out)
{
out->x = a.x + b.x;
out->y = a.y + b.y;
out->z = a.z + b.z;
}

extern
"C" __declspec(dllexport) void _stdcall Reverse(char *str)
{
int i, j;
char
t;
for
(i = 0, j = strlen(str) - 1; i < j; i++, j--)
{
t = str[i];
str[i] = str[j];
str[j] = t;
}
}

extern
"C" __declspec(dllexport) void BeCareful(void)
{
int *p = NULL;
*p = 0;
}

 

Copy the resulting .dll file from the Visual C++ project release build output to the bin\Debug or bin\Release folder of the C# project and run the C# project. Have fun!

Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Just got this question by somebody for a high school project: how to call a C library (either self-written or 3rd party) from the managed code world (e.g. C#)? I created a very very simple sample to show the basics of creating a C library, exporting the headers, investigating it through dumpbin.exe and calling the library from C#. You can find the whole sample here. Please RTFM (readme*.txt files) ;-) Enjoy!Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

In the past, I've been doing some research with Enterprise Library for .NET v1.1 concerning best practices to create configurable applications that leverage the power of some pre-built patterns (more specifically I've been focusing on the data access part of Enterprise Library as well as the caching block). I'm glad to see the new version being released this weekend and hope to find some time in the near future to take a closer look at it. The bits can be grabbed over here: http://www.microsoft.com/downloads/details.aspx?FamilyId=5A14E870-406B-4F2A-B723-97BA84AE80B5&displaylang=en. Cheers!Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Must-have download for all SQL Server 2005 users: the December 2005 update for BOL is available now on http://www.microsoft.com/downloads/details.aspx?FamilyID=be6a2c5d-00df-4220-b133-29c1e0b6585f&DisplayLang=en. Enjoy!

Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

Maybe you know the trick in Word pre-12 to create random text: just type =rand() (you can specify parameters as well) and press enter. Word will generate this:

The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.

The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.

The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.

 

Cool. So, when I started to test Word 12 and didn't want to write a bunch of text, I thought to use =rand() again and guess what Word spits out right now (in the new standard Calibri font btw):

 

The AutoFormat feature in Word works behind the scenes to produce an attractive, easy-to-read document while you concentrate on the content.  Word analyzes each paragraph to see how it's used in the document (for example, as a heading or as an item in a numbered list) and then applies an appropriate style for that item.  Word also automatically formats Internet, network, and e-mail addresses as hyperlinks, applies bold or underline character formatting to text surrounded by asterisks or underscores, replaces two hyphens with a dash, and so on.  When you share your documents with others, you can track changes to see exactly what additions and deletions they made.  Then you can accept or reject their revisions one at a time or all at the same time.

If reviewers return their changes in separate documents, you can merge all their revisions into a single document and then review them.  If you want a record of changes made to a document, you can save different versions of a document all in the same document.  By tracking changes in a document, you can make revisions to a document without losing the original text.  When you track changes, Word shows changed text in a different color from the original text and uses revision marks, such as underlines, to distinguish the revised text from the original text.  By default, Word underlines and changes the color of inserted text.

It also includes a vertical changed line in the margin to the left of any changed text to help you locate changes in the document.  The AutoFormat feature in Word works behind the scenes to produce an attractive, easy-to-read document while you concentrate on the content.  Word analyzes each paragraph to see how it's used in the document (for example, as a heading or as an item in a numbered list) and then applies an appropriate style for that item.  Word also automatically formats Internet, network, and e-mail addresses as hyperlinks, applies bold or underline character formatting to text surrounded by asterisks or underscores, replaces two hyphens with a dash, and so on.  When you share your documents with others, you can track changes to see exactly what additions and deletions they made.

The lazy dog has retired :D.

Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

To all of my blog readers: a great 2006 with a bunch of superb product releases and development excitement. OMG, I hate those kind of posts :-). Anyway, below you'll find some Secunia figures about security bulletins in 2005. Enjoy!

 
 
 
 
 

 

 

 
 
 
 
SQL Server 2000 (0 advisories from 2005)
 
 
Del.icio.us | Digg It | Technorati | Blinklist | Furl | reddit | DotNetKicks

More Posts