# Wednesday, May 24, 2006

While helping a client with the mechanics of localization recently, I came across a very thoughtful blog entry. It goes beyond what properties you set on a form or what method you call to look up a resource, and instead talks about some of the project management aspects of localization. If you have any chance that you'll need alternate language support, you should read this post. He talks to timing (too soon and translators will translate buttons that later go away or have a name change, but don't wait too long because it's hard to estimate how long translating and testing will take), QA, reuse, and context. Excellent things to consider before you start building those satellite assemblies.


Wednesday, May 24, 2006 10:54:06 AM (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, May 23, 2006

If you don't subscribe to the Flash, you really should. It's an email notification about upcoming events, training, webcasts, case studies, and other information sources. You can personalize it so you only get information you care about, and you'll always be "in the loop" about upcoming opportunities.

Right now, they're running a pair of contests around the Flash:

  • New subscribers to MSDN Flash who sign up before June 28 2006 are entered into a draw for a $16,800 desktop prize package.

  • Existing subscribers (like me) who personalize their subscription before June 28, 2006 could win a $5,000 Microsoft Training Package.

Not bad, eh? Just the other day someone asked me "how do you find all these webcasts and things?" The Flash is how.



Tuesday, May 23, 2006 10:22:57 AM (Eastern Daylight Time, UTC-04:00)  #    
# Monday, May 22, 2006

My parents both originally trained as physicists (one is now a high voltage researcher and inventor of amazingly compact power supplies, the other an world expert in software QA) and so I grew up learning and knowing things most people didn't. I was often surprised that people hadn't heard of certain scientists or their work.

I knew all the experiments on this list, and they are all beautiful and simple (the mathematician still lurking in me always gives points for elegance) and if you are at least a little familiar with them, you will "get" how our world works a little better. Physicis is cool after all: I can say this despite my father's characterization of chemistry and chemical engineering (my degrees are in chemical engineering) as "Stir well" and "Pump well" respectively. Some of them go back hundreds of years (one is thousands of years ago,) and each is illustrated with a little animated gif that really does help you to understand them.

Take a look!


Monday, May 22, 2006 7:31:10 AM (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, May 21, 2006

As most of my readers know, there are three kinds of managed-to-native interop available to the C++/CLI programmer using Visual Studio 2005, as there were to the Managed C++ programmer using Visual Studio 2002 or 2003. Those are COM Interop, P/Invoke, and C++ Interop (formerly and more colourfully known as It Just Works Interop.) COM Interop is slow, but if you have a COM component already written, maybe in VB 5 or something, it's just the ticket. P/Invoke is good for C-style DLLs, and popular with people who want to call into the Windows API. C++ Interop is the easiest (say it with me: include the header, link to the lib) and fastest, and it's available only from C++.

So why would a C++ dev, who can just include-the-header-link-to-the-lib, ever use P/Invoke? Because it handles marshalling and translation for you. Take a look at this (reasonably old) post by Kenny Kerr. He includes this function in the post:

[DllImport("Native.dll", PreserveSig=false, CharSet=CharSet::Unicode)]
bool BrowseForComputers(IntPtr parentWindow,
                        bool multiSelect,
                        [MarshalAs(UnmanagedType::SafeArray, SafeArraySubType=VarEnum::VT_VARIANT)]
                        array<String^>^% computers);

That would be pretty grody work without P/Invoke. Let the feature help you where it can.


Sunday, May 21, 2006 7:22:49 AM (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, May 20, 2006

I first saw this idea at http://www.flourish.org/upsidedownmap/:

You can see a whole pile of these "upside down" maps there and learn about some "sideways" ones as well. Of course there's no reason why north has to be at the top all the time (unless you want to use the map to navigate, and even then it's likely you'll rotate the map nine ways to Sunday, the issue is just in which rotation the words are right side up.)

I found a page that sells a variety of maps... I think I want a lot of these ones :-)


Saturday, May 20, 2006 8:30:56 AM (Eastern Daylight Time, UTC-04:00)  #    
# Friday, May 19, 2006

I have a number of talks I do about C++/CLI and Visual C++ 2005. The one thing they have in common is that there's never enough time for all the demos. There's one particular demo that is technically in two different talks, but never gets done... it shows how to put a WinForms control onto an MFC dialog, and how to implement MFC message passing (and the new DELEGATE family of macros, that are like the existing command routing macros) to hook a WinForms into an MFC View, complete with menu updating and implementation.

If you are one of the people in those audiences who was a little disappointed you didn't get to see the MFC stuff, here's a new paper that might help you out a bit: Integrate Windows Forms Into Your MFC Applications Through C++ Interop. It's by Marcus Heege, a new C++ MVP. I just have to like a guy who includes a subheading "C++ Interop Is Your Friend" :-)


Friday, May 19, 2006 8:25:33 AM (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, May 18, 2006

You know, I'm all about the interop. Why port an entire application to something new when you can port part of it and interop to the rest? Why inisist one application be ported so it can talk to another if interop could solve the problem instead? While it may be difficult, it's typically the faster and cheaper option. Plus it's just more fun than re-implementing something that already works.

Microsoft Canada is holding an interop seminar on June 8th (actually one in the morning and one in the afternoon) at their Meadowvale offices. The email I got says:

Microsoft recognizes that most customers have diverse IT environments and Microsoft is building software and technologies that allow you to leverage your existing investments in non-Microsoft-based solutions.

The interoperability seminar is focused on discussing strategies for interoperability with diverse technologies including J2EE, Mainframes, Identity, Monitoring, Messaging and Data storage systems.

In this seminar we will:

  • Discuss organizational processes for architecture, development, quality assurance and deployment that may be instituted to accommodate varying technologies while maximizing reuse;
  • Explain Microsoft’s interoperability strategy, showcase our commitment to interoperability and provide links to resources for more detailed information;
  • Discuss real-life strategies, best practices and examples for interoperability between J2EE and .NET-based software.

I can't be there myself (I'll be out of the country) but you probably should! Register for either the morning or the afternoon session.


Thursday, May 18, 2006 8:15:52 AM (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, May 17, 2006

At the end of next week, May 26th to be precise, we're going to give a free "What is SharePoint" seminar in Peterborough. We'll be focusing on what it can do "out of the box" and demonstrating how much functionality you get for free. So if you know someone who lives northeast of Toronto (or feels like a Friday afternoon headstart to the cottage) please do pass the details along. It's from 2:30 to 4:00, it doesn't cost anything but we would like you to register, and we'd love to see you (or your friend or client) there.

http://www.gregcons.com/seminar2006.htm for details.


ps: no C++, I promise :-)

Wednesday, May 17, 2006 10:54:17 PM (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, May 16, 2006

As you probably know, when you're looking at a document library in Sharepoint, each document name is a link to the document:

If you click the link, the document opens in Word. I do that a lot, or else I right-click the link and Save Target As to put a copy on my own machine. You probably also know that there's a menu hanging off that triangle, and you could edit the document using that menu:

What I didn't realize until today is that these two choices behave differently. Click the link and Word opens the document as Read Only, so that when you click the Save icon in Word or choose File, Save, you get the Save As dialog. You can save it back into the same Sharepoint directory you opened it from, but it's an extra step:

If you use the menu item, it's not read-only and if you save it just saves with no further conversation. Now normally I would NEVER drop down a menu and choose an item from it when I could click a link. But since it turns out there's a difference, I'm going with the menu from now on.


Tuesday, May 16, 2006 4:48:06 PM (Eastern Daylight Time, UTC-04:00)  #    
# Monday, May 15, 2006

Spotted on the Monster Jobs Blog, ten rules for being a happy employee. I think that even though these rules are designed for the benefit and enjoyment of the individual, it would make your employer happy if you followed them. These are a good way to live. My favourite? "You Will Make Mistakes -- It’s How You Handle Them That Matters" . I tell my kids (and staff) something very similar quite often. Anyone can give into temptation, screw up, forget, or make a mistake once in a while. What matters is what you do next. Lying, covering up, blaming, denying, and not learning are the bad things here. A close second: "It Takes More than Talent". The only iffy one? "Keep Business and Romance Separate". But then again, we were already married when we started this business together, so that's not the same as falling for each other at work. I like having all my eggs in one basket. That way I know where they all are :-)


Monday, May 15, 2006 10:51:49 PM (Eastern Daylight Time, UTC-04:00)  #