Andrew Coates ::: MSFT

It's all about community!

  • Andrew Coates ::: MSFT

    Using MapPoint to implement a Geofence


    Chandu Thota (of BlogMap fame) has a link to an MSDN article on implementing a Geofence with MapPoint Location Server. "What's a Geofence?" I hear you cry. I'm glad someone asked.

    From the article:

    A geofence is a geographical region that you define and use to trigger an event when a user enters the region. For example, you can create an application that sends an Short Message Service (SMS) message about a current sales promotion to provisioned users when they come within a one-mile radius of your store location.

    Map with a Geofence

    Very cool stuff.

  • Andrew Coates ::: MSFT

    Sydney VFP User Group WebCast



    • A computer with access to the Internet to view the visual portion of the webcast.
    • A functioning sound card and speakers or headphones for your PC.
    • Test your computer:
    1. To test your computer for the proper configuration click on the following link:
    2. Please install and run Live Meeting Software if prompted to do so.
    3. You should see a Live Meeting Console with 3 revolving slides.  If you are able to see all three slides, your test was successful. 
    4. If you are not able to see the slides, or if your system is stalled, please contact Event Support (see below).

    ON THE WEBCAST DAY, FOLLOW STEPS A & B 15 minutes before the webcast begins:
    A. To view the Internet portion:

    1. Click the Meeting URL:
    OR, if you can’t click the above Meeting URL, click on this link:
    Clicking on either URL, you will arrive at the Join Meeting page and in the following fields, check or enter this information:
    a. Your Name: (enter your First and Last name)
    b. Meeting ID: msft092904ac
    c. Password: KJS89Q
    Click Submit
    2. On the next page, please enter your Email and Company Name (if required) and click Submit.
    3. You must install and run Live Meeting Software if prompted to do so.
    4. Please allow a few moments for your Console to launch.

    B. Listen to the audio portion of the webcast:
    Once you have logged into the Internet portion, click the “Click Here for Audio” link on the left of the Audience window. The VoiceNow! player will take a moment to load.  You should hear hold music prior to the webcast start time. If you do not hear the audio, please confirm that your PC speakers are on and that the volume is turned up.

    This wednesday night (29 Sep 2004, 18:30 Sydney time -- GMT + 10), we will be webcasting the Sydney VFP User Group Meeting. The video of the presenters' screen will be streamed, as will the audio of their presentation.

    The Melbourne VFP User Group will be gathering at the MS theatre at the Como Centre to view the webcast en masse, while I expect other VFP developers from around Australia will log in from their desks.

    This is a test run for the more general case of webcasting User groups of many different flavours over the next few months. We're hoping to lean a lot from this first pass, and will keep striving to make this the best experience possible.

    Details of the content of the meeting are (from the User Group's web site):

    Next meeting (29 September 2004)

      This month we will have 4 mini-talks of 20 minutes each covering the following topics
    I want to know how to...
    The format for this month will be a little different to usual, in that the aim is to cover 4 topics briefly by way of an eye-opener for people who haven't used them before.

    All attendees are encouraged to come with their own ideas to contribute, as there is no one 'right' way to do things.

    We will also have our regular Q+A session at the end.

    This meeting will be combined online with the Melbourne VFP User Group!

    The Sydney Visual FoxPro User Group meets at Microsoft headquarters:

    6:30pm - 8:30pm
    Microsoft Sydney Office
    Theatre 2
    1 Epping Road
    North Ryde NSW 2113

    Pizza and drinks are provided

    Note - if you come after 6:30pm you will need to call security to let you in - the number to call will be on a notice at the door

    For details of upcoming meetings or general questions please email Craig Bailey (UG President)

  • Andrew Coates ::: MSFT

    Register Visual Studio 2005 Beta 2, get a free online book from MS Press


    Microsoft Learning has partnered with the Visual Studio team to provide developers with additional incentive for registering Beta 2.  Developers who register their copy of Beta 2 will have access to a free developer title from Microsoft Press.  After downloading the Beta they receive an email telling them about the benefit, and encouraging them to register their Beta. When a user completes the registration process they will receive an email with a link to the online books, and an access code.  Each user will have access to one book per code.  Developers who register multiple SKUs of the Beta will receive additional access codes, giving them access to more books.  The offer is available worldwide, books are English-only.

    Register by choosing Register Product from the Help menu.

    Detailed breakdown of free online books available for each VS Beta SKU:

    Visual Studio Beta2 Sku Free online eBooks 
    VWD Express Introducing ASP.NET 2.0, English
    Introducing Microsoft® Visual Basic® 2005, English
    Writing Secure Code, 2nd Edition, English
    VB Express
    J# Express Writing Secure Code, 2nd Edition, English
    C# Express
    C++ Express
    SQL Express
    Visual Studio Standard Introducing ASP.NET 2.0, English
    Introducing Microsoft® Visual Basic® 2005, English
    Writing Secure Code, 2nd Edition, English
    Visual Studio Professional
    Visual Studio Team Suite
    VS Premier Partner Edition

  • Andrew Coates ::: MSFT

    SQL Server 2005 Beta 2 Resource Kit Available in Australia


    Terry Clancy, The SQL Server Product Manager in Australia, tells me that the SQL Server 2005 Beta 2 Resource Kit is available in Australia.

    Go to to order a FREE copy (there's not even any shipping to pay)

    The kit contains

  • SQL Server 2005 Beta 2 Dev Edition
  • SQL Server 2005 Beta 2 Resource DVD (Hours or streaming media technical presentations and documents
  • SQL Svr 2005 Beta 2 Hands-On Labs DVD with 10 Hands on Labs
  • Well worth a look if you're likely to do any development that involves a database in the next few years

  • Andrew Coates ::: MSFT

    .NET Framework 3.5 Namespaces Poster Available


    clip_image002This just in from Paul Andrew.

    We just completed the .NET Framework 3.5 update to the Commonly Used Types and Namespaces poster.

    Here's a link to the file (PDF, XPS and 16-page XPS) if you want to grab it now and be the first on your block to get it on your wall. We'll be using it at a variety of places, if you think it would be a cool thing to have at a Microsoft event then please go suggest it to some Microsoft employee that you know.

    Let me point out the little additive circles diagram at the bottom right. We've found that this is a great way to explain the additive version releases of the .NET Framework 2.0 – 3.0 – 3.5. The primary reason for updating the .NET Framework this additive way instead of the side-by-side nature of .NET Framework 1.1 – 2.0 is to make it easier for customers to upgrade their apps. Here's that diagram again.

  • Andrew Coates ::: MSFT

    Resize Images - a Thumbnail Maker


    Nic was hanging out with Nick (a combination that's just asking for trouble if you ask me) a couple of weeks ago near my desk, and Nic was bemoaning the lack of a resizing utility. This triggered something in the back of my mind and lo! I found a post by Rick Strahl on (almost) this very thing. I tweaked the code a little to turn it into a console app from a web app and built it.

    I added a shortcut to the exe both on my desktop and in my SendTo folder so now I can right-click on an image or images and send it to the resizer and it will do its magic.

    (508k) turns into this (23k):

    Pretty cool!

    Here's the code - most of it pinched directly from Rick remember. Note that in its current form, it makes the maximum dimension of the thumbnail 120px. You can change that at the top. I've also attached a zipped version of the solution to this post. Of course, this is provided as-is with no guarantees of stability, suitability or any other -ability. Use at your own risk, contents may be hot, don't run with scissors etc.

    You could add some nice bits like:

    • the ability to detect that it had been passed a folder and have the code traverse the folder and resize all the images therein.
    • the ability to set the max size as part of the command line
    • the ability to specify an output folder for files
    • Actually handling the exceptions in ErrorResult() :)

    Anyway, enough already. Go play!


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    namespace Resizer
        enum ImageSize
            Default = 120,
            Small = 120,
            Medium = 240,
            Large = 480,
        class Program
            static void Main(string[] args)
                foreach (string Image in args)
                    // string Image = args[0];
                    if (Image == null)
                    int Size = (int)ImageSize.Default;
                    //if (args.Length > 1)
                    //    string sSize = args[1];
                    //    if (sSize != null)
                    //        Size = Int32.Parse(sSize);
                    string Path = Image;
                    Bitmap bmp = CreateThumbnail(Path, Size, Size);
                    if (bmp == null)
                    string OutputFilename = null;
                    FileInfo OutputFile = new FileInfo(Path);
                    OutputFilename = OutputFile.DirectoryName + "\\" + OutputFile.Name.Remove(OutputFile.Name.Length - (OutputFile.Extension.Length)) + "[" + Size.ToString().Trim() + "]" + OutputFile.Extension;
                    if (OutputFilename != null)
                        catch (Exception ex)
            private static void ErrorResult()
                //throw new Exception("The method or operation is not implemented.");
            /// Creates a resized bitmap from an existing image on disk.
            /// Call Dispose on the returned Bitmap object
            /// Taken from Rick Strahl's code at 
            /// Bitmap or null
            public static Bitmap CreateThumbnail(string lcFilename, int lnWidth, int lnHeight)
                Bitmap bmpOut = null;
                    Bitmap loBMP = new Bitmap(lcFilename);
                    ImageFormat loFormat = loBMP.RawFormat;
                    decimal lnRatio;
                    int lnNewWidth = 0;
                    int lnNewHeight = 0;
                    //*** If the image is smaller than a thumbnail just return it
                    if (loBMP.Width < lnWidth && loBMP.Height < lnHeight)
                        return loBMP;
                    if (loBMP.Width > loBMP.Height)
                        lnRatio = (decimal)lnWidth / loBMP.Width;
                        lnNewWidth = lnWidth;
                        decimal lnTemp = loBMP.Height * lnRatio;
                        lnNewHeight = (int)lnTemp;
                        lnRatio = (decimal)lnHeight / loBMP.Height;
                        lnNewHeight = lnHeight;
                        decimal lnTemp = loBMP.Width * lnRatio;
                        lnNewWidth = (int)lnTemp;
                    // System.Drawing.Image imgOut = 
                    //      loBMP.GetThumbnailImage(lnNewWidth,lnNewHeight,
                    //                              null,IntPtr.Zero);
                    // *** This code creates cleaner (though bigger) thumbnails and properly
                    // *** and handles GIF files better by generating a white background for
                    // *** transparent images (as opposed to black)
                    bmpOut = new Bitmap(lnNewWidth, lnNewHeight);
                    Graphics g = Graphics.FromImage(bmpOut);
                    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                    g.FillRectangle(Brushes.White, 0, 0, lnNewWidth, lnNewHeight);
                    g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight);
                    return null;
                return bmpOut;
  • Andrew Coates ::: MSFT

    Wow, Now I'm MCPD!


    Call me unusual, but I like doing the MS Certification exams. First, some history.

    MCP LogoMy first exam was way back in 1999, when I participated in the beta program for the (then) new Visual FoxPro exams, 70-155 (Designing and Implementing Distributed Applications with Microsoft® Visual FoxPro® 6.0) and 70-156 (Designing and Implementing Desktop Applications with Microsoft® Visual FoxPro® 6.0). These were awarded when the beta program for those exams finished on 09 Feb 2000. All of a sudden I was an MCP.

    MCSD LogoI was hooked. Soon afterwards I followed up with the compulsory 70-100 (Analyzing Requirements and Defining Solution Architectures) and the optional 70-029 (Designing and Implementing Databases with Microsoft® SQL Server 7.0) exams and by April 12 that year I was an MCSD (although not MCSD.NET - this was in the Win32 timeframe).

    I haven't hyperlinked any of the exams above, because they've since been retired and are no longer listed on the MCP exam site. Some time passed after this as I hadn't moved to .NET (I was still working a lot with VFP), and there were no new exams that seemed relevant.

    That changed in 2004 when I accepted this role at MS, and in August 2005 I passed my first .NET exam: 70-305 (Developing and Implementing Web Applications with Microsoft® Visual Basic® .NET and Microsoft® Visual Studio® .NET). I sat the exam at our internal technical conference, TechReady and I found that sitting exams at a conference made a lot of sense. It was time that was already out of band for me, I was half-way across the world, immersed in the technology and I wasn't likely to get distracted by the day-to-day events that seem to sap your time for doing "optional" things.

    The next year (2006) at TechReady, I really went for it. I sat and passed 4 exams in a week (in chronological order) - 70-431 (TS: Microsoft® SQL Server™ 2005 - Implementation and Maintenance), the foundation 70-536 (TS: Microsoft® .NET Framework 2.0 - Application Development Foundation), 70-528 (TS: Microsoft® .NET Framework 2.0 - Web-based Client Development) and 70-526 (TS: Microsoft® .NET Framework 2.0 - Windows®-based Client Development). This gave me a new certification in the new generation of certifications. I was now a MCTS three times over (2 in .NET and one in SQL 2005).

    This year I took the same approach. I sat and passed another 4 exams in a week: one TS; 70-529 (TS: Microsoft® .NET Framework 2.0 - Distributed Application Development) and three PRO; 70-547 (PRO: Designing and Developing Web-based Applications by Using the Microsoft® .NET Framework), 70-548 (PRO: Designing and Developing Windows®-based Applications by Using the Microsoft® .NET Framework) and 70-549 (PRO: Designing and Developing Enterprise Applications by Using the Microsoft® .NET Framework). This gave me an additional MCTS (.Net Framework 2.0: Distributed Applications) and also certified me as a MCPD three times over (Web Developer, Windows Developer and Enterprise Application Developer)

    My impression of the certification program and the exams is very positive. Each time I study for and sit an exam I feel that I learn more and more about the breadth and capability of the product or technology I'm studying. Being forced to explore all of the parts means that I discover areas I may never have come across day-to-day, but that prove useful as I go about my job. It also helps me build an overall picture of (in this case) the framework and how its parts fit together. Finally, it gives me a tangible set of achievements to which I can point my manager (or a potential employer). Having passed these exams demonstrates a base level of knowledge and at least some interest in furthering my understanding of the tools I'm using. Note that I'm not saying that this is the only way to further one's understanding, indeed it's not the only way I use, but it is something that is easily demonstrated. I only need to point interested parties at the Transcript Sharing Page and tell them to use TranscriptID 735419 and Access Code AndrewCoates.

    If you've got to the end of this rather long post and you want more information about Microsoft Certifications, there's the official site, but you can do a lot worse than to subscribe to Trika Harms zum Spreckel's entertaining blog (although, if you get a chance to meet Trika in person as I just have at TechEd, you won't be at all surprised that her blog is so entertaining). Local MVP and certification junkie Rob Farley also often posts great information.

  • Andrew Coates ::: MSFT

    New Machine Checklist


    I'm doing a (long overdue) rebuild of my Toshiba M200 to get rid of any Beta1/Beta2/CTP/RC gremlins.

    Here's the process I use, as well as the checklist of things to install (in no particular order)

    0. Backup the data that live on my HDD and are not replicated elsewhere. I use folder redirection for my My Documents folder, so all that lives on a server somewhere that's backed up, volume shadow copied and generally made available offline. I use the Files and Settings Transfer Wizard and also do an xCopy of my working folders to an external HD

    1. Install the base OS from the media or the network (in this case it's from my VISTA CD burnt from the internal share)

    2. Install Patches, SPs and Hotfixes (Microsoft Update is your friend)

    3. Install Anti-virus

    4. Join the Domain

    5. Install all the Apps

    Application Installed From
    Wireless Certs Internal Share
    ISA 2004 Client Internal Share
    Office 2003 Internal Share
    Office 2003 SP MSDN DVD
    Office Hot Fixes Office Update
    Plus! Super Pack Internal Share
    VFP 9.0 MSDN DVD/Internal Share
    Acrobat Reader
    VS2005 (Team Suite) MSDN DVD/Internal Share
    SQL2005 (Developer Edition) MSDN DVD/Internal Share
    HeadTrax Internal Share
    Windows Mobile 5.0 SDK for Pocket PC
    Windows Mobile 5.0 SDK for Smartphone
    MS Smart Card Utilities Internal Share
    Tablet PC Platform SDK
    Virtual PC 2004 SP1 Internal Share
    Virtual Server 2005 Internal Share
    RichCopy Internal Share
    MS Anti Spyware
    E-Learning Offline Player
    MSN 7.5
    Refactor! DevX
    iBurst Drivers CD
    Experience Pack for Tablet PC
    Streets and Trips 2006 Internal Share
    MS Timezone
    Voice Command Internal Share
    Nero CD
    Power Toys for Tablet
    Power Toys for XP
    SOTI Internal Share
    WinZip Internal Share
    ActiveSync 4.0
    Mobile Developer Power Toys
    MapPoint WebService SDK
    Pocket PC Powertoys
    MSN Toolbar
  • Andrew Coates ::: MSFT

    Training and More


    I've just spent 4 days of last week on Readify's excellent Industrial Strength .NET Course, lead by the incomporable Mitch Denny. Things really started to hot up on the last day when we discussed the merits of natural vs artificial primary keys in tables (try as we might, we couldn't get Mitch to see the light <g>). Mitch also proposed the ditching entirely of SQL to be replace with an object-oriented construct something like:

    objectDataSet Customers = new objectDataSet("select * from Customers");
    objectDataSet ImportedCustomers = new objectDataSet("Select * from ImportTable");
    objectDataSet MissingCustomers = ImportedCustomers - Customers;

    An interesting overloading concept, but it leaves a lot of questions unanswered.

  • Andrew Coates ::: MSFT

    MapPoint Web Service COM wrapper and VFP Sample


    I've been talking about this for a while, and I've finally uploaded a COM wrapper around the MapPoint Web Service and a sample VFP form that shows the Find and Render services. You can grab them both from Darren's most excellent ProjectDistributor site.

    To use them, you'll need a MapPoint WS eval account, or, if you're an MSDN subscriber Sign up for a MapPoint Web Service Developer Account. If you want to explore the SDK, you can get it here.

  • Page 4 of 48 (472 items) «23456»