# Thursday, April 20, 2006

I just spent a TON of time fighting an XSLT stylesheet. This is a long established system that needed a tiny change -- the customer wanted the little R-in-a-circle symbol after one of their trademarks. No problem, right? Go on into the XSLT and put ® in the appropriate place. Not an entity known to XSLT. Right, I remember that. But heh heh you can't stop me: ® should do it. Test in XML Spy and there's the symbol. Generate and upload all the pages and -- yikes! -- everything says ? where it should say ®! I don't think my clients want the header on every web page to say REALTOR? -- a little certainty is wanted here. That's because XSLT is putting the actual symbol into the HTML -- if you do a View Source on the web page there's no entity, there's the actual symbol and some browsers can show it and some can't. OK, let's try ® or ® -- they come out looking just like that on the screen. Bleah. More Googling. Suggestions to define DOCTYPES and ENTITYs that all manage to stick the symbol into the HTML but not the entity. A brief attempt at some circular definitions of reg to reg, some desparate CDATA flailing -- and then we got it:

Literal text in the middle of the XSL stylesheet:

REALTOR<xsl:text disable-output-escaping="yes">&amp;</xsl:text>reg;

We have a winner. I get &reg; in the HTML and my client gets their trademark.

Kate

Thursday, April 20, 2006 6:51:50 PM (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, March 23, 2006

It looks like I never added an entry about speaking at Devteach. I just made my travel plans to get there. I love taking the train to Montreal -- I'll end up within walking distance of the conference hotel, save time compared to flying, and travel in comfort the whole way.

Devteach is a delightful conference with a friendly atmosphere. I count 8 RDs among the speakers list, plus a whole pile of MVPs, Julie, and some of my favourite Microsoft people... DEs mostly. There is one track in French and the rest of the talks (about a hundred) are all in English.

My talks are:

  • Moving C++ applications to the CLR
  • The Future is Concurrent

There's plenty for everyone: web, smart client, data, security, patterns and practices, testing, Team Systems, architecture -- if it's a development topic, someone is speaking on it. On top of that the conference hosts the Canadian User Group Leader Summit (and gives user group members a discount on attendance - contact your user group leader for a code) and the Canadian Regional Director Summit. It's a great place to meet the stars of the Canadian developer community, and a number of folks from the American northeast who love to come up to Montreal. See you there!

Kate

Thursday, March 23, 2006 7:25:00 AM (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, March 22, 2006

Microsoft Canada is holding a five-city Web Development and Security tour with the theme of "real development". I'll be speaking in Toronto and Montreal along with Developer Evangelists Jerome Carron, Dan Sellers, and John Bristowe, and fellow Canadian Regional Directors Scott Howlett and Richard Campbell. To quote the blurb:

realDEVELOPMENT_06 is your opportunity to see the very latest technologies, trends, and techniques in web development. The day will be divided into two halves.

In the morning, the WEB PLATFORM SESSIONS will give you the chance to explore Web development technologies such as AJAX, RSS, Javascript and Gadgets.

In the afternoon, our SECURITY ON THE BRAIN SESSIONS will focus on how to address common security issues, and help build more secure Web applications though enhanced development techniques.

It's an all day (9-5) event:

  • Ottawa, May 30th
  • Toronto, June 1st
  • Montreal, June 6th
  • Vancouver, June 8th
  • Calgary, June 13th

      As well, RDs and MVPs will be on hand for ask the experts / cabana / mashups -- you know, people milling around asking questions and having conversations -- often the best part of these events!

      Register while you still can!

      Kate

    • Wednesday, March 22, 2006 10:48:25 AM (Eastern Standard Time, UTC-05:00)  #    
      # Tuesday, March 21, 2006

      Once again I am honoured to be speaking at Tech Ed USA. Details to follow -- it will be a C++ topic. See you all there!

      Kate

      Tuesday, March 21, 2006 6:55:38 AM (Eastern Standard Time, UTC-05:00)  #    
      # Wednesday, March 15, 2006

      No, not for 2005 :-) Some quotes from the announcement:

      Visual Studio .NET 2003 shipped in July of 2003. This upcoming Service Pack will serve to roll up selected fixes that were issued after that release and before Whidbey. We have also included some triaged critical fixes and fixes included in VS .NET 2002 SP1. We anticipate that Customers will gain additional environment stability through the inclusion of these roll ups and the select set of critical fixes. We hope that VS 2002 customers may see this Service Pack as an additional stabilizing factor and proceed with plans migrating to the VS 2003.

      ...

      Release Schedule: (these are estimated dates)
      Beta Release 3/24/2006
      RTM 6/1/2006
      We encourage all interested parties to sign up to participate in the Beta. You will have the opportunity to use our pre-release product and notify us of any bugs you may discover. You may apply for the Beta by going to http://connect.microsoft.com and signing up under "Available Programs".

      ...

      Visual Studio .NET 2003 SP1 will provide the following fixes:

      1. Hotfix and other critical update roll up
      2. Released security patches/issues and other identified security fixes that satisfy triage criteria.
      3. The top 50% Watson issues across the entire product.
      4. Customer driven bugs
      Bugs will come from 2 sources, Watson data analyzed by the product teams and PSS.

      Don't you love that sentence from the first paragraph? "We hope that VS 2002 customers may see this Service Pack as an additional stabilizing factor and proceed with plans migrating to the VS 2003." That's no typo. Enterprise clients are really slow to move to the new bits. Just last week in a customer meeting at an enterprise client of mine, I asked if a new Windows app was to be built with VS 2003 or 2005. Without a moment's hesitation my contact replied "there's no service pack for 2005 yet, we won't even consider using it." [I didn't dare tell him there wasn't a service pack for 2003 at that time :-) luckily we are now covered if he asks about it.]

      Kate

      Wednesday, March 15, 2006 3:55:06 PM (Eastern Standard Time, UTC-05:00)  #    
      # Thursday, March 09, 2006

      Anyone who thinks that C++ is a forgotten language at Microsoft that has been put into the corner and ignored needs a quick reality check. And if you've always wanted to work at Microsoft, or if you're looking for work where you can use C++ every day, how does this sound:

      Want to build the next generation of C++ development tools? The Visual C++ team has multiple openings working on the libraries. You will have an opportunity to work with environments, components and tools that are used in complex projects like Windows Vista which has about 50 million lines of C++ code. If you are willing to take up the challenge of delivering high performance, scalable, and most usable set of features to the most sophisticated and demanding developers in our  community and have a passion for handling new technologies that is in Microsoft's horizon, then please send in your resume. We're looking for senior individual contributors ready to code, design and provide the next generation of code reuse leadership at Microsoft. Candidates are required to possess a bachelors or masters degree in computer science, and five years relevant experience.

      If you are someone who's ready to design code that will be used and critiqued by the whole developer community; ready to have a direct connection to customers whose problems you understand then the Visual C++ Libraries team is the place for you. We are building new libraries that drive developer productivity and power on the native and managed  platforms. Next version we'll bring our MFC and ATL libraries up to date to work with the new Win32 APIs of the Vista Wave. And we'll help our customers work with WinFX and move forward their existing code. We own the full set of C++ Libraries -- C Runtime Library, Standard C++ Library, MFC and ATL. In future we'll also address challenges like parallel programming, and migration of existing native applications to managed code. If you have prior experience of large scale ISV development with MFC or ATL, we'd be especially keen to hear from you.

      Just as was the case about seven months ago when I blogged a hiring opportunity, you need to email Martyn Lovell for this. I figure most folks who qualify for the job can find his email address, but here's a hint: you could always email me and ask for it :-)

      Kate

      Thursday, March 09, 2006 9:46:24 AM (Eastern Standard Time, UTC-05:00)  #    
      # Wednesday, March 08, 2006

      It's all about the presentation layer for the next few months at East of Toronto .NET User Group:

      • March 23rd, Justin Lee will demonstrate Atlas, tools to let you do AJAX-y things without hand-coding a TON of script yourself. "ASP.NET “Atlas” is a package of new Web development technologies that integrates an extensive set of client script libraries with the rich, server-based development platform of ASP.NET 2.0. “Atlas” enables you to develop Web applications that can update data on a Web page by making direct calls to a Web server — without needing to round trip the page. With “Atlas”, you can take advantage of the best of ASP.NET and server-side code while doing much of the work in the browser, enabling a richer user experience. This presentation will showcase what Atlas will bring to you, and how Atlas can change the way you develop web applications." Register so we get enough pizza.
      • April 5th, we move our regular meeting date to accomodate a mini-Canadian tour by Rod Paddock of CODE magazine. Rod will be talking about Windows Presentation Foundation, formerly known by the much friendlier code name Avalon. "This introductory session will demonstrate how to use Windows Presentation Foundation (WPF) to build line of business applications. The session will begin with a tutorial on WPF basics. How to build a basic WPF application, basic XAML constructs, WPF controls, responding to events, etc. The session will then move into the realm of data binding and using controls to best represent line of business style applications (data entry with one to many capabilities).  Developers will leave this session with a basic understanding of how to build WPF applications." Again, we really need you to register.

      Chris has some great prizes to hand out at these meetings, but more importantly come out to learn and to meet other developers who live, you know, East of Toronto. Both meetings are at the Whitby Public Library so they're easy to get to after work.

      Kate

      Wednesday, March 08, 2006 7:35:53 AM (Eastern Standard Time, UTC-05:00)  #    
      # Wednesday, March 01, 2006

      You really want to download and read http://www.gotw.ca/publications/C++CLIRationale.pdf. It's 54 pages (just under 2 MB) of WHY the C++/CLI product is the way it is. Why isn't it a library? (Because the compiler really needs to be in on what you're doing to hook in the runtime support properly.) Why doesn't it use underscores? (Because programmers hated them.) You don't have to be a compiler-writer to follow the rationales laid out here. It provides some interesting insight into the way the standards process works and the way that decisions get made by a team or by one person who is strongly committed to "doing it right this time." However this is no dry committee report or academic paper: you will find the word "I" throughout the paper, along with anecdotes about conversations, code written out quickly to help guide a decision, and other vignettes that make this must reading for all we C++ people.

      Some quotes (words outside "" or in [] are mine, not Herb's):

      • "Many C++ programmers tried hard to use [Managed Extensions], and most failed."
      • Mapping destructors to dispose bidirectionally (probably my favourite C++/CLI feature) was "nontrivial, and required C++/CLI to influence CLI to modify and regularize its pattern)."
      • "There comes a point where you have to admit that you’re trying too hard." (On having a class that inherits from System::Object magically be a ref class without having to use the keyword, an idea that wouldn't have been good anyway since it would have ruled out mixed types.) 
      • "Having private as a default matters so much that Stroustrup correctly felt it was worth the high cost of taking a new keyword just to have a category of user-defined types where the default was private." (In a section drawing parallels between some C++/CLI decisions and the decades-old decision to add class to a language that already had struct.)
      • "...in the C++/CLI design effort, some people tried hard to leave open the possibility of allocating C++ objects physically on the CLI heap; that is impossible in general, and trying to persist in this led to confusions in the type system that have now been avoided and removed." (Ouch!)
      • "As for whether this set of extensions amounts to a different superset language, a compatible dialect, and/or a binding: I think you can find reasonable people who view it any of those ways. Whichever noun you prefer, it is the most compatible set of extensions I know of to any programming language, standard or otherwise, including for nearly all macro cases — which are notoriously next to impossible to support in a compatible way. Achieving that required putting requirements in C++/CLI that placed a greater burden on compiler writers in favor of preserving strong ISO C++ compatibility and avoiding conflict with C++0x evolution, and improving programmer usability so that programmers would use the feature instead of switch to another language (unlike with the Managed Extensions). These choices reflect the designers’ great respect for ISO C++."

      The paper closes with an FAQ that includes questions I can only describe as rude. I am guessing that Herb has been patiently answering these in email and at meetings for many years now.

      If you still aren't really clear on WHAT the C++/CLI version of C++ is, what happened to the underscores, or how C++ can be the best .NET language of all (offering features C# and VB just cannot offer) then this paper might not be the place to start, since it's not a syntax review or a tutorial. But then again, maybe understanding the WHY will motivate you to go and learn the WHAT.  And if you want more WHY, the paper is liberally sprinkled with links to blog entries by Herb and Brandon (mostly in 2003) with even more details.

      Go! Read it, now!

      Kate

      Wednesday, March 01, 2006 9:35:12 AM (Eastern Standard Time, UTC-05:00)  #